;- Easing Enumeration #Easing_Linear #Easing_ExpoEaseOut #Easing_ExpoEaseIn #Easing_ExpoEaseInOut #Easing_ExpoEaseOutIn #Easing_QuadEaseOut #Easing_QuadEaseIn #Easing_QuadEaseInOut #Easing_QuadEaseOutIn #Easing_CubicEaseOut #Easing_CubicEaseIn #Easing_CubicEaseInOut #Easing_CubicEaseOutIn #Easing_QuartEaseOut #Easing_QuartEaseIn #Easing_QuartEaseInOut #Easing_QuartEaseOutIn #Easing_QuintEaseOut #Easing_QuintEaseIn #Easing_QuintEaseInOut #Easing_QuintEaseOutIn #Easing_CircEaseOut #Easing_CircEaseIn #Easing_CircEaseInOut #Easing_CircEaseOutIn #Easing_SineEaseOut #Easing_SineEaseIn #Easing_SineEaseInOut #Easing_SineEaseOutIn #Easing_ElasticEaseOut #Easing_ElasticEaseIn #Easing_ElasticEaseInOut #Easing_ElasticEaseOutIn #Easing_BounceEaseOut #Easing_BounceEaseIn #Easing_BounceEaseInOut #Easing_BounceEaseOutIn #Easing_BackEaseOut #Easing_BackEaseIn #Easing_BackEaseInOut #Easing_BackEaseOutIn #Easing_End EndEnumeration #MAX_EASING=$10000 Global Dim EASING.f(#Easing_End-1, #MAX_EASING) ;-Expo CompilerIf Defined(Easing_ExpoEaseOut, #PB_Constant) Or Defined(Easing_ExpoEaseOutIn,#PB_Constant) Procedure.f ExpoEaseOut(Fraction.f) If Fraction=1 : ProcedureReturn 1 : Else : ProcedureReturn (-Pow(2, -10 * Fraction) + 1) : EndIf EndProcedure CompilerEndIf CompilerIf Defined(Easing_ExpoEaseIn,#PB_Constant) Or Defined(Easing_ExpoEaseOutIn,#PB_Constant) ; Easing equation function for an exponential (2^t) easing in: ; accelerating from zero velocity. Procedure.f ExpoEaseIn(Fraction.f) If Fraction=0 : ProcedureReturn 0 : Else : ProcedureReturn Pow(2, 10 * (Fraction-1)) : EndIf EndProcedure CompilerEndIf CompilerIf Defined(Easing_ExpoEaseInOut,#PB_Constant) ; Easing equation function for an exponential (2^t) easing in/out: ; acceleration until halfway, then deceleration. Procedure.f ExpoEaseInOut(Fraction.f) If (Fraction=0) ProcedureReturn 0 ElseIf (Fraction=1) ProcedureReturn 1 EndIf Fraction * 2 If (Fraction<1) ProcedureReturn 0.5 * Pow(2, 10 * (Fraction - 1)) Else ProcedureReturn 0.5 * (-Pow(2, -10 * (Fraction - 1)) + 2) EndIf EndProcedure CompilerEndIf CompilerIf Defined(Easing_ExpoEaseOutIn,#PB_Constant) ; Easing equation function for an exponential (2^t) easing out/in: ; deceleration until halfway, then acceleration. Procedure.f ExpoEaseOutIn(Fraction.f) If (Fraction<0.5) ProcedureReturn 0.5 * ExpoEaseOut(2*Fraction) Else ProcedureReturn 0.5 + 0.5 * ExpoEaseIn(2*Fraction - 1) EndIf EndProcedure CompilerEndIf ;-Quadratic CompilerIf Defined(Easing_QuadEaseOut,#PB_Constant) Or Defined(Easing_QuadEaseOutIn,#PB_Constant) ; Easing equation function for a quadratic (t^2) easing out: ; decelerating from zero velocity. Procedure.f QuadEaseOut(Fraction.f) ProcedureReturn -Fraction * (Fraction - 2) EndProcedure CompilerEndIf CompilerIf Defined(Easing_QuadEaseIn,#PB_Constant) Or Defined(Easing_QuadEaseOutIn,#PB_Constant) ; Easing equation function for a quadratic (t^2) easing in: ; accelerating from zero velocity. Procedure.f QuadEaseIn(Fraction.f) ProcedureReturn Fraction * Fraction EndProcedure CompilerEndIf CompilerIf Defined(Easing_QuadEaseInOut,#PB_Constant) ; Easing equation function for a quadratic (t^2) easing in/out: ; acceleration until halfway, then deceleration. Procedure.f QuadEaseInOut(Fraction.f) Fraction * 2 If (Fraction<1) ProcedureReturn 0.5 * Fraction * Fraction Else Fraction-1 ProcedureReturn -0.5 * (Fraction * (Fraction - 2) - 1) EndIf EndProcedure CompilerEndIf CompilerIf Defined(Easing_QuadEaseOutIn,#PB_Constant) ; Easing equation function for a quadratic (t^2) easing out/in: ; deceleration until halfway, then acceleration. Procedure.f QuadEaseOutIn(Fraction.f) If (Fraction<0.5) ProcedureReturn 0.5 * QuadEaseOut(Fraction * 2); Else ProcedureReturn 0.5 + 0.5 * QuadEaseIn((Fraction * 2) - 1) EndIf EndProcedure CompilerEndIf CompilerIf Defined(Easing_CubicEaseOut,#PB_Constant) Or Defined(Easing_CubicEaseOutIn,#PB_Constant) ; Easing equation function for a cubic (t^3) easing out: ; decelerating from zero velocity. Procedure.f CubicEaseOut(Fraction.f) Fraction - 1 ProcedureReturn Fraction * Fraction * Fraction + 1 EndProcedure CompilerEndIf CompilerIf Defined(Easing_CubicEaseIn,#PB_Constant) Or Defined(Easing_CubicEaseOutIn,#PB_Constant) ; Easing equation function for a cubic (t^3) easing in: ; accelerating from zero velocity. Procedure.f CubicEaseIn(Fraction.f) ProcedureReturn Fraction * Fraction * Fraction EndProcedure CompilerEndIf ; Easing equation function for a cubic (t^3) easing in/out: ; acceleration until halfway, then deceleration. Procedure.f CubicEaseInOut(Fraction.f) Fraction * 2 If (Fraction<1) ProcedureReturn 0.5 * Fraction * Fraction * Fraction Else Fraction - 2 ProcedureReturn 0.5 * (Fraction * Fraction * Fraction + 2) EndIf EndProcedure CompilerIf Defined(Easing_CubicEaseOutIn,#PB_Constant) ; Easing equation function for a cubic (t^3) easing out/in: ; deceleration until halfway, then acceleration. Procedure.f CubicEaseOutIn(Fraction.f) If (Fraction<0.5) ProcedureReturn 0.5 * CubicEaseOut(Fraction * 2) Else ProcedureReturn 0.5 + 0.5 * CubicEaseIn((Fraction * 2) - 1) EndIf EndProcedure CompilerEndIf ;-Quartic CompilerIf Defined(Easing_QuartEaseOut,#PB_Constant) Or Defined(Easing_QuartEaseOutIn,#PB_Constant) ; Easing equation function for a quartic (t^4) easing out: ; decelerating from zero velocity. Procedure.f QuartEaseOut(Fraction.f) Fraction - 1 ProcedureReturn -(Fraction * Fraction * Fraction * Fraction - 1) EndProcedure CompilerEndIf CompilerIf Defined(Easing_QuartEaseIn,#PB_Constant) Or Defined(Easing_QuartEaseOutIn,#PB_Constant) ; Easing equation function for a quartic (t^4) easing in: ; accelerating from zero velocity. Procedure.f QuartEaseIn(Fraction.f) ProcedureReturn Fraction * Fraction * Fraction * Fraction EndProcedure CompilerEndIf CompilerIf Defined(Easing_QuartEaseInOut,#PB_Constant) ; Easing equation function for a quartic (t^4) easing in/out: ; acceleration until halfway, then deceleration. Procedure.f QuartEaseInOut(Fraction.f) Fraction * 2 If (Fraction<1) ProcedureReturn 0.5 * Fraction * Fraction * Fraction * Fraction Else Fraction - 2 ProcedureReturn -0.5 * (Fraction * Fraction * Fraction * Fraction - 2) EndIf EndProcedure CompilerEndIf CompilerIf Defined(Easing_QuartEaseOutIn,#PB_Constant) ; Easing equation function for a quartic (t^4) easing out/in: ; deceleration until halfway, then acceleration. Procedure.f QuartEaseOutIn(Fraction.f) If (Fraction<0.5) ProcedureReturn 0.5 * QuartEaseOut(Fraction * 2) Else ProcedureReturn 0.5 + 0.5 * QuartEaseIn((Fraction * 2) - 1) EndIf EndProcedure CompilerEndIf ;-Quintic CompilerIf Defined(Easing_QuintEaseOut,#PB_Constant) Or Defined(Easing_QuintEaseOutIn,#PB_Constant) ; Easing equation function for a quintic (t^5) easing out: ; decelerating from zero velocity. Procedure.f QuintEaseOut(Fraction.f) Fraction - 1 ProcedureReturn (Fraction * Fraction * Fraction * Fraction * Fraction + 1) EndProcedure CompilerEndIf CompilerIf Defined(Easing_QuintEaseIn,#PB_Constant) Or Defined(Easing_QuintEaseOutIn,#PB_Constant) ; Easing equation function for a quintic (t^5) easing in: ; accelerating from zero velocity. Procedure.f QuintEaseIn(Fraction.f) ProcedureReturn Fraction * Fraction * Fraction * Fraction * Fraction EndProcedure CompilerEndIf CompilerIf Defined(Easing_QuintEaseInOut,#PB_Constant) ; Easing equation function for a quintic (t^5) easing in/out: ; acceleration until halfway, then deceleration. Procedure.f QuintEaseInOut(Fraction.f) Fraction * 2 If (Fraction<1) ProcedureReturn 0.5 * Fraction * Fraction * Fraction * Fraction * Fraction Else Fraction - 2 ProcedureReturn 0.5 * (Fraction * Fraction * Fraction * Fraction * Fraction + 2) EndIf EndProcedure CompilerEndIf CompilerIf Defined(Easing_QuintEaseOutIn,#PB_Constant) ; Easing equation function for a quintic (t^5) easing in/out: ; acceleration until halfway, then deceleration. Procedure.f QuintEaseOutIn(Fraction.f) If (Fraction<0.5) ProcedureReturn 0.5*QuintEaseOut(Fraction * 2); Else ProcedureReturn 0.5 + 0.5*QuintEaseIn((Fraction * 2) - 1) EndIf EndProcedure CompilerEndIf ;- Circular CompilerIf Defined(Easing_CircEaseOut,#PB_Constant) Or Defined(Easing_CircEaseOutIn,#PB_Constant) ; Easing equation function for a circular (sqrt(1-t^2)) easing out: ; decelerating from zero velocity. Procedure.f CircEaseOut(Fraction.f) Fraction - 1 ProcedureReturn Sqr(1 - Fraction * Fraction) EndProcedure CompilerEndIf CompilerIf Defined(Easing_CircEaseIn,#PB_Constant) Or Defined(Easing_CircEaseOutIn,#PB_Constant) ; Easing equation function for a circular (sqrt(1-t^2)) easing in: ; accelerating from zero velocity. Procedure.f CircEaseIn(Fraction.f) ProcedureReturn - (Sqr(1 - Fraction * Fraction) - 1) EndProcedure CompilerEndIf CompilerIf Defined(Easing_CircEaseInOut,#PB_Constant) ; Easing equation function for a circular (sqrt(1-t^2)) easing in/out: ; acceleration until halfway, then deceleration. Procedure.f CircEaseInOut(Fraction.f) Fraction * 2 If (Fraction<1) ProcedureReturn -0.5 * (Sqr(1 - Fraction * Fraction) - 1) Else Fraction - 2 ProcedureReturn 0.5 * (Sqr(1 - Fraction * Fraction) + 1) EndIf EndProcedure CompilerEndIf CompilerIf Defined(Easing_CircEaseOutIn,#PB_Constant) ; Easing equation function for a circular (sqrt(1-t^2)) easing in/out: ; acceleration until halfway, then deceleration. Procedure.f CircEaseOutIn(Fraction.f) If (Fraction<0.5) ProcedureReturn 0.5*CircEaseOut(Fraction * 2) Else ProcedureReturn 0.5 + 0.5*CircEaseIn((Fraction * 2) - 1) EndIf EndProcedure CompilerEndIf ;-Sine CompilerIf Defined(Easing_SineEaseOut,#PB_Constant) Or Defined(Easing_SineEaseOutIn,#PB_Constant) ; Easing equation function for a sinusoidal (sin(t)) easing out: ; decelerating from zero velocity. Procedure.f SineEaseOut(Fraction.f) ProcedureReturn Sin(Fraction * (#PI / 2)) EndProcedure CompilerEndIf CompilerIf Defined(Easing_SineEaseIn,#PB_Constant) Or Defined(Easing_SineEaseOutIn,#PB_Constant) ; Easing equation function for a sinusoidal (sin(t)) easing in: ; accelerating from zero velocity. Procedure.f SineEaseIn(Fraction.f) ProcedureReturn - Cos(Fraction * (#PI / 2)) + 1 EndProcedure CompilerEndIf ; Easing equation function for a sinusoidal (sin(t)) easing in/out: ; acceleration until halfway, then deceleration. Procedure.f SineEaseInOut(Fraction.f) ProcedureReturn -0.5 * (Cos(Fraction*#PI) - 1) EndProcedure CompilerIf Defined(Easing_SineEaseOutIn,#PB_Constant) ; Easing equation function for a sinusoidal (sin(t)) easing in/out: ; deceleration until halfway, then acceleration. Procedure.f SineEaseOutIn(Fraction.f) If (Fraction<0.5) ProcedureReturn 0.5*SineEaseOut(Fraction * 2) Else ProcedureReturn 0.5 + 0.5*SineEaseIn((Fraction * 2) - 1) EndIf EndProcedure CompilerEndIf ;-Elastic CompilerIf Defined(Easing_ElasticEaseOut,#PB_Constant) Or Defined(Easing_ElasticEaseOutIn,#PB_Constant) ; Easing equation function for an elastic (exponentially decaying sine wave) easing out: ; decelerating from zero velocity. Procedure.f ElasticEaseOut(Fraction.f) If (Fraction=1) ProcedureReturn 1 EndIf Protected p.f=0.3 Protected s.f=p / 4 ProcedureReturn Pow(2, -10 * Fraction) * Sin((Fraction - s) * (2 * #PI) / p) + 1 EndProcedure CompilerEndIf CompilerIf Defined(Easing_ElasticEaseIn,#PB_Constant) Or Defined(Easing_ElasticEaseOutIn,#PB_Constant) ; Easing equation function for an elastic (exponentially decaying sine wave) easing in: ; accelerating from zero velocity. Procedure.f ElasticEaseIn(Fraction.f) If (Fraction=1) ProcedureReturn 1 EndIf Protected p.f=0.3 Protected s.f=p / 4 Fraction - 1 ProcedureReturn -Pow(2, 10 * Fraction) * Sin((Fraction - s) * (2 * #PI) / p) EndProcedure CompilerEndIf CompilerIf Defined(Easing_ElasticEaseInOut,#PB_Constant) ; Easing equation function for an elastic (exponentially decaying sine wave) easing in/out: ; acceleration until halfway, then deceleration. Procedure.f ElasticEaseInOut(Fraction.f) Fraction * 2 If (Fraction=2) ProcedureReturn 1 EndIf Protected p.f=(0.3 * 1.5) Protected s.f=p / 4 If (Fraction<1) Fraction - 1 ProcedureReturn -0.5 * (Pow(2, 10 * Fraction) * Sin((Fraction - s) * (2 * #PI) / p)) Else Fraction - 1 ProcedureReturn 0.5 * (Pow(2, -10 * Fraction) * Sin((Fraction - s) * (2 * #PI) / p)) + 1 EndIf EndProcedure CompilerEndIf CompilerIf Defined(Easing_ElasticEaseOutIn,#PB_Constant) ; Easing equation function for an elastic (exponentially decaying sine wave) easing out/in: ; deceleration until halfway, then acceleration. Procedure.f ElasticEaseOutIn(Fraction.f) If (Fraction<0.5) ProcedureReturn 0.5*ElasticEaseOut(Fraction * 2) Else ProcedureReturn 0.5 + 0.5*ElasticEaseIn((Fraction * 2) - 1) EndIf EndProcedure CompilerEndIf ;-Bounce CompilerIf Defined(Easing_BounceEaseOut,#PB_Constant) Or Defined(Easing_BounceEaseOutIn,#PB_Constant) Or Defined(Easing_BounceEaseInOut,#PB_Constant) ; Easing equation function for a bounce (exponentially decaying parabolic bounce) easing out: ; decelerating from zero velocity. Procedure.f BounceEaseOut(Fraction.f) If (Fraction<(1 / 2.75)) ProcedureReturn (7.5625 * Fraction * Fraction) ElseIf (Fraction<(2 / 2.75)) Fraction - (1.5 / 2.75) ProcedureReturn (7.5625 * Fraction * Fraction + 0.75) ElseIf (Fraction<(2.5 / 2.75)) Fraction - (2.25 / 2.75) ProcedureReturn (7.5625 * Fraction * Fraction + 0.9375) Else Fraction - (2.625 / 2.75) ProcedureReturn (7.5625 * Fraction * Fraction + 0.984375) EndIf EndProcedure CompilerEndIf CompilerIf Defined(Easing_BounceEaseIn,#PB_Constant) Or Defined(Easing_BounceEaseOutIn,#PB_Constant) Or Defined(Easing_BounceEaseInOut,#PB_Constant) ; Easing equation function for a bounce (exponentially decaying parabolic bounce) easing in: ; accelerating from zero velocity. Procedure.f BounceEaseIn(Fraction.f) ProcedureReturn 1 - BounceEaseOut(1 - Fraction) EndProcedure CompilerEndIf CompilerIf Defined(Easing_BounceEaseInOut,#PB_Constant) ; Easing equation function for a bounce (exponentially decaying parabolic bounce) easing in/out: ; acceleration until halfway, then deceleration. Procedure.f BounceEaseInOut(Fraction.f) If (Fraction<0.5) ProcedureReturn 0.5*BounceEaseIn(Fraction * 2) Else ProcedureReturn 0.5 + 0.5*BounceEaseOut((Fraction * 2) - 1) EndIf EndProcedure CompilerEndIf CompilerIf Defined(Easing_BounceEaseOutIn,#PB_Constant) ; Easing equation function for a bounce (exponentially decaying parabolic bounce) easing out/in: ; deceleration until halfway, then acceleration. Procedure.f BounceEaseOutIn(Fraction.f) If (Fraction<0.5) ProcedureReturn 0.5*BounceEaseOut(Fraction * 2) EndIf ProcedureReturn 0.5 + 0.5*BounceEaseIn(Fraction * 2 - 1) EndProcedure CompilerEndIf ;-Back CompilerIf Defined(Easing_BackEaseOut,#PB_Constant) Or Defined(Easing_BackEaseOutIn,#PB_Constant) ; Easing equation function for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing out: ; decelerating from zero velocity. Procedure.f BackEaseOut(Fraction.f) Fraction - 1 ProcedureReturn Fraction * Fraction * ((1.70158 + 1) * Fraction + 1.70158) + 1 EndProcedure CompilerEndIf CompilerIf Defined(Easing_BackEaseIn,#PB_Constant) Or Defined(Easing_BackEaseOutIn,#PB_Constant) ; Easing equation function for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing in: ; accelerating from zero velocity. Procedure.f BackEaseIn(Fraction.f) ProcedureReturn Fraction * Fraction * ((1.70158 + 1) * Fraction - 1.70158) EndProcedure CompilerEndIf CompilerIf Defined(Easing_BackEaseInOut,#PB_Constant) ; Easing equation function for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing in/out: ; acceleration until halfway, then deceleration. Procedure.f BackEaseInOut(Fraction.f) Protected s.f=1.70158 Fraction * 2 If (Fraction<1) s * (1.525) ProcedureReturn 0.5 * (Fraction * Fraction * ((s + 1) * Fraction - s)) Else Fraction - 2 s * (1.525) ProcedureReturn 0.5 * (Fraction * Fraction * ((s + 1) * Fraction + s) + 2) EndIf EndProcedure CompilerEndIf CompilerIf Defined(Easing_BackEaseOutIn,#PB_Constant) ; Easing equation function for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing out/in: ; deceleration until halfway, then acceleration. Procedure.f BackEaseOutIn(Fraction.f) If (Fraction<0.5) ProcedureReturn 0.5*BackEaseOut(Fraction * 2) EndIf ProcedureReturn 0.5 + 0.5*BackEaseIn((Fraction * 2) - 1) EndProcedure CompilerEndIf ;-FIN procedure Procedure InitEase() Protected i For i=0 To #MAX_EASING CompilerIf Defined(Easing_Linear, #PB_Constant) EASING(#Easing_Linear,i)=i/#MAX_EASING CompilerEndIf CompilerIf Defined(Easing_ExpoEaseOut,#PB_Constant) EASING(#Easing_ExpoEaseOut,i)=ExpoEaseOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_ExpoEaseIn,#PB_Constant) EASING(#Easing_ExpoEaseIn,i)=ExpoEaseIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_ExpoEaseInOut,#PB_Constant) EASING(#Easing_ExpoEaseInOut,i)=ExpoEaseInOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_ExpoEaseOutIn,#PB_Constant) EASING(#Easing_ExpoEaseOutIn,i)=ExpoEaseOutIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_ExpoEaseOutIn,#PB_Constant) EASING(#Easing_ExpoEaseOutIn,i)=ExpoEaseOutIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_QuadEaseOut,#PB_Constant) EASING(#Easing_QuadEaseOut,i)=QuadEaseOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_QuadEaseIn,#PB_Constant) EASING(#Easing_QuadEaseIn,i)=QuadEaseIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_QuadEaseInOut,#PB_Constant) EASING(#Easing_QuadEaseInOut,i)=QuadEaseInOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_QuadEaseOutIn,#PB_Constant) EASING(#Easing_QuadEaseOutIn,i)=QuadEaseOutIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_CubicEaseOut,#PB_Constant) EASING(#Easing_CubicEaseOut,i)=CubicEaseOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_CubicEaseIn,#PB_Constant) EASING(#Easing_CubicEaseIn,i)=CubicEaseIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_CubicEaseInOut,#PB_Constant) EASING(#Easing_CubicEaseInOut,i)=CubicEaseInOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_CubicEaseOutIn,#PB_Constant) EASING(#Easing_CubicEaseOutIn,i)=CubicEaseOutIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_QuartEaseOut,#PB_Constant) EASING(#Easing_QuartEaseOut,i)=QuartEaseOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_QuartEaseIn,#PB_Constant) EASING(#Easing_QuartEaseIn,i)=QuartEaseIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_QuartEaseInOut,#PB_Constant) EASING(#Easing_QuartEaseInOut,i)=QuartEaseInOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_QuartEaseOutIn,#PB_Constant) EASING(#Easing_QuartEaseOutIn,i)=QuartEaseOutIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_QuintEaseOut,#PB_Constant) EASING(#Easing_QuintEaseOut,i)=QuintEaseOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_QuintEaseIn,#PB_Constant) EASING(#Easing_QuintEaseIn,i)=QuintEaseIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_QuintEaseInOut,#PB_Constant) EASING(#Easing_QuintEaseInOut,i)=QuintEaseInOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_QuintEaseOutIn,#PB_Constant) EASING(#Easing_QuintEaseOutIn,i)=QuintEaseOutIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_CircEaseOut,#PB_Constant) EASING(#Easing_CircEaseOut,i)=CircEaseOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_CircEaseIn,#PB_Constant) EASING(#Easing_CircEaseIn,i)=CircEaseIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_CircEaseInOut,#PB_Constant) EASING(#Easing_CircEaseInOut,i)=CircEaseInOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_CircEaseOutIn,#PB_Constant) EASING(#Easing_CircEaseOutIn,i)=CircEaseOutIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_SineEaseOut,#PB_Constant) EASING(#Easing_SineEaseOut,i)=SineEaseOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_SineEaseIn,#PB_Constant) EASING(#Easing_SineEaseIn,i)=SineEaseIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_SineEaseInOut,#PB_Constant) EASING(#Easing_SineEaseInOut,i)=SineEaseInOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_SineEaseOutIn,#PB_Constant) EASING(#Easing_SineEaseOutIn,i)=SineEaseOutIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_ElasticEaseOut,#PB_Constant) EASING(#Easing_ElasticEaseOut,i)=ElasticEaseOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_ElasticEaseIn,#PB_Constant) EASING(#Easing_ElasticEaseIn,i)=ElasticEaseIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_ElasticEaseInOut,#PB_Constant) EASING(#Easing_ElasticEaseInOut,i)=ElasticEaseInOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_ElasticEaseOutIn,#PB_Constant) EASING(#Easing_ElasticEaseOutIn,i)=ElasticEaseOutIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_BounceEaseOut,#PB_Constant) EASING(#Easing_BounceEaseOut,i)=BounceEaseOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_BounceEaseIn,#PB_Constant) EASING(#Easing_BounceEaseIn,i)=BounceEaseIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_BounceEaseInOut,#PB_Constant) EASING(#Easing_BounceEaseInOut,i)=BounceEaseInOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_BounceEaseOutIn,#PB_Constant) EASING(#Easing_BounceEaseOutIn,i)=BounceEaseOutIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_BackEaseOut,#PB_Constant) EASING(#Easing_BackEaseOut,i)=BackEaseOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_BackEaseIn,#PB_Constant) EASING(#Easing_BackEaseIn,i)=BackEaseIn(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_BackEaseInOut,#PB_Constant) EASING(#Easing_BackEaseInOut,i)=BackEaseInOut(i/#MAX_EASING) CompilerEndIf CompilerIf Defined(Easing_BackEaseOutIn,#PB_Constant) EASING(#Easing_BackEaseOutIn,i)=BackEaseOutIn(i/#MAX_EASING) CompilerEndIf ; CompilerIf Defined(Easing_ElasticEaseOut, #PB_Constant) ; EASING(#Easing_ElasticEaseOut,i)=ElasticEaseOut(i/#MAX_EASING) ; CompilerEndIf Next EndProcedure InitEase() Procedure.F FractionTimer(ExecutionTime, IsPingPong=#False, Duration=1000, LoopDuration=0) If ExecutionTime<0 ; Determines if timer has started ExecutionTime=0 ElseIf ExecutionTime>Duration ; Determines if timer has ended ExecutionTime=Duration EndIf Protected Fraction.f ;Convert to Loop if necessary If LoopDuration Fraction=Mod(ExecutionTime, LoopDuration) / LoopDuration Else Fraction=ExecutionTime / Duration EndIf ;Convert to PingPong if necessary If IsPingPong Fraction=1-Abs(2*Fraction-1) EndIf ProcedureReturn Fraction EndProcedure Procedure.f GetEasingPosValue(StartValue.f, FinishValue.f,StartTime.q, Duration.l, Easing.l) Protected CurrentTime.q=ElapsedMilliseconds()-StartTime Protected i=#MAX_EASING*CurrentTime/Duration Protected Result.f,Distance.f If i<0 Result=0 ElseIf i>#MAX_EASING Result=1 Else Result=EASING(Easing, i);#MAX_EASING EndIf Distance=FinishValue-StartValue Protected.f Position=StartValue+Distance*Result ProcedureReturn Position EndProcedure ; IDE Options = PureBasic 6.00 Beta 6 (Windows - x64) ; CursorPosition = 739 ; FirstLine = 676 ; Folding = --------------------- ; EnableXP