Backporter from Godot 4: Unexpose methods and property for binding children to Bones.

- madmiraal
65faa12fd3
This commit is contained in:
Relintai 2022-08-09 22:05:43 +02:00
parent a478334d4a
commit 0ffa8e33a7
3 changed files with 6 additions and 68 deletions

View File

@ -20,14 +20,6 @@
Adds a bone, with name [code]name[/code]. [method get_bone_count] will become the bone index.
</description>
</method>
<method name="bind_child_node_to_bone">
<return type="void" />
<argument index="0" name="bone_idx" type="int" />
<argument index="1" name="node" type="Node" />
<description>
[i]Deprecated soon.[/i]
</description>
</method>
<method name="bone_transform_to_world_transform">
<return type="Transform">
</return>
@ -129,13 +121,6 @@
Returns the rest transform for a bone [code]bone_idx[/code].
</description>
</method>
<method name="get_bound_child_nodes_to_bone" qualifiers="const">
<return type="Array" />
<argument index="0" name="bone_idx" type="int" />
<description>
[i]Deprecated soon.[/i]
</description>
</method>
<method name="is_bone_rest_disabled" qualifiers="const">
<return type="bool">
</return>
@ -261,14 +246,6 @@
Sets the rest transform for bone [code]bone_idx[/code].
</description>
</method>
<method name="unbind_child_node_from_bone">
<return type="void" />
<argument index="0" name="bone_idx" type="int" />
<argument index="1" name="node" type="Node" />
<description>
[i]Deprecated soon.[/i]
</description>
</method>
<method name="unparent_bone_and_rest">
<return type="void" />
<argument index="0" name="bone_idx" type="int" />

View File

@ -103,20 +103,6 @@ bool Skeleton::_set(const StringName &p_path, const Variant &p_value) {
set_bone_pose_scale(which, p_value);
} else if (what == "pose") {
set_bone_pose(which, p_value);
} else if (what == "bound_children") {
Array children = p_value;
if (is_inside_tree()) {
bones.write[which].nodes_bound.clear();
for (int i = 0; i < children.size(); i++) {
NodePath npath = children[i];
ERR_CONTINUE(npath.operator String() == "");
Node *node = get_node(npath);
ERR_CONTINUE(!node);
bind_child_node_to_bone(which, node);
}
}
} else {
return false;
}
@ -152,19 +138,6 @@ bool Skeleton::_get(const StringName &p_path, Variant &r_ret) const {
r_ret = get_bone_pose_scale(which);
} else if (what == "pose") {
r_ret = get_bone_pose(which);
} else if (what == "bound_children") {
Array children;
for (const List<uint32_t>::Element *E = bones[which].nodes_bound.front(); E; E = E->next()) {
Object *obj = ObjectDB::get_instance(E->get());
ERR_CONTINUE(!obj);
Node *node = Object::cast_to<Node>(obj);
ERR_CONTINUE(!node);
NodePath npath = get_path_to(node);
children.push_back(npath);
}
r_ret = children;
} else {
return false;
}
@ -181,7 +154,6 @@ void Skeleton::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(PropertyInfo(Variant::VECTOR3, prep + "position", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
p_list->push_back(PropertyInfo(Variant::QUAT, prep + "rotation", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
p_list->push_back(PropertyInfo(Variant::VECTOR3, prep + "scale", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
p_list->push_back(PropertyInfo(Variant::ARRAY, prep + "bound_children"));
}
}
@ -419,16 +391,21 @@ void Skeleton::set_bone_global_pose_override(int p_bone, const Transform &p_pose
Transform Skeleton::get_bone_global_pose(int p_bone) const {
ERR_FAIL_INDEX_V(p_bone, bones.size(), Transform());
if (dirty) {
const_cast<Skeleton *>(this)->notification(NOTIFICATION_UPDATE_SKELETON);
}
return bones[p_bone].pose_global;
}
Transform Skeleton::get_bone_global_pose_no_override(int p_bone) const {
ERR_FAIL_INDEX_V(p_bone, bones.size(), Transform());
if (dirty)
if (dirty) {
const_cast<Skeleton *>(this)->notification(NOTIFICATION_UPDATE_SKELETON);
}
return bones[p_bone].pose_global_no_override;
}
@ -1037,10 +1014,6 @@ void Skeleton::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_bone_disable_rest", "bone_idx", "disable"), &Skeleton::set_bone_disable_rest);
ClassDB::bind_method(D_METHOD("is_bone_rest_disabled", "bone_idx"), &Skeleton::is_bone_rest_disabled);
ClassDB::bind_method(D_METHOD("bind_child_node_to_bone", "bone_idx", "node"), &Skeleton::bind_child_node_to_bone);
ClassDB::bind_method(D_METHOD("unbind_child_node_from_bone", "bone_idx", "node"), &Skeleton::unbind_child_node_from_bone);
ClassDB::bind_method(D_METHOD("get_bound_child_nodes_to_bone", "bone_idx"), &Skeleton::_get_bound_child_nodes_to_bone);
ClassDB::bind_method(D_METHOD("clear_bones"), &Skeleton::clear_bones);
ClassDB::bind_method(D_METHOD("set_bone_pose", "bone_idx", "pose"), &Skeleton::set_bone_pose);

View File

@ -144,18 +144,6 @@ private:
uint64_t version;
// bind helpers
Array _get_bound_child_nodes_to_bone(int p_bone) const {
Array bound;
List<Node *> children;
get_bound_child_nodes_to_bone(p_bone, &children);
for (int i = 0; i < children.size(); i++) {
bound.push_back(children[i]);
}
return bound;
}
void _update_process_order();
protected: