Skip to content

Commit 293c28b

Browse files
committed
LoadValue functions now take new arguments and updated types and docs
1 parent 4baf88b commit 293c28b

6 files changed

Lines changed: 65 additions & 35 deletions

File tree

src/tweens/builders/GetNewValue.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ var GetNewValue = function (source, key, defaultValue)
2727

2828
if (t === 'function')
2929
{
30-
valueCallback = function (index, totalTargets, target)
30+
valueCallback = function (target, targetKey, value, targetIndex, totalTargets, tween)
3131
{
32-
return source[key](index, totalTargets, target);
32+
return source[key](target, targetKey, value, targetIndex, totalTargets, tween);
3333
};
3434
}
3535
else

src/tweens/builders/GetValueOp.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ var GetValueOp = function (key, propertyValue)
145145
// The same as setting just the getEnd function and no getStart
146146

147147
// props: {
148-
// x: function (target, key, value, index, totalTargets, tween) { return value + 50); },
148+
// x: function (target, key, value, targetIndex, totalTargets, tween) { return value + 50); },
149149
// }
150150

151151
getEnd = propertyValue;
@@ -157,19 +157,19 @@ var GetValueOp = function (key, propertyValue)
157157
/*
158158
x: {
159159
// Called the moment Tween is active. The returned value sets the property on the target immediately.
160-
getActive: function (target, key, value, index, totalTargets, tween)
160+
getActive: function (target, key, value, targetIndex, totalTargets, tween)
161161
{
162162
return value;
163163
},
164164
165165
// Called at the start of the Tween. The returned value sets what the property will be at the END of the Tween.
166-
getEnd: function (target, key, value, index, totalTargets, tween)
166+
getEnd: function (target, key, value, targetIndex, totalTargets, tween)
167167
{
168168
return value;
169169
},
170170
171171
// Called at the end of the Tween. The returned value sets what the property will be at the START of the Tween.
172-
getStart: function (target, key, value, index, totalTargets, tween)
172+
getStart: function (target, key, value, targetIndex, totalTargets, tween)
173173
{
174174
return value;
175175
}

src/tweens/tween/Tween.js

Lines changed: 50 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -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

src/tweens/typedefs/GetActiveCallback.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
* @param {any} target - The tween target.
66
* @param {string} key - The target property.
77
* @param {number} value - The current value of the target property.
8+
* @param {integer} targetIndex - The index of the target within the Tween.
9+
* @param {integer} totalTargets - The total number of targets in this Tween.
10+
* @param {Phaser.Tweens.Tween} tween - The Tween that invoked this callback.
811
*
912
* @return {number} - The new value.
1013
*/

src/tweens/typedefs/GetEndCallback.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
* @param {any} target - The tween target.
66
* @param {string} key - The target property.
77
* @param {number} value - The current value of the target property.
8+
* @param {integer} targetIndex - The index of the target within the Tween.
9+
* @param {integer} totalTargets - The total number of targets in this Tween.
10+
* @param {Phaser.Tweens.Tween} tween - The Tween that invoked this callback.
811
*
912
* @return {number} - The new value.
1013
*/

src/tweens/typedefs/GetStartCallback.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
* @param {any} target - The tween target.
66
* @param {string} key - The target property.
77
* @param {number} value - The current value of the target property.
8+
* @param {integer} targetIndex - The index of the target within the Tween.
9+
* @param {integer} totalTargets - The total number of targets in this Tween.
10+
* @param {Phaser.Tweens.Tween} tween - The Tween that invoked this callback.
811
*
912
* @return {number} - The new value.
1013
*/

0 commit comments

Comments
 (0)