Ver Fonte

[FX] Fix setTime for ShaderDynAnimation

TothBenoit há 1 ano atrás
pai
commit
8c359924b9
1 ficheiros alterados com 16 adições e 9 exclusões
  1. 16 9
      hrt/prefab/fx/BaseFX.hx

+ 16 - 9
hrt/prefab/fx/BaseFX.hx

@@ -53,7 +53,7 @@ class ShaderAnimation extends Evaluator {
 }
 }
 
 
 class ShaderDynAnimation extends ShaderAnimation {
 class ShaderDynAnimation extends ShaderAnimation {
-	var vectors : Array<h3d.Vector4>;
+	var tmpVector4 = new h3d.Vector4();
 	override function setTime(time: Float) {
 	override function setTime(time: Float) {
 		var shader : hxsl.DynamicShader = cast shader;
 		var shader : hxsl.DynamicShader = cast shader;
 		for(param in params) {
 		for(param in params) {
@@ -68,16 +68,23 @@ class ShaderDynAnimation extends ShaderAnimation {
 				case TBool:
 				case TBool:
 					var val = getFloat(param.value, time) >= 0.5;
 					var val = getFloat(param.value, time) >= 0.5;
 					shader.setParamValue(v, val);
 					shader.setParamValue(v, val);
+				case TVec(4, VFloat):
+					var index = shader.getParamIndex(v);
+					var vector = shader.getParamValue(index);
+					if (vector == null) {
+						vector = new h3d.Vector4();
+						shader.setParamValue(v, vector);
+					}
+					getVector(param.value, time, vector);
 				case TVec(_, VFloat):
 				case TVec(_, VFloat):
-					if(vectors == null)
-						vectors = [];
-					var vec = vectors[param.idx];
-					if(vec == null) {
-						vec = new h3d.Vector4();
-						vectors[param.idx] = vec;
+					var index = shader.getParamIndex(v);
+					var vector = shader.getParamValue(index);
+					if (vector == null) {
+						vector = new h3d.Vector();
+						shader.setParamValue(v, vector);
 					}
 					}
-					getVector(param.value, time, vec);
-					shader.setParamValue(v, vec);
+					getVector(param.value, time, tmpVector4);
+					vector.set(tmpVector4.x, tmpVector4.y, tmpVector4.z);
 				default:
 				default:
 			}
 			}
 		}
 		}