Optimized TweenData.update to achieve the same result with my less repetition. Also fixes an issue where a Tween that used a custom ease callback would glitch when the final value was set, as it would be set outside of the ease callback. It's now passed through it, no matter what. Fix #6939

This commit is contained in:
Richard Davey 2024-11-14 00:27:57 +00:00
parent ec42bd5aba
commit f9d1b4d5cf
No known key found for this signature in database

View file

@ -305,14 +305,28 @@ var TweenData = new Class({
this.progress = progress; this.progress = progress;
this.previous = this.current; this.previous = this.current;
if (!forward)
{
progress = 1 - progress;
}
var v = this.ease(progress);
if (this.interpolation)
{
this.current = this.interpolation(this.interpolationData, v);
}
else
{
this.current = this.start + ((this.end - this.start) * v);
}
target[key] = this.current;
if (complete) if (complete)
{ {
if (forward) if (forward)
{ {
this.current = this.end;
target[key] = this.end;
if (this.hold > 0) if (this.hold > 0)
{ {
this.elapsed = this.hold; this.elapsed = this.hold;
@ -326,33 +340,9 @@ var TweenData = new Class({
} }
else else
{ {
this.current = this.start;
target[key] = this.start;
this.setStateFromStart(diff); this.setStateFromStart(diff);
} }
} }
else
{
if (!forward)
{
progress = 1 - progress;
}
var v = this.ease(progress);
if (this.interpolation)
{
this.current = this.interpolation(this.interpolationData, v);
}
else
{
this.current = this.start + ((this.end - this.start) * v);
}
target[key] = this.current;
}
this.dispatchEvent(Events.TWEEN_UPDATE, 'onUpdate'); this.dispatchEvent(Events.TWEEN_UPDATE, 'onUpdate');
} }