UNPKG

pixi-dragonbones-runtime

Version:
3 lines (2 loc) 8.18 kB
import{BaseObject as t}from"../core/BaseObject.mjs";import"../core/DragonBones.mjs";class e extends t{_onClear(){this.dirty=!1,this.playState=-1,this.currentPlayTimes=0,this.currentTime=-1,this.target=null,this._isTween=!1,this._valueOffset=0,this._frameValueOffset=0,this._frameOffset=0,this._frameRate=0,this._frameCount=0,this._frameIndex=-1,this._frameRateR=0,this._position=0,this._duration=0,this._timeScale=1,this._timeOffset=0,this._animationData=null,this._timelineData=null,this._armature=null,this._animationState=null,this._actionTimeline=null,this._frameArray=null,this._valueArray=null,this._timelineArray=null,this._frameIndices=null}_setCurrentTime(t){const e=this.playState,i=this.currentPlayTimes,s=this.currentTime;if(null!==this._actionTimeline&&this._frameCount<=1)this.playState=this._actionTimeline.playState>=0?1:-1,this.currentPlayTimes=1,this.currentTime=this._actionTimeline.currentTime;else if(null===this._actionTimeline||1!==this._timeScale||0!==this._timeOffset){const e=this._animationState.playTimes,i=e*this._duration;t*=this._timeScale,0!==this._timeOffset&&(t+=this._timeOffset*this._animationData.duration),e>0&&(t>=i||t<=-i)?(this.playState<=0&&3===this._animationState._playheadState&&(this.playState=1),this.currentPlayTimes=e,this.currentTime=t<0?0:1===this.playState?this._duration+1e-6:this._duration):(0!==this.playState&&3===this._animationState._playheadState&&(this.playState=0),t<0?(t=-t,this.currentPlayTimes=Math.floor(t/this._duration),this.currentTime=this._duration-t%this._duration):(this.currentPlayTimes=Math.floor(t/this._duration),this.currentTime=t%this._duration)),this.currentTime+=this._position}else this.playState=this._actionTimeline.playState,this.currentPlayTimes=this._actionTimeline.currentPlayTimes,this.currentTime=this._actionTimeline.currentTime;return(this.currentPlayTimes!==i||this.currentTime!==s)&&((e<0&&this.playState!==e||this.playState<=0&&this.currentPlayTimes!==i)&&(this._frameIndex=-1),!0)}init(t,e,i){if(this._armature=t,this._animationState=e,this._timelineData=i,this._actionTimeline=this._animationState._actionTimeline,this===this._actionTimeline&&(this._actionTimeline=null),this._animationData=this._animationState.animationData,this._frameRate=this._animationData.parent.frameRate,this._frameRateR=1/this._frameRate,this._position=this._animationState._position,this._duration=this._animationState._duration,null!==this._timelineData){const t=this._animationData.parent.parent;this._frameArray=t.frameArray,this._timelineArray=t.timelineArray,this._frameIndices=t.frameIndices,this._frameCount=this._timelineArray[this._timelineData.offset+2],this._frameValueOffset=this._timelineArray[this._timelineData.offset+4],this._timeScale=100/this._timelineArray[this._timelineData.offset+0],this._timeOffset=.01*this._timelineArray[this._timelineData.offset+1]}}fadeOut(){this.dirty=!1}update(t){if(this._setCurrentTime(t)){if(this._frameCount>1){const t=Math.floor(this.currentTime*this._frameRate),e=this._frameIndices[this._timelineData.frameIndicesOffset+t];this._frameIndex!==e&&(this._frameIndex=e,this._frameOffset=this._animationData.frameOffset+this._timelineArray[this._timelineData.offset+5+this._frameIndex],this._onArriveAtFrame())}else this._frameIndex<0&&(this._frameIndex=0,null!==this._timelineData&&(this._frameOffset=this._animationData.frameOffset+this._timelineArray[this._timelineData.offset+5]),this._onArriveAtFrame());(this._isTween||this.dirty)&&this._onUpdateFrame()}}blend(t){}}class i extends e{static _getEasingValue(t,e,i){let s=e;switch(t){case 3:s=Math.pow(e,2);break;case 4:s=1-Math.pow(1-e,2);break;case 5:s=.5*(1-Math.cos(e*Math.PI))}return(s-e)*i+e}static _getEasingCurveValue(t,e,i,s){if(t<=0)return 0;if(t>=1)return 1;const a=i>0,r=i+1,n=Math.floor(t*r);let h=0,_=0;return a?(h=0===n?0:e[s+n-1],_=n===r-1?1e4:e[s+n]):(h=e[s+n-1],_=e[s+n]),1e-4*(h+(_-h)*(t*r-n))}_onClear(){super._onClear(),this._tweenType=0,this._curveCount=0,this._framePosition=0,this._frameDurationR=0,this._tweenEasing=0,this._tweenProgress=0,this._valueScale=1}_onArriveAtFrame(){if(this._frameCount>1&&(this._frameIndex!==this._frameCount-1||0===this._animationState.playTimes||this._animationState.currentPlayTimes<this._animationState.playTimes-1))if(this._tweenType=this._frameArray[this._frameOffset+1],this._isTween=0!==this._tweenType,this._isTween?2===this._tweenType?this._curveCount=this._frameArray[this._frameOffset+2]:0!==this._tweenType&&1!==this._tweenType&&(this._tweenEasing=.01*this._frameArray[this._frameOffset+2]):this.dirty=!0,this._framePosition=this._frameArray[this._frameOffset]*this._frameRateR,this._frameIndex===this._frameCount-1)this._frameDurationR=1/(this._animationData.duration-this._framePosition);else{const t=this._animationData.frameOffset+this._timelineArray[this._timelineData.offset+5+this._frameIndex+1],e=this._frameArray[t]*this._frameRateR-this._framePosition;this._frameDurationR=e>0?1/e:0}else this.dirty=!0,this._isTween=!1}_onUpdateFrame(){this._isTween&&(this.dirty=!0,this._tweenProgress=(this.currentTime-this._framePosition)*this._frameDurationR,2===this._tweenType?this._tweenProgress=i._getEasingCurveValue(this._tweenProgress,this._frameArray,this._curveCount,this._frameOffset+3):1!==this._tweenType&&(this._tweenProgress=i._getEasingValue(this._tweenType,this._tweenProgress,this._tweenEasing)))}}class s extends i{_onClear(){super._onClear(),this._current=0,this._difference=0,this._result=0}_onArriveAtFrame(){if(super._onArriveAtFrame(),null!==this._timelineData){const t=this._valueScale,e=this._valueArray,i=this._valueOffset+this._frameValueOffset+this._frameIndex;if(this._isTween){const s=this._frameIndex===this._frameCount-1?this._valueOffset+this._frameValueOffset:i+1;1===t?(this._current=e[i],this._difference=e[s]-this._current):(this._current=e[i]*t,this._difference=e[s]*t-this._current)}else this._result=e[i]*t}else this._result=0}_onUpdateFrame(){super._onUpdateFrame(),this._isTween&&(this._result=this._current+this._difference*this._tweenProgress)}}class a extends i{_onClear(){super._onClear(),this._currentA=0,this._currentB=0,this._differenceA=0,this._differenceB=0,this._resultA=0,this._resultB=0}_onArriveAtFrame(){if(super._onArriveAtFrame(),null!==this._timelineData){const t=this._valueScale,e=this._valueArray,i=this._valueOffset+this._frameValueOffset+2*this._frameIndex;if(this._isTween){const s=this._frameIndex===this._frameCount-1?this._valueOffset+this._frameValueOffset:i+2;1===t?(this._currentA=e[i],this._currentB=e[i+1],this._differenceA=e[s]-this._currentA,this._differenceB=e[s+1]-this._currentB):(this._currentA=e[i]*t,this._currentB=e[i+1]*t,this._differenceA=e[s]*t-this._currentA,this._differenceB=e[s+1]*t-this._currentB)}else this._resultA=e[i]*t,this._resultB=e[i+1]*t}else this._resultA=0,this._resultB=0}_onUpdateFrame(){super._onUpdateFrame(),this._isTween&&(this._resultA=this._currentA+this._differenceA*this._tweenProgress,this._resultB=this._currentB+this._differenceB*this._tweenProgress)}}class r extends i{constructor(){super(...arguments),this._rd=[]}_onClear(){super._onClear(),this._valueCount=0,this._rd.length=0}_onArriveAtFrame(){super._onArriveAtFrame();const t=this._valueCount,e=this._rd;if(null!==this._timelineData){const i=this._valueScale,s=this._valueArray,a=this._valueOffset+this._frameValueOffset+this._frameIndex*t;if(this._isTween){const r=this._frameIndex===this._frameCount-1?this._valueOffset+this._frameValueOffset:a+t;if(1===i)for(let i=0;i<t;++i)e[t+i]=s[r+i]-s[a+i];else for(let n=0;n<t;++n)e[t+n]=(s[r+n]-s[a+n])*i}else if(1===i)for(let i=0;i<t;++i)e[i]=s[a+i];else for(let r=0;r<t;++r)e[r]=s[a+r]*i}else for(let i=0;i<t;++i)e[i]=0}_onUpdateFrame(){if(super._onUpdateFrame(),this._isTween){const t=this._valueCount,e=this._valueScale,i=this._tweenProgress,s=this._valueArray,a=this._rd,r=this._valueOffset+this._frameValueOffset+this._frameIndex*t;if(1===e)for(let e=0;e<t;++e)a[e]=s[r+e]+a[t+e]*i;else for(let n=0;n<t;++n)a[n]=s[r+n]*e+a[t+n]*i}}}export{a as DoubleValueTimelineState,r as MutilpleValueTimelineState,s as SingleValueTimelineState,e as TimelineState,i as TweenTimelineState}; //# sourceMappingURL=BaseTimelineState.mjs.map