Explorar o código

always use "to" instead of Std.is/Std.instance (allows reference transparency)

ncannasse %!s(int64=7) %!d(string=hai) anos
pai
achega
2bfbbc2ddd
Modificáronse 1 ficheiros con 7 adicións e 5 borrados
  1. 7 5
      hxd/prefab/Prefab.hx

+ 7 - 5
hxd/prefab/Prefab.hx

@@ -192,8 +192,10 @@ class Prefab {
 	public function getOpt<T:Prefab>( cl : Class<T>, ?name : String ) : T {
 	public function getOpt<T:Prefab>( cl : Class<T>, ?name : String ) : T {
 		var parts = name == null ? null : name.split(".");
 		var parts = name == null ? null : name.split(".");
 		for( c in children ) {
 		for( c in children ) {
-			if( (name == null || c.name == name) && Std.is(c, cl) )
-				return cast c;
+			if( (name == null || c.name == name) ) {
+				var cval = c.to(cl);
+				if( cval != null ) return cval;
+			}
 			if( parts != null && parts.length > 1 && c.name == parts[0] ) {
 			if( parts != null && parts.length > 1 && c.name == parts[0] ) {
 				parts.shift();
 				parts.shift();
 				return c.getOpt(cl, parts.join("."));
 				return c.getOpt(cl, parts.join("."));
@@ -216,7 +218,7 @@ class Prefab {
 		if(arr == null)
 		if(arr == null)
 			arr = [];
 			arr = [];
 		for(c in children) {
 		for(c in children) {
-			var i = Std.instance(c, cl);
+			var i = c.to(cl);
 			if(i != null)
 			if(i != null)
 				arr.push(i);
 				arr.push(i);
 			c.getAll(cl, arr);
 			c.getAll(cl, arr);
@@ -230,7 +232,7 @@ class Prefab {
 		if( cl == null )
 		if( cl == null )
 			arr.push(cast this);
 			arr.push(cast this);
 		else {
 		else {
-			var i = Std.instance(this, cl);
+			var i = to(cl);
 			if(i != null)
 			if(i != null)
 				arr.push(i);
 				arr.push(i);
 		}
 		}
@@ -242,7 +244,7 @@ class Prefab {
 	public function getParent<T:Prefab>( c : Class<T> ) : Null<T> {
 	public function getParent<T:Prefab>( c : Class<T> ) : Null<T> {
 		var p = parent;
 		var p = parent;
 		while(p != null) {
 		while(p != null) {
-			var inst = Std.instance(p, c);
+			var inst = p.to(c);
 			if(inst != null) return inst;
 			if(inst != null) return inst;
 			p = p.parent;
 			p = p.parent;
 		}
 		}