Pārlūkot izejas kodu

fixed colliders

ncannasse 7 gadi atpakaļ
vecāks
revīzija
9031ab682c
3 mainītis faili ar 18 papildinājumiem un 6 dzēšanām
  1. 2 2
      h3d/scene/Mesh.hx
  2. 15 3
      h3d/scene/Object.hx
  3. 1 1
      h3d/scene/Skin.hx

+ 2 - 2
h3d/scene/Mesh.hx

@@ -34,8 +34,8 @@ class Mesh extends Object {
 		return m;
 	}
 
-	override function getColliderInner() : h3d.col.Collider {
-		return new h3d.col.ObjectCollider(this, primitive.getCollider());
+	override function getLocalCollider() : h3d.col.Collider {
+		return primitive.getCollider();
 	}
 
 	override function draw( ctx : RenderContext ) {

+ 15 - 3
h3d/scene/Object.hx

@@ -404,11 +404,15 @@ class Object implements hxd.impl.Serializable {
 		throw this + " is not a Mesh";
 	}
 
-	public function getCollider() : h3d.col.Collider {
+	/**
+		Build and returns the global absolute recursive collider for the object.
+		Returns null if no collider was found or if ignoreCollide was set to true.
+	**/
+	@:final public function getCollider() : h3d.col.Collider {
 		if( ignoreCollide )
 			return null;
 		var colliders = [];
-		var col = getColliderInner();
+		var col = getGlobalCollider();
 		if( col != null )
 			colliders.push(col);
 		for( obj in children ) {
@@ -428,7 +432,15 @@ class Object implements hxd.impl.Serializable {
 		return new h3d.col.Collider.GroupCollider(colliders);
 	}
 
-	function getColliderInner() : h3d.col.Collider {
+	function getGlobalCollider() : h3d.col.Collider {
+		return new h3d.col.ObjectCollider(this, getLocalCollider());
+	}
+
+	/**
+		Build and returns the local relative not-recursive collider for the object, or null if this object does not have a collider.
+		Does not check for ignoreCollide.
+	**/
+	public function getLocalCollider() : h3d.col.Collider {
 		return null;
 	}
 

+ 1 - 1
h3d/scene/Skin.hx

@@ -129,7 +129,7 @@ class Skin extends MultiMaterial {
 		return null;
 	}
 
-	override function getColliderInner() {
+	override function getGlobalCollider() {
 		var col = cast(primitive.getCollider(), h3d.col.Collider.OptimizedCollider);
 		cast(primitive, h3d.prim.HMDModel).loadSkin(skinData);
 		return new h3d.col.SkinCollider(this, cast(col.b, h3d.col.PolygonBuffer));