Skip to content

Commit

Permalink
Fix AnimationPlayer value track not calling set_xx
Browse files Browse the repository at this point in the history
  • Loading branch information
pixelpicosean committed Mar 30, 2021
1 parent 3e1a5dc commit 768d859
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 10 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,4 @@ node_modules

*.import
.idea/workspace.xml
src/gen/data_debug.json
19 changes: 9 additions & 10 deletions src/engine/scene/animation/animation_player.ts
Original file line number Diff line number Diff line change
Expand Up @@ -480,22 +480,21 @@ function interpolate_track_on_node(nc: NodeCache, anim: Animation, track: ValueT
};
}
}
/**
* @param {NodeCache} nc
* @param {Animation} anim
* @param {ValueTrack} track
* @param {number} time
* @param {boolean} loop_wrap
*/
function immediate_track_on_node(nc: NodeCache, anim: Animation, track: ValueTrack, time: number, loop_wrap: boolean) {
function immediate_track_on_node(nc: NodeCache, anim: Animation, track: ValueTrack, time: number, loop_wrap: boolean, setter_cache: { [s: string]: Function; }) {
let keys = track.values;
let idx = find_track_key(keys, time);

if (idx === -2) {
return;
}

apply_immediate_value(nc, track.prop_type, track.prop_key, keys[idx].value);
const setter = setter_cache[track.path];

if (setter) {
apply_immediate_value_with_setter(nc, track.prop_type, setter, keys[idx].value);
} else {
apply_immediate_value(nc, track.prop_type, track.prop_key, keys[idx].value);
}
}

class AnimationData {
Expand Down Expand Up @@ -1195,7 +1194,7 @@ export class AnimationPlayer extends Node {
if (update_mode === UPDATE_CONTINUOUS || update_mode === UPDATE_CAPTURE || (equals(p_delta, 0) && update_mode === UPDATE_DISCRETE)) { // delta == 0 means seek
interpolate_track_on_node(nc, a, t, p_time, update_mode === UPDATE_CONTINUOUS ? t.interp : INTERPOLATION_NEAREST, t.loop_wrap, p_anim.setter_cache);
} else if (is_current && !equals(p_delta, CMP_EPSILON)) {
immediate_track_on_node(nc, a, t, p_time, t.loop_wrap);
immediate_track_on_node(nc, a, t, p_time, t.loop_wrap, p_anim.setter_cache);
}
} break;
case TRACK_TYPE_METHOD: {
Expand Down

0 comments on commit 768d859

Please sign in to comment.