AnimationTree: set value track property per frame, not per track.
This commit is contained in:
parent
7d89a8b748
commit
2272824ee2
|
@ -816,16 +816,9 @@ void AnimationTreePlayer::_process_animation(float p_delta) {
|
||||||
if (a->value_track_is_continuous(tr.local_track)) {
|
if (a->value_track_is_continuous(tr.local_track)) {
|
||||||
Variant value = a->value_track_interpolate(tr.local_track,anim_list->time);
|
Variant value = a->value_track_interpolate(tr.local_track,anim_list->time);
|
||||||
Variant::blend(tr.track->value,value,blend,tr.track->value);
|
Variant::blend(tr.track->value,value,blend,tr.track->value);
|
||||||
tr.track->object->set(tr.track->property,tr.track->value);
|
|
||||||
} else {
|
} else {
|
||||||
|
int index = a->track_find_key(tr.local_track,anim_list->time+anim_list->step);
|
||||||
List<int> indices;
|
tr.track->value = a->track_get_key_value(tr.local_track, index);
|
||||||
a->value_track_get_key_indices(tr.local_track,anim_list->time,anim_list->step,&indices);
|
|
||||||
for(List<int>::Element *E=indices.front();E;E=E->next()) {
|
|
||||||
|
|
||||||
Variant value = a->track_get_key_value(tr.local_track,E->get());
|
|
||||||
tr.track->object->set(tr.track->property,value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case Animation::TYPE_METHOD: { ///< Call any method on a specific node.
|
case Animation::TYPE_METHOD: { ///< Call any method on a specific node.
|
||||||
|
@ -857,8 +850,10 @@ void AnimationTreePlayer::_process_animation(float p_delta) {
|
||||||
if (!t.object)
|
if (!t.object)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(t.property) // value track; was applied in step 2
|
if(t.property) { // value track
|
||||||
|
t.object->set(t.property,t.value);
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
Transform xform;
|
Transform xform;
|
||||||
xform.basis=t.rot;
|
xform.basis=t.rot;
|
||||||
|
|
Loading…
Reference in a new issue