瀏覽代碼

FX Parameters: fix parameters animation

lviguier 7 月之前
父節點
當前提交
ebbe10f105
共有 3 個文件被更改,包括 20 次插入9 次删除
  1. 6 0
      hrt/prefab/Shader.hx
  2. 3 1
      hrt/prefab/fx/BaseFX.hx
  3. 11 8
      hrt/prefab/fx/FX.hx

+ 6 - 0
hrt/prefab/Shader.hx

@@ -35,6 +35,12 @@ class Shader extends Prefab {
 		if( shader == null || shaderDef == null )
 			return;
 		syncShaderVars(shader, shaderDef);
+
+		#if editor
+		var rootFx = Std.downcast(getRoot(), hrt.prefab.fx.FX);
+		var fxAnim = Std.downcast(rootFx?.local3d, hrt.prefab.fx.FX.FXAnimation);
+		fxAnim?.updateCustomAnims(rootFx);
+		#end
 	}
 
 	function syncShaderVars( shader : hxsl.Shader, shaderDef : hxsl.SharedShader ) {

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

@@ -194,7 +194,9 @@ class BaseFXTools {
 			paramCount++;
 
 			var prop = Reflect.field(basePrefab.props, v.name);
-			if(prop == null)
+			if (prop == null)
+				prop = Reflect.field(basePrefab, v.name);
+			if (prop == null)
 				prop = hrt.prefab.DynamicShader.getDefault(v.type);
 
 			var curves = Curve.getCurves(basePrefab, v.name);

+ 11 - 8
hrt/prefab/fx/FX.hx

@@ -58,14 +58,7 @@ class FXAnimation extends h3d.scene.Object {
 
 		initObjAnimations(root);
 		initEmitters(root);
-		hrt.prefab.fx.BaseFX.BaseFXTools.getCustomAnimations(root, customAnims, null);
-		if(customAnims.length == 0) customAnims = null;
-		else {
-			for (a in customAnims) {
-				a.parameters = evaluator.parameters;
-			}
-		}
-
+		updateCustomAnims(root);
 
 		events = initEvents(root, events);
 		var root = hrt.prefab.fx.BaseFX.BaseFXTools.getFXRoot(def);
@@ -97,6 +90,16 @@ class FXAnimation extends h3d.scene.Object {
 		}
 	}
 
+	public function updateCustomAnims(root : Prefab) {
+		hrt.prefab.fx.BaseFX.BaseFXTools.getCustomAnimations(root, customAnims, null);
+		if(customAnims.length == 0) customAnims = null;
+		else {
+			for (a in customAnims) {
+				a.parameters = evaluator.parameters;
+			}
+		}
+	}
+
 	public function setParameter(name: String, value: Dynamic) {
 		evaluator.parameters[name] = value;
 	}