| var expressionHelpers = (function () { |
| |
| function searchExpressions(elem, data, prop) { |
| if(data.x) { |
| prop.k = true; |
| prop.x = true; |
| prop.initiateExpression = ExpressionManager.initiateExpression; |
| prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop)); |
| } |
| } |
| |
| function getValueAtTime(frameNum) { |
| frameNum *= this.elem.globalData.frameRate; |
| frameNum -= this.offsetTime; |
| if(frameNum !== this._cachingAtTime.lastFrame) { |
| this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0; |
| this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime); |
| this._cachingAtTime.lastFrame = frameNum; |
| } |
| return this._cachingAtTime.value; |
| |
| } |
| |
| function getSpeedAtTime(frameNum) { |
| var delta = -0.01; |
| var v1 = this.getValueAtTime(frameNum); |
| var v2 = this.getValueAtTime(frameNum + delta); |
| var speed = 0; |
| if(v1.length) { |
| var i; |
| for(i = 0; i < v1.length; i += 1) { |
| speed += Math.pow(v2[i] - v1[i], 2); |
| } |
| speed = Math.sqrt(speed) * 100; |
| } else { |
| speed = 0; |
| } |
| return speed; |
| } |
| |
| function getVelocityAtTime(frameNum) { |
| if(this.vel !== undefined) { |
| return this.vel; |
| } |
| var delta = -0.001; |
| // frameNum += this.elem.data.st; |
| var v1 = this.getValueAtTime(frameNum); |
| var v2 = this.getValueAtTime(frameNum + delta); |
| var velocity; |
| if(v1.length) { |
| velocity = createTypedArray('float32', v1.length); |
| var i; |
| for(i = 0; i < v1.length; i += 1) { |
| // removing frameRate |
| // if needed, don't add it here |
| // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta); |
| velocity[i] = (v2[i] - v1[i]) / delta; |
| } |
| } else { |
| velocity = (v2 - v1) / delta; |
| } |
| return velocity; |
| } |
| |
| function getStaticValueAtTime() { |
| return this.pv; |
| } |
| |
| function setGroupProperty(propertyGroup) { |
| this.propertyGroup = propertyGroup; |
| } |
| |
| return { |
| searchExpressions: searchExpressions, |
| getSpeedAtTime: getSpeedAtTime, |
| getVelocityAtTime: getVelocityAtTime, |
| getValueAtTime: getValueAtTime, |
| getStaticValueAtTime: getStaticValueAtTime, |
| setGroupProperty: setGroupProperty, |
| } |
| }()); |