Quellcode durchsuchen

[fxparams] Added setParam to fxAnimation, fixed params in shaders

Clement Espeute vor 1 Jahr
Ursprung
Commit
f093368365

+ 1 - 1
hide/comp/CurveEditor.hx

@@ -1315,7 +1315,7 @@ class CurveEditor extends hide.comp.Component {
 					var pts = [];
 
 					// Basic value of xScale is 200
-					var num : Int = Std.int(Math.min(5000, 500 * cast (xScale / 200.0)));
+					var num : Int = Std.int(Math.min(1200, 250 * cast (xScale / 200.0)));
 					pts.resize(num);
 					var v = curve.makeVal();
 					if (v == null) throw "wtf";

+ 3 - 3
hide/view/FXEditor.hx

@@ -818,7 +818,7 @@ class FXEditor extends hide.view.FileView {
 				this.curveEditor.xScale = xScale;
 			}
 
-			if(["visibility", "s", "l", "a"].indexOf(curve.name.split(".").pop()) >= 0) {
+			if(["visibility", "s", "l", "a"].indexOf(curve.name.split(":").pop()) >= 0) {
 				curve.minValue = 0;
 				curve.maxValue = 1;
 			}
@@ -1334,7 +1334,7 @@ class FXEditor extends hide.view.FileView {
 	function addTracks(element : PrefabElement, props : Array<PropTrackDef>, ?prefix: String) {
 		var added = [];
 		for(prop in props) {
-			var id = prefix != null ? prefix + "." + prop.name : prop.name;
+			var id = prefix != null ? prefix + ":" + prop.name : prop.name;
 			if(Curve.getCurve(element, id) != null)
 				continue;
 			var curve = new Curve(element,null);
@@ -1379,7 +1379,7 @@ class FXEditor extends hide.view.FileView {
 		function trackItem(name: String, props: Array<PropTrackDef>, ?prefix: String) : hide.comp.ContextMenu.ContextMenuItem {
 			var hasAllTracks = true;
 			for(p in props) {
-				if(getTrack(elt, prefix + "." + p.name) == null)
+				if(getTrack(elt, prefix + ":" + p.name) == null)
 					hasAllTracks = false;
 			}
 			return {

+ 3 - 3
hrt/prefab/Curve.hx

@@ -91,8 +91,8 @@ class Curve extends Prefab {
 			addKey(0.0, 0.0);
 			addKey(1.0, 1.0);
 		}
-		#if editor
 		name = StringTools.replace(name, ".", ":");
+		#if editor
 		if (Std.downcast(parent, Curve) != null) {
 			if (StringTools.startsWith(name, parent.name)) {
 				name = StringTools.replace(name, parent.name + ":", "");
@@ -467,7 +467,7 @@ class Curve extends Prefab {
 		var ret = null;
 		for(c in parent.children) {
 			if(!c.enabled) continue;
-			var idx = c.name.indexOf(".");
+			var idx = c.name.indexOf(":");
 			var curvePrefix = (idx >= 0) ? c.name.substr(0, idx) : c.name;
 			if(curvePrefix != prefix)
 				continue;
@@ -482,7 +482,7 @@ class Curve extends Prefab {
 	public static function getGroups(curves: Array<Curve>) {
 		var groups : Array<{name: String, items: Array<Curve>}> = [];
 		for(c in curves) {
-			var prefix = c.name.split(".")[0];
+			var prefix = c.name.split(":")[0];
 			var g = groups.find(g -> g.name == prefix);
 			if(g == null) {
 				groups.push({

+ 1 - 0
hrt/prefab/fx/BaseFX.hx

@@ -161,6 +161,7 @@ class BaseFXTools {
 					var base = 1.0;
 					if(Std.isOfType(prop, Float) || Std.isOfType(prop, Int))
 						base = cast prop;
+					trace(base);
 					var curve = Curve.getCurve(shaderElt, v.name);
 					var val = Value.VConst(base);
 					if(curve != null)

+ 2 - 0
hrt/prefab/fx/Evaluator.hx

@@ -17,6 +17,8 @@ class Evaluator {
 
 	public function setAllParameters(params: Array<hrt.prefab.fx.FX.Parameter>) {
 		parameters.clear();
+		if (params == null)
+			return;
 		for (p in params) {
 			parameters[p.name] = p.def;
 		}

+ 12 - 4
hrt/prefab/fx/FX.hx

@@ -56,6 +56,11 @@ class FXAnimation extends h3d.scene.Object {
 		initEmitters(root);
 		hrt.prefab.fx.BaseFX.BaseFXTools.getShaderAnims(root, shaderAnims);
 		if(shaderAnims.length == 0) shaderAnims = null;
+		else {
+			for (a in shaderAnims) {
+				a.parameters = evaluator.parameters;
+			}
+		}
 		events = initEvents(root, events);
 		var root = hrt.prefab.fx.BaseFX.BaseFXTools.getFXRoot(def);
 		initConstraints(root != null ? root : def);
@@ -76,14 +81,17 @@ class FXAnimation extends h3d.scene.Object {
 		}
 	}
 
+	public function setParameter(name: String, value: Dynamic) {
+		evaluator.parameters[name] = value;
+	}
+
 	public function setParameters(params: Array<Parameter>) {
 		evaluator.parameters.clear();
+		if (params == null)
+			return;
 		for (p in params) {
 			evaluator.parameters[p.name] = p.def;
 		}
-		for (a in shaderAnims) {
-			a.setAllParameters(params);
-		}
 	}
 
 	public function setRandSeed(seed: Int) {
@@ -474,7 +482,7 @@ class FX extends Object3D implements BaseFX {
 	@:s public var markers : Array<{t: Float}> = [];
 	@:c public var blendFactor : Float;
 
-	@:s public var parameters : Array<Parameter>;
+	@:s public var parameters : Array<Parameter> = [];
 
 	#if editor
 	static var identRegex = ~/^[A-Za-z_][A-Za-z0-9_]*$/;