浏览代码

Fix enable/disable refreshing the whole scene

Clément Espeute 1 年之前
父节点
当前提交
c4daffd568
共有 1 个文件被更改,包括 9 次插入5 次删除
  1. 9 5
      hide/comp/SceneEditor.hx

+ 9 - 5
hide/comp/SceneEditor.hx

@@ -3666,11 +3666,13 @@ class SceneEditor {
 	public function setEnabled(elements : Array<PrefabElement>, enable: Bool) {
 		var old = [for(e in elements) e.enabled];
 		function apply(on) {
+			beginRebuild();
 			for(i in 0...elements.length) {
 				elements[i].enabled = on ? enable : old[i];
 				onPrefabChange(elements[i]);
+				queueRebuild(elements[i]);
 			}
-			refreshScene();
+			endRebuild();
 		}
 		apply(true);
 		undo.change(Custom(function(undo) {
@@ -4146,10 +4148,12 @@ class SceneEditor {
 
 		prefab.editorRemoveInstance();
 
-		prefab.shared.current3d = prefab.parent?.findFirstLocal3d() ?? root3d;
-		prefab.shared.current2d = prefab.parent?.findFirstLocal2d() ?? root2d;
-		prefab.setEditor(this, this.scene);
-		prefab.make();
+		if (prefab.enabled) {
+			prefab.shared.current3d = prefab.parent?.findFirstLocal3d() ?? root3d;
+			prefab.shared.current2d = prefab.parent?.findFirstLocal2d() ?? root2d;
+			prefab.setEditor(this, this.scene);
+			prefab.make();
+		}
 
 		for( p in prefab.flatten() ) {
 			makeInteractive(p);