Browse Source

[ref] Fix drag&dropping references that contained references

Clément Espeute 6 months ago
parent
commit
826ade8f40
1 changed files with 10 additions and 1 deletions
  1. 10 1
      hrt/prefab/Reference.hx

+ 10 - 1
hrt/prefab/Reference.hx

@@ -5,6 +5,10 @@ class Reference extends Object3D {
 
 
 	public var refInstance : Prefab;
 	public var refInstance : Prefab;
 
 
+	#if editor
+	var wasMade : Bool = false;
+	#end
+
 	public static function copy_overrides(from:Dynamic) : haxe.ds.StringMap<Dynamic> {
 	public static function copy_overrides(from:Dynamic) : haxe.ds.StringMap<Dynamic> {
 		if (Std.isOfType(from, haxe.ds.StringMap)) {
 		if (Std.isOfType(from, haxe.ds.StringMap)) {
 			return from != null ? cast(from, haxe.ds.StringMap<Dynamic>).copy() : new haxe.ds.StringMap<Dynamic>();
 			return from != null ? cast(from, haxe.ds.StringMap<Dynamic>).copy() : new haxe.ds.StringMap<Dynamic>();
@@ -107,6 +111,10 @@ class Reference extends Object3D {
 		else {
 		else {
 			refInstance.make();
 			refInstance.make();
 		}
 		}
+
+		#if editor
+		wasMade = true;
+		#end
 	}
 	}
 
 
 
 
@@ -147,12 +155,13 @@ class Reference extends Object3D {
 	#if editor
 	#if editor
 
 
 	override public function editorRemoveObjects() : Void {
 	override public function editorRemoveObjects() : Void {
-		if (refInstance != null) {
+		if (refInstance != null && wasMade) {
 			for (child in refInstance.flatten()) {
 			for (child in refInstance.flatten()) {
 				shared.editor.removeInteractive(child);
 				shared.editor.removeInteractive(child);
 			}
 			}
 			refInstance.editorRemoveObjects();
 			refInstance.editorRemoveObjects();
 		}
 		}
+		wasMade = false;
 		super.editorRemoveObjects();
 		super.editorRemoveObjects();
 	}
 	}