@@ -605,12 +605,17 @@ var Tween = new Class({
605605 var tweenData = data [ i ] ;
606606 var target = tweenData . target ;
607607 var gen = tweenData . gen ;
608+ var key = tweenData . key ;
609+ var targetIndex = Math . floor ( totalTargets / i ) ;
610+
611+ // Old function signature: i, totalTargets, target
612+ // New function signature: target, key, value, index, total, tween
608613
609- tweenData . delay = gen . delay ( i , totalTargets , target , this ) ;
610- tweenData . duration = Math . max ( gen . duration ( i , totalTargets , target , this ) , 0.001 ) ;
611- tweenData . hold = gen . hold ( i , totalTargets , target , this ) ;
612- tweenData . repeat = gen . repeat ( i , totalTargets , target , this ) ;
613- tweenData . repeatDelay = gen . repeatDelay ( i , totalTargets , target , this ) ;
614+ tweenData . delay = gen . delay ( target , key , 0 , targetIndex , totalTargets , this ) ;
615+ tweenData . duration = Math . max ( gen . duration ( target , key , 0 , targetIndex , totalTargets , this ) , 0.001 ) ;
616+ tweenData . hold = gen . hold ( target , key , 0 , targetIndex , totalTargets , this ) ;
617+ tweenData . repeat = gen . repeat ( target , key , 0 , targetIndex , totalTargets , this ) ;
618+ tweenData . repeatDelay = gen . repeatDelay ( target , key , 0 , targetIndex , totalTargets , this ) ;
614619 }
615620
616621 this . calcDuration ( ) ;
@@ -796,13 +801,16 @@ var Tween = new Class({
796801 resetTweenData : function ( resetFromLoop )
797802 {
798803 var data = this . data ;
804+ var total = this . totalData ;
805+ var totalTargets = this . totalTargets ;
799806
800- for ( var i = 0 ; i < this . totalData ; i ++ )
807+ for ( var i = 0 ; i < total ; i ++ )
801808 {
802809 var tweenData = data [ i ] ;
803810
804- var key = tweenData . key ;
805811 var target = tweenData . target ;
812+ var key = tweenData . key ;
813+ var targetIndex = Math . floor ( totalTargets / i ) ;
806814
807815 tweenData . progress = 0 ;
808816 tweenData . elapsed = 0 ;
@@ -811,9 +819,9 @@ var Tween = new Class({
811819
812820 if ( resetFromLoop )
813821 {
814- tweenData . start = tweenData . getStartValue ( target , key , tweenData . start ) ;
822+ tweenData . start = tweenData . getStartValue ( target , key , tweenData . start , targetIndex , totalTargets , this ) ;
815823
816- tweenData . end = tweenData . getEndValue ( target , key , tweenData . end ) ;
824+ tweenData . end = tweenData . getEndValue ( target , key , tweenData . end , targetIndex , totalTargets , this ) ;
817825
818826 tweenData . current = tweenData . start ;
819827
@@ -914,22 +922,27 @@ var Tween = new Class({
914922 var tweenData = data [ i ] ;
915923 var target = tweenData . target ;
916924 var gen = tweenData . gen ;
925+ var key = tweenData . key ;
926+ var targetIndex = Math . floor ( totalTargets / i ) ;
917927
918928 tweenData . progress = 0 ;
919929 tweenData . elapsed = 0 ;
920930
921931 tweenData . repeatCounter = ( tweenData . repeat === - 1 ) ? 999999999999 : tweenData . repeat ;
922932
923- tweenData . delay = gen . delay ( i , totalTargets , target ) ;
924- tweenData . duration = Math . max ( gen . duration ( i , totalTargets , target ) , 0.001 ) ;
925- tweenData . hold = gen . hold ( i , totalTargets , target ) ;
926- tweenData . repeat = gen . repeat ( i , totalTargets , target ) ;
927- tweenData . repeatDelay = gen . repeatDelay ( i , totalTargets , target ) ;
933+ // Old function signature: i, totalTargets, target
934+ // New function signature: target, key, value, index, total, tween
935+
936+ tweenData . delay = gen . delay ( target , key , 0 , targetIndex , totalTargets , this ) ;
937+ tweenData . duration = Math . max ( gen . duration ( target , key , 0 , targetIndex , totalTargets , this ) , 0.001 ) ;
938+ tweenData . hold = gen . hold ( target , key , 0 , targetIndex , totalTargets , this ) ;
939+ tweenData . repeat = gen . repeat ( target , key , 0 , targetIndex , totalTargets , this ) ;
940+ tweenData . repeatDelay = gen . repeatDelay ( target , key , 0 , targetIndex , totalTargets , this ) ;
928941
929942 tweenData . current = tweenData . start ;
930943 tweenData . state = TWEEN_CONST . PLAYING_FORWARD ;
931944
932- this . updateTweenData ( this , tweenData , 0 ) ;
945+ this . updateTweenData ( this , tweenData , 0 , targetIndex , totalTargets ) ;
933946
934947 if ( tweenData . delay > 0 )
935948 {
@@ -1149,12 +1162,14 @@ var Tween = new Class({
11491162 }
11501163
11511164 var stillRunning = false ;
1165+ var totalTargets = this . totalTargets ;
11521166
11531167 for ( var i = 0 ; i < this . totalData ; i ++ )
11541168 {
11551169 var tweenData = this . data [ i ] ;
1170+ var targetIndex = Math . floor ( totalTargets / i ) ;
11561171
1157- if ( this . updateTweenData ( this , tweenData , delta ) )
1172+ if ( this . updateTweenData ( this , tweenData , delta , targetIndex , totalTargets ) )
11581173 {
11591174 stillRunning = true ;
11601175 }
@@ -1269,10 +1284,12 @@ var Tween = new Class({
12691284 * @param {Phaser.Tweens.Tween } tween - The Tween to update.
12701285 * @param {Phaser.Types.Tweens.TweenDataConfig } tweenData - The TweenData property to update.
12711286 * @param {number } diff - Any extra time that needs to be accounted for in the elapsed and progress values.
1287+ * @param {integer } targetIndex - The index of the target within the Tween.
1288+ * @param {integer } totalTargets - The total number of targets in this Tween.
12721289 *
12731290 * @return {integer } The state of this Tween.
12741291 */
1275- setStateFromEnd : function ( tween , tweenData , diff )
1292+ setStateFromEnd : function ( tween , tweenData , diff , targetIndex , totalTargets )
12761293 {
12771294 if ( tweenData . yoyo )
12781295 {
@@ -1294,7 +1311,7 @@ var Tween = new Class({
12941311
12951312 this . dispatchTweenDataEvent ( Events . TWEEN_YOYO , tween . callbacks . onYoyo , tweenData ) ;
12961313
1297- tweenData . start = tweenData . getStartValue ( tweenData . target , tweenData . key , tweenData . start ) ;
1314+ tweenData . start = tweenData . getStartValue ( tweenData . target , tweenData . key , tweenData . start , targetIndex , totalTargets , tween ) ;
12981315
12991316 return TWEEN_CONST . PLAYING_BACKWARD ;
13001317 }
@@ -1319,9 +1336,9 @@ var Tween = new Class({
13191336 tweenData . target . toggleFlipY ( ) ;
13201337 }
13211338
1322- tweenData . start = tweenData . getStartValue ( tweenData . target , tweenData . key , tweenData . start ) ;
1339+ tweenData . start = tweenData . getStartValue ( tweenData . target , tweenData . key , tweenData . start , targetIndex , totalTargets , tween ) ;
13231340
1324- tweenData . end = tweenData . getEndValue ( tweenData . target , tweenData . key , tweenData . start ) ;
1341+ tweenData . end = tweenData . getEndValue ( tweenData . target , tweenData . key , tweenData . start , targetIndex , totalTargets , tween ) ;
13251342
13261343 // Delay?
13271344 if ( tweenData . repeatDelay > 0 )
@@ -1355,10 +1372,12 @@ var Tween = new Class({
13551372 * @param {Phaser.Tweens.Tween } tween - The Tween to update.
13561373 * @param {Phaser.Types.Tweens.TweenDataConfig } tweenData - The TweenData property to update.
13571374 * @param {number } diff - Any extra time that needs to be accounted for in the elapsed and progress values.
1375+ * @param {integer } targetIndex - The index of the target within the Tween.
1376+ * @param {integer } totalTargets - The total number of targets in this Tween.
13581377 *
13591378 * @return {integer } The state of this Tween.
13601379 */
1361- setStateFromStart : function ( tween , tweenData , diff )
1380+ setStateFromStart : function ( tween , tweenData , diff , targetIndex , totalTargets )
13621381 {
13631382 if ( tweenData . repeatCounter > 0 )
13641383 {
@@ -1378,7 +1397,7 @@ var Tween = new Class({
13781397 tweenData . target . toggleFlipY ( ) ;
13791398 }
13801399
1381- tweenData . end = tweenData . getEndValue ( tweenData . target , tweenData . key , tweenData . start ) ;
1400+ tweenData . end = tweenData . getEndValue ( tweenData . target , tweenData . key , tweenData . start , targetIndex , totalTargets , tween ) ;
13821401
13831402 // Delay?
13841403 if ( tweenData . repeatDelay > 0 )
@@ -1412,11 +1431,13 @@ var Tween = new Class({
14121431 *
14131432 * @param {Phaser.Tweens.Tween } tween - The Tween to update.
14141433 * @param {Phaser.Types.Tweens.TweenDataConfig } tweenData - The TweenData property to update.
1415- * @param {number } delta - Either a value in ms, or 1 if Tween.useFrames is true
1434+ * @param {number } delta - Either a value in ms, or 1 if Tween.useFrames is true.
1435+ * @param {integer } targetIndex - The index of the target within the Tween.
1436+ * @param {integer } totalTargets - The total number of targets in this Tween.
14161437 *
14171438 * @return {boolean } True if the tween is not complete (e.g., playing), or false if the tween is complete.
14181439 */
1419- updateTweenData : function ( tween , tweenData , delta )
1440+ updateTweenData : function ( tween , tweenData , delta , targetIndex , totalTargets )
14201441 {
14211442 var target = tweenData . target ;
14221443
@@ -1464,15 +1485,15 @@ var Tween = new Class({
14641485 }
14651486 else
14661487 {
1467- tweenData . state = this . setStateFromEnd ( tween , tweenData , diff ) ;
1488+ tweenData . state = this . setStateFromEnd ( tween , tweenData , diff , targetIndex , totalTargets ) ;
14681489 }
14691490 }
14701491 else
14711492 {
14721493 tweenData . current = tweenData . start ;
14731494 target [ tweenData . key ] = tweenData . start ;
14741495
1475- tweenData . state = this . setStateFromStart ( tween , tweenData , diff ) ;
1496+ tweenData . state = this . setStateFromStart ( tween , tweenData , diff , targetIndex , totalTargets ) ;
14761497 }
14771498 }
14781499 else
@@ -1522,7 +1543,7 @@ var Tween = new Class({
15221543
15231544 if ( tweenData . elapsed <= 0 )
15241545 {
1525- tweenData . state = this . setStateFromEnd ( tween , tweenData , Math . abs ( tweenData . elapsed ) ) ;
1546+ tweenData . state = this . setStateFromEnd ( tween , tweenData , Math . abs ( tweenData . elapsed ) , targetIndex , totalTargets ) ;
15261547 }
15271548
15281549 break ;
@@ -1531,9 +1552,9 @@ var Tween = new Class({
15311552
15321553 if ( target )
15331554 {
1534- tweenData . start = tweenData . getStartValue ( target , tweenData . key , target [ tweenData . key ] ) ;
1555+ tweenData . start = tweenData . getStartValue ( target , tweenData . key , target [ tweenData . key ] , targetIndex , totalTargets , tween ) ;
15351556
1536- tweenData . end = tweenData . getEndValue ( target , tweenData . key , tweenData . start ) ;
1557+ tweenData . end = tweenData . getEndValue ( target , tweenData . key , tweenData . start , targetIndex , totalTargets , tween ) ;
15371558
15381559 tweenData . current = tweenData . start ;
15391560
0 commit comments