|
@@ -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:
|
|
}
|
|
}
|
|
}
|
|
}
|