Browse Source

fix getCollider()

ncannasse 7 năm trước cách đây
mục cha
commit
4b7209cfa4
3 tập tin đã thay đổi với 9 bổ sung2 xóa
  1. 1 1
      h3d/scene/Mesh.hx
  2. 7 0
      h3d/scene/Object.hx
  3. 1 1
      h3d/scene/Skin.hx

+ 1 - 1
h3d/scene/Mesh.hx

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

+ 7 - 0
h3d/scene/Object.hx

@@ -408,6 +408,9 @@ class Object implements hxd.impl.Serializable {
 		if( ignoreCollide )
 			return null;
 		var colliders = [];
+		var col = getColliderInner();
+		if( col != null )
+			colliders.push(col);
 		for( obj in children ) {
 			var c = obj.getCollider();
 			if( c == null ) continue;
@@ -425,6 +428,10 @@ class Object implements hxd.impl.Serializable {
 		return new h3d.col.Collider.GroupCollider(colliders);
 	}
 
+	function getColliderInner() : h3d.col.Collider {
+		return null;
+	}
+
 	/**
 		Same as parent.removeChild(this), but does nothing if parent is null.
 		In order to capture add/removal from scene, you can override onAdd/onRemove/onParentChanged

+ 1 - 1
h3d/scene/Skin.hx

@@ -129,7 +129,7 @@ class Skin extends MultiMaterial {
 		return null;
 	}
 
-	override function getCollider() {
+	override function getColliderInner() {
 		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));