mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2025-03-31 01:05:29 +02:00
Make AnimationNodeBlendTree use OrderedHashMap insteads Map
This commit is contained in:
parent
d0972a7e36
commit
8d4078b7b5
@ -849,7 +849,7 @@ Ref<AnimationNode> AnimationNodeBlendTree::get_node(const StringName &p_name) co
|
|||||||
}
|
}
|
||||||
|
|
||||||
StringName AnimationNodeBlendTree::get_node_name(const Ref<AnimationNode> &p_node) const {
|
StringName AnimationNodeBlendTree::get_node_name(const Ref<AnimationNode> &p_node) const {
|
||||||
for (RBMap<StringName, Node>::Element *E = nodes.front(); E; E = E->next()) {
|
for (NodeMap::Element *E = nodes.front(); E; E = E->next()) {
|
||||||
if (E->get().node == p_node) {
|
if (E->get().node == p_node) {
|
||||||
return E->key();
|
return E->key();
|
||||||
}
|
}
|
||||||
@ -871,12 +871,10 @@ Vector2 AnimationNodeBlendTree::get_node_position(const StringName &p_node) cons
|
|||||||
void AnimationNodeBlendTree::get_child_nodes(List<ChildNode> *r_child_nodes) {
|
void AnimationNodeBlendTree::get_child_nodes(List<ChildNode> *r_child_nodes) {
|
||||||
Vector<StringName> ns;
|
Vector<StringName> ns;
|
||||||
|
|
||||||
for (RBMap<StringName, Node>::Element *E = nodes.front(); E; E = E->next()) {
|
for (NodeMap::Element *E = nodes.front(); E; E = E->next()) {
|
||||||
ns.push_back(E->key());
|
ns.push_back(E->key());
|
||||||
}
|
}
|
||||||
|
|
||||||
ns.sort_custom<StringName::AlphCompare>();
|
|
||||||
|
|
||||||
for (int i = 0; i < ns.size(); i++) {
|
for (int i = 0; i < ns.size(); i++) {
|
||||||
ChildNode cn;
|
ChildNode cn;
|
||||||
cn.name = ns[i];
|
cn.name = ns[i];
|
||||||
@ -905,7 +903,7 @@ void AnimationNodeBlendTree::remove_node(const StringName &p_name) {
|
|||||||
nodes.erase(p_name);
|
nodes.erase(p_name);
|
||||||
|
|
||||||
//erase connections to name
|
//erase connections to name
|
||||||
for (RBMap<StringName, Node>::Element *E = nodes.front(); E; E = E->next()) {
|
for (NodeMap::Element *E = nodes.front(); E; E = E->next()) {
|
||||||
for (int i = 0; i < E->get().connections.size(); i++) {
|
for (int i = 0; i < E->get().connections.size(); i++) {
|
||||||
if (E->get().connections[i] == p_name) {
|
if (E->get().connections[i] == p_name) {
|
||||||
E->get().connections.write[i] = StringName();
|
E->get().connections.write[i] = StringName();
|
||||||
@ -929,7 +927,7 @@ void AnimationNodeBlendTree::rename_node(const StringName &p_name, const StringN
|
|||||||
nodes.erase(p_name);
|
nodes.erase(p_name);
|
||||||
|
|
||||||
//rename connections
|
//rename connections
|
||||||
for (RBMap<StringName, Node>::Element *E = nodes.front(); E; E = E->next()) {
|
for (NodeMap::Element *E = nodes.front(); E; E = E->next()) {
|
||||||
for (int i = 0; i < E->get().connections.size(); i++) {
|
for (int i = 0; i < E->get().connections.size(); i++) {
|
||||||
if (E->get().connections[i] == p_name) {
|
if (E->get().connections[i] == p_name) {
|
||||||
E->get().connections.write[i] = p_new_name;
|
E->get().connections.write[i] = p_new_name;
|
||||||
@ -951,7 +949,7 @@ void AnimationNodeBlendTree::connect_node(const StringName &p_input_node, int p_
|
|||||||
Ref<AnimationNode> input = nodes[p_input_node].node;
|
Ref<AnimationNode> input = nodes[p_input_node].node;
|
||||||
ERR_FAIL_INDEX(p_input_index, nodes[p_input_node].connections.size());
|
ERR_FAIL_INDEX(p_input_index, nodes[p_input_node].connections.size());
|
||||||
|
|
||||||
for (RBMap<StringName, Node>::Element *E = nodes.front(); E; E = E->next()) {
|
for (NodeMap::Element *E = nodes.front(); E; E = E->next()) {
|
||||||
for (int i = 0; i < E->get().connections.size(); i++) {
|
for (int i = 0; i < E->get().connections.size(); i++) {
|
||||||
StringName output = E->get().connections[i];
|
StringName output = E->get().connections[i];
|
||||||
ERR_FAIL_COND(output == p_output_node);
|
ERR_FAIL_COND(output == p_output_node);
|
||||||
@ -995,7 +993,7 @@ AnimationNodeBlendTree::ConnectionError AnimationNodeBlendTree::can_connect_node
|
|||||||
return CONNECTION_ERROR_CONNECTION_EXISTS;
|
return CONNECTION_ERROR_CONNECTION_EXISTS;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (RBMap<StringName, Node>::Element *E = nodes.front(); E; E = E->next()) {
|
for (NodeMap::Element *E = nodes.front(); E; E = E->next()) {
|
||||||
for (int i = 0; i < E->get().connections.size(); i++) {
|
for (int i = 0; i < E->get().connections.size(); i++) {
|
||||||
StringName output = E->get().connections[i];
|
StringName output = E->get().connections[i];
|
||||||
if (output == p_output_node) {
|
if (output == p_output_node) {
|
||||||
@ -1007,7 +1005,7 @@ AnimationNodeBlendTree::ConnectionError AnimationNodeBlendTree::can_connect_node
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AnimationNodeBlendTree::get_node_connections(List<NodeConnection> *r_connections) const {
|
void AnimationNodeBlendTree::get_node_connections(List<NodeConnection> *r_connections) const {
|
||||||
for (RBMap<StringName, Node>::Element *E = nodes.front(); E; E = E->next()) {
|
for (NodeMap::Element *E = nodes.front(); E; E = E->next()) {
|
||||||
for (int i = 0; i < E->get().connections.size(); i++) {
|
for (int i = 0; i < E->get().connections.size(); i++) {
|
||||||
StringName output = E->get().connections[i];
|
StringName output = E->get().connections[i];
|
||||||
if (output != StringName()) {
|
if (output != StringName()) {
|
||||||
@ -1031,7 +1029,7 @@ float AnimationNodeBlendTree::process(float p_time, bool p_seek) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AnimationNodeBlendTree::get_node_list(List<StringName> *r_list) {
|
void AnimationNodeBlendTree::get_node_list(List<StringName> *r_list) {
|
||||||
for (RBMap<StringName, Node>::Element *E = nodes.front(); E; E = E->next()) {
|
for (NodeMap::Element *E = nodes.front(); E; E = E->next()) {
|
||||||
r_list->push_back(E->key());
|
r_list->push_back(E->key());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1122,10 +1120,9 @@ bool AnimationNodeBlendTree::_get(const StringName &p_name, Variant &r_ret) cons
|
|||||||
}
|
}
|
||||||
void AnimationNodeBlendTree::_get_property_list(List<PropertyInfo> *p_list) const {
|
void AnimationNodeBlendTree::_get_property_list(List<PropertyInfo> *p_list) const {
|
||||||
List<StringName> names;
|
List<StringName> names;
|
||||||
for (RBMap<StringName, Node>::Element *E = nodes.front(); E; E = E->next()) {
|
for (NodeMap::Element *E = nodes.front(); E; E = E->next()) {
|
||||||
names.push_back(E->key());
|
names.push_back(E->key());
|
||||||
}
|
}
|
||||||
names.sort_custom<StringName::AlphCompare>();
|
|
||||||
|
|
||||||
for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
|
for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
|
||||||
String name = E->get();
|
String name = E->get();
|
||||||
|
@ -338,7 +338,8 @@ class AnimationNodeBlendTree : public AnimationRootNode {
|
|||||||
Vector<StringName> connections;
|
Vector<StringName> connections;
|
||||||
};
|
};
|
||||||
|
|
||||||
RBMap<StringName, Node> nodes;
|
typedef RBMap<StringName, Node, StringName::AlphCompare> NodeMap;
|
||||||
|
NodeMap nodes;
|
||||||
|
|
||||||
Vector2 graph_offset;
|
Vector2 graph_offset;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user