Browse Source

[ref] Don't load a fresh copy of the prefab if no override is present

Clément Espeute 3 months ago
parent
commit
cb4c4f127a
1 changed files with 21 additions and 10 deletions
  1. 21 10
      hrt/prefab/Reference.hx

+ 21 - 10
hrt/prefab/Reference.hx

@@ -138,25 +138,36 @@ class Reference extends Object3D {
 		if (refInstance != null)
 		if (refInstance != null)
 			return refInstance;
 			return refInstance;
 
 
-		var refInstanceData = null;
+		var shouldLoadUniqueObject = #if editor true #else overrides != null #end;
+
 		#if editor
 		#if editor
 		try {
 		try {
 		#end
 		#end
-			refInstanceData = @:privateAccess hxd.res.Loader.currentInstance.load(source).toPrefab().loadData();
+			if (shouldLoadUniqueObject) {
+				var refInstanceData = @:privateAccess hxd.res.Loader.currentInstance.load(source).toPrefab().loadData();
+
+				#if editor
+				originalSource = @:privateAccess hxd.res.Loader.currentInstance.load(source).toPrefab().loadData();
+				#end
+
+				if (overrides != null) {
+					refInstanceData = hrt.prefab.Diff.apply(refInstanceData, overrides);
+				}
+
+				refInstance = hrt.prefab.Prefab.createFromDynamic(refInstanceData, null, new ContextShared(source, null, null, true));
+
+			} else {
+				refInstance = hxd.res.Loader.currentInstance.load(source).toPrefab().load();
+			}
+
+			refInstance.shared.parentPrefab = this;
+
 		#if editor
 		#if editor
-			originalSource = @:privateAccess hxd.res.Loader.currentInstance.load(source).toPrefab().loadData();
 		} catch (e) {
 		} catch (e) {
 			return null;
 			return null;
 		}
 		}
 		#end
 		#end
 
 
-		if (overrides != null) {
-			refInstanceData = hrt.prefab.Diff.apply(refInstanceData, overrides);
-		}
-
-		refInstance = hrt.prefab.Prefab.createFromDynamic(refInstanceData, null, new ContextShared(source, null, null, true));
-		refInstance.shared.parentPrefab = this;
-
 		return refInstance;
 		return refInstance;
 	}
 	}