Răsfoiți Sursa

minor refactoring

ncannasse 6 ani în urmă
părinte
comite
3330dcf960
3 a modificat fișierele cu 97 adăugiri și 92 ștergeri
  1. 3 88
      hxd/inspect/PropManager.hx
  2. 90 0
      hxd/inspect/PropTools.hx
  3. 4 4
      hxd/inspect/SceneProps.hx

+ 3 - 88
hxd/inspect/PropManager.hx

@@ -142,13 +142,13 @@ class PropManager extends vdom.Client {
 	public function setPathPropValue( path : String, v : Dynamic ) {
 		var p = resolvePropPath(path);
 		if( p != null )
-			setPropValue(p, v);
+			PropTools.setPropValue(p, v);
 	}
 
 	function getPropPath( path : Array<String>, props : Array<Property> ) {
 		for( p in props ) {
 			var p = propFollow(p);
-			var name = getPropName(p);
+			var name = PropTools.getPropName(p);
 			if( name == path[0] ) {
 				path.shift();
 				switch( p ) {
@@ -162,84 +162,6 @@ class PropManager extends vdom.Client {
 		return null;
 	}
 
-	public static function setPropValue( p : Property, v : Dynamic, lerp = 1. ) {
-		switch( p ) {
-		case PInt(_, get, set):
-			if( !Std.is(v, Int) ) throw "Invalid int value " + v;
-			var v : Int = v;
-			if( lerp == 1 )
-				set(v);
-			else {
-				var prev = get();
-				var u = hxd.Math.lerp(prev, v, lerp);
-				set( prev < v ? Math.ceil(u) : Math.floor(u) );
-			}
-		case PFloat(_, get, set):
-			if( !Std.is(v, Float) ) throw "Invalid float value " + v;
-			if( lerp == 1 )
-				set(v);
-			else
-				set(hxd.Math.lerp(get(), v, lerp));
-		case PRange(_, _, _, get, set):
-			if( !Std.is(v, Float) ) throw "Invalid float value " + v;
-			if( lerp == 1 )
-				set(v);
-			else
-				set(hxd.Math.lerp(get(), v, lerp));
-		case PBool(_, _, set):
-			if( !Std.is(v, Bool) ) throw "Invalid bool value " + v;
-			set(v);
-		case PString(_, _, set):
-			if( v != null && !Std.is(v, String) ) throw "Invalid string value " + v;
-			set(v);
-		case PEnum(_, en, _, set):
-			var e = en.createAll()[v];
-			if( e == null || !Std.is(v, Int) ) throw "Invalid enum " + en.getName() + " value " + v;
-			set(e);
-		case PColor(_, _, get, set):
-			if( !Std.is(v, String) ) throw "Invalid color value " + v;
-			var v : String = v;
-			var newV = h3d.Vector.fromColor(Std.parseInt("0x" + v.substr(1)));
-			if( lerp == 1 )
-				set(newV);
-			else {
-				var prev = get();
-				newV.r = hxd.Math.lerp(prev.r, newV.r, lerp);
-				newV.g = hxd.Math.lerp(prev.g, newV.g, lerp);
-				newV.b = hxd.Math.lerp(prev.b, newV.b, lerp);
-				newV.a = hxd.Math.lerp(prev.a, newV.a, lerp);
-				set(newV);
-			}
-		case PFloats(_, get, set):
-			if( !Std.is(v, Array) ) throw "Invalid floats value " + v;
-			var a : Array<Float> = v;
-			var prev = get();
-			var need = prev.length;
-			if( a.length != need ) throw "Require " + need + " floats in value " + v;
-			if( lerp == 1 )
-				set(a.copy());
-			else {
-				var newA = a.copy();
-				for( i in 0...need )
-					newA[i] = hxd.Math.lerp(prev[i], newA[i], lerp);
-				set(newA);
-			}
-		case PTexture(_, _, set):
-			if( !Std.is(v, String) ) throw "Invalid texture value " + v;
-			var path : String = v;
-			if( path.charCodeAt(0) != '/'.code && path.charCodeAt(1) != ':'.code ) {
-				set(hxd.res.Loader.currentInstance.load(path).toTexture());
-			} else
-				hxd.File.load(path, function(data) set( hxd.res.Any.fromBytes(path, data).toTexture() ));
-		case PCustom(_, _, set) if( set != null ):
-			set(v);
-		case PPopup(p, _):
-			setPropValue(p, v);
-		case PGroup(_), PCustom(_):
-			throw "Cannot set property " + p.getName();
-		}
-	}
-
 	function getPropValue( p : Property ) : Dynamic {
 		switch( p ) {
 		case PInt(_, get, _): return get();
@@ -303,13 +225,6 @@ class PropManager extends vdom.Client {
 		}
 	}
 
-	public static function getPropName( p : Property ) {
-		return switch( p ) {
-		case PGroup(name, _), PBool(name, _), PInt(name, _), PFloat(name, _), PFloats(name, _), PString(name, _), PColor(name, _), PTexture(name, _), PEnum(name,_,_,_), PCustom(name,_), PRange(name,_): name;
-		case PPopup(p, _): getPropName(p);
-		}
-	}
-
 	var cachedResPath = null;
 
 	public function getResPath() {
@@ -372,7 +287,7 @@ class PropManager extends vdom.Client {
 		jname.appendTo(j);
 		jprop.appendTo(j);
 
-		var name = getPropName(p);
+		var name = PropTools.getPropName(p);
 		var path = basePath + "." +name;
 		if( name != null )
 			jname.text(name);

+ 90 - 0
hxd/inspect/PropTools.hx

@@ -0,0 +1,90 @@
+package hxd.inspect;
+
+class PropTools {
+
+	public static function setPropValue( p : Property, v : Dynamic, lerp = 1. ) {
+		switch( p ) {
+		case PInt(_, get, set):
+			if( !Std.is(v, Int) ) throw "Invalid int value " + v;
+			var v : Int = v;
+			if( lerp == 1 )
+				set(v);
+			else {
+				var prev = get();
+				var u = hxd.Math.lerp(prev, v, lerp);
+				set( prev < v ? Math.ceil(u) : Math.floor(u) );
+			}
+		case PFloat(_, get, set):
+			if( !Std.is(v, Float) ) throw "Invalid float value " + v;
+			if( lerp == 1 )
+				set(v);
+			else
+				set(hxd.Math.lerp(get(), v, lerp));
+		case PRange(_, _, _, get, set):
+			if( !Std.is(v, Float) ) throw "Invalid float value " + v;
+			if( lerp == 1 )
+				set(v);
+			else
+				set(hxd.Math.lerp(get(), v, lerp));
+		case PBool(_, _, set):
+			if( !Std.is(v, Bool) ) throw "Invalid bool value " + v;
+			set(v);
+		case PString(_, _, set):
+			if( v != null && !Std.is(v, String) ) throw "Invalid string value " + v;
+			set(v);
+		case PEnum(_, en, _, set):
+			var e = en.createAll()[v];
+			if( e == null || !Std.is(v, Int) ) throw "Invalid enum " + en.getName() + " value " + v;
+			set(e);
+		case PColor(_, _, get, set):
+			if( !Std.is(v, String) ) throw "Invalid color value " + v;
+			var v : String = v;
+			var newV = h3d.Vector.fromColor(Std.parseInt("0x" + v.substr(1)));
+			if( lerp == 1 )
+				set(newV);
+			else {
+				var prev = get();
+				newV.r = hxd.Math.lerp(prev.r, newV.r, lerp);
+				newV.g = hxd.Math.lerp(prev.g, newV.g, lerp);
+				newV.b = hxd.Math.lerp(prev.b, newV.b, lerp);
+				newV.a = hxd.Math.lerp(prev.a, newV.a, lerp);
+				set(newV);
+			}
+		case PFloats(_, get, set):
+			if( !Std.is(v, Array) ) throw "Invalid floats value " + v;
+			var a : Array<Float> = v;
+			var prev = get();
+			var need = prev.length;
+			if( a.length != need ) throw "Require " + need + " floats in value " + v;
+			if( lerp == 1 )
+				set(a.copy());
+			else {
+				var newA = a.copy();
+				for( i in 0...need )
+					newA[i] = hxd.Math.lerp(prev[i], newA[i], lerp);
+				set(newA);
+			}
+		case PTexture(_, _, set):
+			if( !Std.is(v, String) ) throw "Invalid texture value " + v;
+			var path : String = v;
+			if( path.charCodeAt(0) != '/'.code && path.charCodeAt(1) != ':'.code ) {
+				set(hxd.res.Loader.currentInstance.load(path).toTexture());
+			} else
+				hxd.File.load(path, function(data) set( hxd.res.Any.fromBytes(path, data).toTexture() ));
+		case PCustom(_, _, set) if( set != null ):
+			set(v);
+		case PPopup(p, _):
+			setPropValue(p, v);
+		case PGroup(_), PCustom(_):
+			throw "Cannot set property " + p.getName();
+		}
+	}
+
+	public static function getPropName( p : Property ) {
+		return switch( p ) {
+		case PGroup(name, _), PBool(name, _), PInt(name, _), PFloat(name, _), PFloats(name, _), PString(name, _), PColor(name, _), PTexture(name, _), PEnum(name,_,_,_), PCustom(name,_), PRange(name,_): name;
+		case PPopup(p, _): getPropName(p);
+		}
+	}
+
+}

+ 4 - 4
hxd/inspect/SceneProps.hx

@@ -415,7 +415,7 @@ class SceneProps {
 				var pl = node.props();
 				props = new Map();
 				for( p in pl )
-					props.set(PropManager.getPropName(p), p);
+					props.set(PropTools.getPropName(p), p);
 			}
 			var p = props.get(f);
 			if( p == null ) {
@@ -426,7 +426,7 @@ class SceneProps {
 			case PGroup(_, props) if( isObj ):
 				applyPropsGroup(node.getFullPath()+"."+f, v, props, onError, lerp);
 			default:
-				PropManager.setPropValue(p, v, lerp);
+				PropTools.setPropValue(p, v, lerp);
 			}
 		}
 	}
@@ -434,7 +434,7 @@ class SceneProps {
 	function applyPropsGroup( path : String, propsValues : Dynamic, props : Array<Property>, onError : String -> Void, lerp : Float ) {
 		var pmap = new Map();
 		for( p in props )
-			pmap.set(PropManager.getPropName(p), p);
+			pmap.set(PropTools.getPropName(p), p);
 		for( f in Reflect.fields(propsValues) ) {
 			var p = pmap.get(f);
 			if( p == null ) {
@@ -446,7 +446,7 @@ class SceneProps {
 			case PGroup(_, props):
 				applyPropsGroup(path + "." + f, v, props, onError, lerp);
 			default:
-				PropManager.setPropValue(p, v, lerp);
+				PropTools.setPropValue(p, v, lerp);
 			}
 		}
 	}