11var TWEEN_CONST = require ( '../const' ) ;
22
3- // Merge with Backwards and include in update?
4- var Forward = function ( tween , tweenData , delta )
5- {
6- var elapsed = tweenData . elapsed ;
7- var duration = tweenData . duration ;
8-
9- elapsed += delta ;
10-
11- if ( elapsed > duration )
12- {
13- elapsed = duration ;
14- }
15-
16- var progress = elapsed / duration ;
17-
18- var p = tweenData . ease ( progress ) ;
19-
20- // Optimize
21- tween . current = tween . start + ( ( tween . end - tween . start ) * p ) ;
22-
23- tween . target [ tween . key ] = tween . current ;
24-
25- tweenData . elapsed = elapsed ;
26- tweenData . progress = progress ;
27-
28- if ( progress === 1 )
29- {
30- tweenData . state = ProcessRepeat ( tween , tweenData ) ;
31- }
32- } ;
33-
34- var Backward = function ( tween , tweenData , delta )
35- {
36- var elapsed = tweenData . elapsed ;
37- var duration = tweenData . duration ;
38-
39- elapsed += delta ;
40-
41- if ( elapsed > duration )
42- {
43- elapsed = duration ;
44- }
45-
46- var progress = elapsed / duration ;
47-
48- var p = tweenData . ease ( 1 - progress ) ;
49-
50- // Optimize
51- tween . current = tween . start + ( ( tween . end - tween . start ) * p ) ;
52-
53- tween . target [ tween . key ] = tween . current ;
54-
55- tweenData . elapsed = elapsed ;
56- tweenData . progress = progress ;
57-
58- if ( progress === 1 )
59- {
60- tweenData . state = ProcessRepeat ( tween , tweenData ) ;
61- }
62- } ;
63-
643// TweenData has reached the end. Now it needs to decide what action to take.
654// It can either hold, yoyo, repeat or complete.
66- var ProcessRepeat = function ( tween , tweenData )
5+ var ProcessRepeat = function ( tween , tweenData , skipHold )
676{
687 // Do we hold?
69- if ( tweenData . hold > 0 )
8+ if ( tweenData . hold > 0 && skipHold === false )
709 {
7110 tweenData . elapsed = tweenData . hold ;
7211
7312 return TWEEN_CONST . HOLD ;
7413 }
75- else if ( tweenData . state === TWEEN_CONST . PLAYING_FORWARD && tweenData . yoyo )
14+ else if ( tweenData . yoyo && tweenData . state === TWEEN_CONST . PLAYING_FORWARD )
7615 {
7716 // Playing forward and we have a yoyo
7817
@@ -115,12 +54,53 @@ var UpdateTweenData = function (tween, tweenData, timestep, delta)
11554{
11655 switch ( tweenData . state )
11756 {
57+ case TWEEN_CONST . PLAYING_FORWARD :
58+ case TWEEN_CONST . PLAYING_BACKWARD :
59+
60+ var elapsed = tweenData . elapsed ;
61+ var duration = tweenData . duration ;
62+
63+ elapsed += delta ;
64+
65+ if ( elapsed > duration )
66+ {
67+ elapsed = duration ;
68+ }
69+
70+ var progress = elapsed / duration ;
71+ var v ;
72+
73+ if ( tweenData . state === TWEEN_CONST . PLAYING_BACKWARD )
74+ {
75+ v = tweenData . ease ( 1 - progress ) ;
76+ }
77+ else
78+ {
79+ v = tweenData . ease ( progress ) ;
80+ }
81+
82+ tween . current = tween . start + ( ( tween . end - tween . start ) * v ) ;
83+
84+ tween . target [ tween . key ] = tween . current ;
85+
86+ tweenData . elapsed = elapsed ;
87+ tweenData . progress = progress ;
88+
89+ if ( progress === 1 )
90+ {
91+ tweenData . state = ProcessRepeat ( tween , tweenData , false ) ;
92+ }
93+
94+ break ;
95+
11896 case TWEEN_CONST . DELAY :
11997
12098 tweenData . elapsed -= delta ;
12199
122100 if ( tweenData . elapsed <= 0 )
123101 {
102+ // TODO - Move elapsed block below switch statement
103+ // so that calls to render and play happen this frame, not the next one?
124104 tweenData . elapsed = 0 ;
125105 tweenData . state = TWEEN_CONST . PENDING_RENDER ;
126106 }
@@ -145,9 +125,8 @@ var UpdateTweenData = function (tween, tweenData, timestep, delta)
145125
146126 if ( tweenData . elapsed <= 0 )
147127 {
148- tweenData . elapsed = 0 ;
149- // yoyo, repeat or complete
150- // tweenData.state = TWEEN_CONST.PENDING_RENDER;
128+ tweenData . state = TWEEN_CONST . PLAYING_FORWARD ;
129+ tweenData . state = ProcessRepeat ( tween , tweenData , true ) ;
151130 }
152131
153132 break ;
@@ -157,18 +136,6 @@ var UpdateTweenData = function (tween, tweenData, timestep, delta)
157136 tween . loadValues ( ) ;
158137 tweenData . state = TWEEN_CONST . PLAYING_FORWARD ;
159138
160- break ;
161-
162- case TWEEN_CONST . PLAYING_FORWARD :
163-
164- Forward ( tween , tweenData , delta ) ;
165-
166- break ;
167-
168- case TWEEN_CONST . PLAYING_BACKWARD :
169-
170- Backward ( tween , tweenData , delta ) ;
171-
172139 break ;
173140 }
174141
0 commit comments