Skip to content

Commit

Permalink
Fix bug in animationplayer editor not using subproperties properly
Browse files Browse the repository at this point in the history
  • Loading branch information
bojidar-bg authored and malcolmhoward committed Jul 31, 2018
1 parent b00c9d7 commit 16ee201
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 40 deletions.
58 changes: 23 additions & 35 deletions editor/animation_track_editor.cpp
Expand Up @@ -2972,12 +2972,12 @@ PropertyInfo AnimationTrackEditor::_find_hint_for_track(int p_idx, NodePath &r_b
if (res.is_valid()) {
property_info_base = res;
if (r_current_val) {
*r_current_val = res->get(leftover_path[leftover_path.size() - 1]);
*r_current_val = res->get_indexed(leftover_path);
}
} else if (node) {
property_info_base = node;
if (r_current_val) {
*r_current_val = node->get(leftover_path[leftover_path.size() - 1]);
*r_current_val = node->get_indexed(leftover_path);
}
}

Expand Down Expand Up @@ -3011,31 +3011,31 @@ static Vector<String> _get_bezier_subindices_for_type(Variant::Type p_type, bool
subindices.push_back("");
} break;
case Variant::VECTOR2: {
subindices.push_back(".x");
subindices.push_back(".y");
subindices.push_back(":x");
subindices.push_back(":y");
} break;
case Variant::VECTOR3: {
subindices.push_back(".x");
subindices.push_back(".y");
subindices.push_back(".z");
subindices.push_back(":x");
subindices.push_back(":y");
subindices.push_back(":z");
} break;
case Variant::QUAT: {
subindices.push_back(".x");
subindices.push_back(".y");
subindices.push_back(".z");
subindices.push_back(".w");
subindices.push_back(":x");
subindices.push_back(":y");
subindices.push_back(":z");
subindices.push_back(":w");
} break;
case Variant::COLOR: {
subindices.push_back(".r");
subindices.push_back(".g");
subindices.push_back(".b");
subindices.push_back(".a");
subindices.push_back(":r");
subindices.push_back(":g");
subindices.push_back(":b");
subindices.push_back(":a");
} break;
case Variant::PLANE: {
subindices.push_back(".x");
subindices.push_back(".y");
subindices.push_back(".z");
subindices.push_back(".d");
subindices.push_back(":x");
subindices.push_back(":y");
subindices.push_back(":z");
subindices.push_back(":d");
} break;
default: {
if (r_valid) {
Expand Down Expand Up @@ -3246,31 +3246,19 @@ void AnimationTrackEditor::_update_tracks() {

if (root && root->has_node_and_resource(path)) {
RES res;
NodePath base_path;
Vector<StringName> leftover_path;
Node *node = root->get_node_and_resource(path, res, leftover_path, true);
PropertyInfo pinfo = _find_hint_for_track(i, base_path);

Object *object = node;
if (res.is_valid()) {
object = res.ptr();
} else {
object = node;
}

if (object && !leftover_path.empty()) {
//not a property (value track?)
PropertyInfo pinfo;
pinfo.name = leftover_path[leftover_path.size() - 1];
//now let's see if we can get more info about it

List<PropertyInfo> plist;
object->get_property_list(&plist);

for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {

if (E->get().name == leftover_path[leftover_path.size() - 1]) {
pinfo = E->get();
break;
}
if (pinfo.name.empty()) {
pinfo.name = leftover_path[leftover_path.size() - 1];
}

for (int j = 0; j < track_edit_plugins.size(); j++) {
Expand Down
6 changes: 1 addition & 5 deletions scene/animation/animation_player.cpp
Expand Up @@ -331,11 +331,7 @@ void AnimationPlayer::_ensure_node_caches(AnimationData *p_anim) {
if (!p_anim->node_cache[i]->bezier_anim.has(a->track_get_path(i).get_concatenated_subnames())) {

TrackNodeCache::BezierAnim ba;
String path = leftover_path[leftover_path.size() - 1];
Vector<String> index = path.split(".");
for (int j = 0; j < index.size(); j++) {
ba.bezier_property.push_back(index[j]);
}
ba.bezier_property = leftover_path;
ba.object = resource.is_valid() ? (Object *)resource.ptr() : (Object *)child;
ba.owner = p_anim->node_cache[i];

Expand Down

0 comments on commit 16ee201

Please sign in to comment.