|
1 | 1 | // var TWEEN_CONST = require('../const'); |
2 | 2 |
|
3 | 3 | // For now progress = 0 to 1 |
4 | | -var Seek = function (progress) |
| 4 | +var Seek = function (toPosition) |
5 | 5 | { |
6 | | - var marker = this.totalDuration * progress; |
7 | | - |
8 | 6 | var data = this.data; |
9 | 7 |
|
10 | | - // Now works on multi-property tweens with varying durations, but doesn't yet factor in delays |
11 | 8 | for (var i = 0; i < this.totalData; i++) |
12 | 9 | { |
| 10 | + // This won't work with loop > 0 yet |
| 11 | + var ms = this.totalDuration * toPosition; |
| 12 | + |
13 | 13 | var tweenData = data[i]; |
| 14 | + var progress; |
| 15 | + var elapsed; |
14 | 16 |
|
15 | | - if (marker >= tweenData.duration) |
| 17 | + if (ms <= tweenData.delay) |
| 18 | + { |
| 19 | + progress = 0; |
| 20 | + elapsed = 0; |
| 21 | + } |
| 22 | + else if (ms >= tweenData.totalDuration) |
16 | 23 | { |
17 | | - tweenData.progress = 1; |
18 | | - tweenData.elapsed = tweenData.duration; |
| 24 | + progress = 1; |
| 25 | + elapsed = tweenData.duration; |
| 26 | + } |
| 27 | + else if (ms > tweenData.delay && ms <= tweenData.t1) |
| 28 | + { |
| 29 | + // Keep it zero bound |
| 30 | + ms = Math.max(0, ms - tweenData.delay); |
| 31 | + |
| 32 | + // Somewhere in the first playthru range |
| 33 | + progress = ms / tweenData.t1; |
| 34 | + elapsed = tweenData.duration * progress; |
19 | 35 | } |
20 | 36 | else |
21 | 37 | { |
22 | | - tweenData.progress = marker / tweenData.duration; |
23 | | - tweenData.elapsed = marker; |
| 38 | + // Somewhere in repeat land |
24 | 39 | } |
25 | 40 |
|
| 41 | + tweenData.progress = progress; |
| 42 | + tweenData.elapsed = elapsed; |
| 43 | + |
26 | 44 | var v = tweenData.ease(tweenData.progress); |
27 | 45 |
|
28 | 46 | tweenData.current = tweenData.start + ((tweenData.end - tweenData.start) * v); |
|
0 commit comments