Skip to content

Commit

Permalink
Merge pull request #86884 from Mickeon/autocompletion-AnimationNodeSt…
Browse files Browse the repository at this point in the history
…ateMachine

Add Autocompletion for AnimationNodeStateMachine & AnimationNodeBlendTree
  • Loading branch information
akien-mga committed Feb 12, 2024
2 parents 9b189d2 + e5c1da1 commit 2853b57
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 0 deletions.
16 changes: 16 additions & 0 deletions scene/animation/animation_blend_tree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1544,6 +1544,22 @@ void AnimationNodeBlendTree::_node_changed(const StringName &p_node) {
emit_signal(SNAME("node_changed"), p_node);
}

void AnimationNodeBlendTree::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
String pf = p_function;
bool add_node_options = false;
if (p_idx == 0) {
add_node_options = (pf == "get_node" || pf == "has_node" || pf == "rename_node" || pf == "remove_node" || pf == "set_node_position" || pf == "get_node_position" || pf == "connect_node" || pf == "disconnect_node");
} else if (p_idx == 2) {
add_node_options = (pf == "connect_node" || pf == "disconnect_node");
}
if (add_node_options) {
for (KeyValue<StringName, Node> E : nodes) {
r_options->push_back(String(E.key).quote());
}
}
AnimationRootNode::get_argument_options(p_function, p_idx, r_options);
}

void AnimationNodeBlendTree::_bind_methods() {
ClassDB::bind_method(D_METHOD("add_node", "name", "node", "position"), &AnimationNodeBlendTree::add_node, DEFVAL(Vector2()));
ClassDB::bind_method(D_METHOD("get_node", "name"), &AnimationNodeBlendTree::get_node);
Expand Down
2 changes: 2 additions & 0 deletions scene/animation/animation_blend_tree.h
Original file line number Diff line number Diff line change
Expand Up @@ -454,6 +454,8 @@ class AnimationNodeBlendTree : public AnimationRootNode {

virtual Ref<AnimationNode> get_child_by_name(const StringName &p_name) const override;

virtual void get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const override;

AnimationNodeBlendTree();
~AnimationNodeBlendTree();
};
Expand Down
16 changes: 16 additions & 0 deletions scene/animation/animation_node_state_machine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1793,6 +1793,22 @@ void AnimationNodeStateMachine::_animation_node_removed(const ObjectID &p_oid, c
AnimationRootNode::_animation_node_removed(p_oid, p_node);
}

void AnimationNodeStateMachine::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
String pf = p_function;
bool add_state_options = false;
if (p_idx == 0) {
add_state_options = (pf == "get_node" || pf == "has_node" || pf == "rename_node" || pf == "remove_node" || pf == "replace_node" || pf == "set_node_position" || pf == "get_node_position");
} else if (p_idx <= 1) {
add_state_options = (pf == "has_transition" || pf == "add_transition" || pf == "remove_transition");
}
if (add_state_options) {
for (KeyValue<StringName, State> E : states) {
r_options->push_back(String(E.key).quote());
}
}
AnimationRootNode::get_argument_options(p_function, p_idx, r_options);
}

void AnimationNodeStateMachine::_bind_methods() {
ClassDB::bind_method(D_METHOD("add_node", "name", "node", "position"), &AnimationNodeStateMachine::add_node, DEFVAL(Vector2()));
ClassDB::bind_method(D_METHOD("replace_node", "name", "node"), &AnimationNodeStateMachine::replace_node);
Expand Down
2 changes: 2 additions & 0 deletions scene/animation/animation_node_state_machine.h
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,8 @@ class AnimationNodeStateMachine : public AnimationRootNode {

virtual Ref<AnimationNode> get_child_by_name(const StringName &p_name) const override;

virtual void get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const override;

AnimationNodeStateMachine();
};

Expand Down

0 comments on commit 2853b57

Please sign in to comment.