ncannasse 7 роки тому
батько
коміт
bd9bef28ce
2 змінених файлів з 14 додано та 2 видалено
  1. 13 2
      hxd/prefab/Library.hx
  2. 1 0
      hxd/prefab/Prefab.hx

+ 13 - 2
hxd/prefab/Library.hx

@@ -44,14 +44,25 @@ class Library extends Prefab {
 		return ctx;
 	}
 
-	static var registeredElements = new Map<String,Class<Prefab>>();
+	static var registeredElements = new Map<String,{ cl : Class<Prefab> #if editor, inf : hide.prefab.HideProps #end }>();
 
 	public static function getRegistered() {
 		return registeredElements;
 	}
 
+	public static function isOfType( prefabKind : String, cl : Class<Prefab> ) {
+		var inf = registeredElements.get(prefabKind);
+		if( inf == null ) return false;
+		var c : Class<Dynamic> = inf.cl;
+		while( c != null ) {
+			if( c == cl ) return true;
+			c = Type.getSuperClass(c);
+		}
+		return false;
+	}
+
 	public static function register( type : String, cl : Class<Prefab> ) {
-		registeredElements.set(type, cl);
+		registeredElements.set(type, { cl : cl #if editor, inf : Type.createEmptyInstance(cl).getHideProps() #end });
 		return true;
 	}
 

+ 1 - 0
hxd/prefab/Prefab.hx

@@ -105,6 +105,7 @@ class Prefab {
 
 	public static function loadRec( v : Dynamic, ?parent : Prefab ) {
 		var pcl = @:privateAccess Library.registeredElements.get(v.type);
+		var pcl = pcl == null ? null : pcl.cl;
 		if( pcl == null ) pcl = hxd.prefab.Unknown;
 		var p = Type.createInstance(pcl, [parent]);
 		p.type = v.type;