Browse Source

Fixed prefab2 to work as library

mdoison 1 year ago
parent
commit
889c3284d2
4 changed files with 45 additions and 42 deletions
  1. 27 27
      hide/comp/cdb/DataFiles.hx
  2. 4 4
      hrt/prefab/Object2D.hx
  3. 13 11
      hrt/prefab/Prefab.hx
  4. 1 0
      hrt/prefab/Unknown.hx

+ 27 - 27
hide/comp/cdb/DataFiles.hx

@@ -60,10 +60,10 @@ class DataFiles {
 	}
 	}
 	#else
 	#else
 	static function loadPrefab(file:String) {
 	static function loadPrefab(file:String) {
-		var l = hrt.prefab.Prefab.create(file.split(".").pop().toLowerCase());
 		var path = getPath(file);
 		var path = getPath(file);
-		l.loadData(haxe.Json.parse(sys.io.File.getContent(path)));
-		return l;
+		var content = sys.io.File.getContent(path);
+		var parsed = haxe.Json.parse(content);
+		return hrt.prefab.Prefab.createFromDynamic(parsed);
 	}
 	}
 	#end
 	#end
 
 
@@ -209,6 +209,30 @@ class DataFiles {
 		for( r in root.subs )
 		for( r in root.subs )
 			browseRec(r, 0);
 			browseRec(r, 0);
 	}
 	}
+	
+	public static function getPrefabsByPath(prefab: hrt.prefab.Prefab, path : String ) : Array<hrt.prefab.Prefab> {
+		function rec(prefab: hrt.prefab.Prefab, parts : Array<String>, index : Int, out : Array<hrt.prefab.Prefab> ) {
+			var name = parts[index++];
+			if( name == null ) {
+				out.push(prefab);
+				return;
+			}
+			var r = name.indexOf('*') < 0 ? null : new EReg("^"+name.split("*").join(".*")+"$","");
+			for( c in prefab.children ) {
+				var cname = c.name;
+				if( cname == null ) cname = c.getDefaultEditorName();
+				if( r == null ? c.name == name : r.match(cname) )
+					rec(c, parts, index, out);
+			}
+		}
+
+		var out = [];
+		if( path == "" )
+			out.push(prefab);
+		else
+			rec(prefab,path.split("."), 0, out);
+		return out;
+	}
 
 
 	#if (editor || cdb_datafiles)
 	#if (editor || cdb_datafiles)
 
 
@@ -265,30 +289,6 @@ class DataFiles {
 		return obj;
 		return obj;
 	}
 	}
 
 
-	static function getPrefabsByPath(prefab: hrt.prefab.Prefab, path : String ) : Array<hrt.prefab.Prefab> {
-		function rec(prefab: hrt.prefab.Prefab, parts : Array<String>, index : Int, out : Array<hrt.prefab.Prefab> ) {
-			var name = parts[index++];
-			if( name == null ) {
-				out.push(prefab);
-				return;
-			}
-			var r = name.indexOf('*') < 0 ? null : new EReg("^"+name.split("*").join(".*")+"$","");
-			for( c in prefab.children ) {
-				var cname = c.name;
-				if( cname == null ) cname = c.getDefaultEditorName();
-				if( r == null ? c.name == name : r.match(cname) )
-					rec(c, parts, index, out);
-			}
-		}
-
-		var out = [];
-		if( path == "" )
-			out.push(prefab);
-		else
-			rec(prefab,path.split("."), 0, out);
-		return out;
-	}
-
 	public static function save( ?onSaveBase, ?force, ?prevSheetNames : Map<String,String> ) {
 	public static function save( ?onSaveBase, ?force, ?prevSheetNames : Map<String,String> ) {
 		var ide = Ide.inst;
 		var ide = Ide.inst;
 		var temp = [];
 		var temp = [];

+ 4 - 4
hrt/prefab/Object2D.hx

@@ -94,6 +94,10 @@ class Object2D extends Prefab {
 			if (blendMode != null) o.blendMode = blendMode;
 			if (blendMode != null) o.blendMode = blendMode;
 	}
 	}
 
 
+	override function getDefaultEditorName() {
+		return type == "object2D" ? "group2D" : super.getDefaultEditorName();
+	}
+
 	#if editor
 	#if editor
 	override function getHideProps() : hide.prefab.HideProps {
 	override function getHideProps() : hide.prefab.HideProps {
 		// Check children
 		// Check children
@@ -125,10 +129,6 @@ class Object2D extends Prefab {
 		});
 		});
 	}
 	}
 
 
-	override function getDefaultEditorName() {
-		return type == "object2D" ? "group2D" : super.getDefaultEditorName();
-	}
-
 	#end
 	#end
 
 
 	static var _ = Prefab.register("object2D", Object2D);
 	static var _ = Prefab.register("object2D", Object2D);

+ 13 - 11
hrt/prefab/Prefab.hx

@@ -527,6 +527,19 @@ class Prefab {
 		return false;
 		return false;
 	}
 	}
 
 
+	/**
+		Returns the default display name for this prefab
+		Required outside of -D editor for the usage of hide as library
+	**/
+	public function getDefaultEditorName() : String {
+		if(source != null) {
+			var f = new haxe.io.Path(source).file;
+			f = f.split(" ")[0].split("-")[0];
+			return f;
+		}
+		return type.split(".").pop();
+	}
+
 	// Editor API
 	// Editor API
 
 
 	#if editor
 	#if editor
@@ -581,17 +594,6 @@ class Prefab {
 		return getSerializablePropsForClass(Type.getClass(this));
 		return getSerializablePropsForClass(Type.getClass(this));
 	}
 	}
 
 
-	/**
-		Returns the default display name for this prefab
-	**/
-	public function getDefaultEditorName() : String {
-		if(source != null) {
-			var f = new haxe.io.Path(source).file;
-			f = f.split(" ")[0].split("-")[0];
-			return f;
-		}
-		return type.split(".").pop();
-	}
 	#end
 	#end
 
 
 	// Internal
 	// Internal

+ 1 - 0
hrt/prefab/Unknown.hx

@@ -21,6 +21,7 @@ class Unknown extends Prefab {
 				Reflect.setField(data, f, copyValue(Reflect.getProperty(newData, f)));
 				Reflect.setField(data, f, copyValue(Reflect.getProperty(newData, f)));
 			}
 			}
 		}
 		}
+		this.props = newData.props;
 	}
 	}
 
 
 	override function copy(other: Prefab) : Void {
 	override function copy(other: Prefab) : Void {