瀏覽代碼

Enable editor culling for Model and MeshGenerator

trethaller 6 年之前
父節點
當前提交
31831b8aba
共有 2 個文件被更改,包括 10 次插入17 次删除
  1. 5 17
      hrt/prefab/Model.hx
  2. 5 0
      hrt/prefab/l3d/MeshGenerator.hx

+ 5 - 17
hrt/prefab/Model.hx

@@ -23,13 +23,6 @@ class Model extends Object3D {
 		lockAnimation = obj.lockAnimation;
 	}
 
-	function setCullingCollider( o : h3d.scene.Object, cc : h3d.col.Collider ) {
-		return; // TODO: Fix bounds update after object move
-		o.cullingCollider = cc;
-		for( c in @:privateAccess o.children )
-			setCullingCollider(c, cc);
-	}
-
 	override function makeInstance(ctx:Context):Context {
 		if( source == null)
 			return super.makeInstance(ctx);
@@ -42,11 +35,16 @@ class Model extends Object3D {
 				root.addChild(obj);
 				obj = root;
 			}
+			#if editor
+			for(m in obj.findAll(o -> Std.instance(o, h3d.scene.Mesh)))
+				m.cullingCollider = new h3d.col.ObjectCollider(m, m.primitive.getBounds().toSphere());
+			#end
 			obj.name = name;
 			ctx.local3d.addChild(obj);
 			ctx.local3d = obj;
 			updateInstance(ctx);
 
+
 			if( animation != null )
 				obj.playAnimation(ctx.loadAnimation(animation));
 
@@ -61,16 +59,6 @@ class Model extends Object3D {
 		return ctx;
 	}
 
-	var tmpBounds = new h3d.col.Bounds();
-	override function updateInstance( ctx: Context, ?propName : String ) {
-		super.updateInstance(ctx, propName);
-		var o = ctx.local3d;
-		#if editor
-		var cc = o.getBounds(tmpBounds).toSphere();
-		setCullingCollider(o, cc);
-		#end
-	}
-
 	#if editor
 	override function edit( ctx : EditContext ) {
 		super.edit(ctx);

+ 5 - 0
hrt/prefab/l3d/MeshGenerator.hx

@@ -122,6 +122,11 @@ class MeshGenerator extends Object3D {
 		#end
 
 		createMeshPart(ctx, root, ctx.local3d.getObjectByName("rootObject"));
+
+		#if editor
+		for(m in ctx.local3d.findAll(o -> Std.instance(o, h3d.scene.Mesh)))
+			m.cullingCollider = new h3d.col.ObjectCollider(m, m.primitive.getBounds().toSphere());
+		#end
 	}
 
 	public function getSocket( obj : h3d.scene.Object, s : Socket ) : h3d.scene.Object {