Skip to content

Commit b7e0b0e

Browse files
committed
Merge pull request godotengine#89970 from AThousandShips/require_expose
[Animation] Expose `SkeletonProfile.set/is_required`
2 parents 5411608 + 334449d commit b7e0b0e

File tree

4 files changed

+53
-34
lines changed

4 files changed

+53
-34
lines changed

doc/classes/SkeletonProfile.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,14 @@
8383
Returns the texture of the group at [param group_idx] that will be the drawing group background image in the [BoneMap] editor.
8484
</description>
8585
</method>
86+
<method name="is_required" qualifiers="const">
87+
<return type="bool" />
88+
<param index="0" name="bone_idx" type="int" />
89+
<description>
90+
Returns whether the bone at [param bone_idx] is required for retargeting.
91+
This value is used by the bone map editor. If this method returns [code]true[/code], and no bone is assigned, the handle color will be red on the bone map editor.
92+
</description>
93+
</method>
8694
<method name="set_bone_name">
8795
<return type="void" />
8896
<param index="0" name="bone_idx" type="int" />
@@ -141,6 +149,14 @@
141149
Sets the reference pose transform for bone [param bone_idx].
142150
</description>
143151
</method>
152+
<method name="set_required">
153+
<return type="void" />
154+
<param index="0" name="bone_idx" type="int" />
155+
<param index="1" name="required" type="bool" />
156+
<description>
157+
Sets the required status for bone [param bone_idx] to [param required].
158+
</description>
159+
</method>
144160
<method name="set_tail_direction">
145161
<return type="void" />
146162
<param index="0" name="bone_idx" type="int" />

editor/plugins/bone_map_editor_plugin.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ void BoneMapper::recreate_editor() {
421421

422422
for (int i = 0; i < len; i++) {
423423
if (profile->get_group(i) == profile->get_group_name(current_group_idx)) {
424-
BoneMapperButton *mb = memnew(BoneMapperButton(profile->get_bone_name(i), profile->is_require(i), current_bone_idx == i));
424+
BoneMapperButton *mb = memnew(BoneMapperButton(profile->get_bone_name(i), profile->is_required(i), current_bone_idx == i));
425425
mb->connect("pressed", callable_mp(this, &BoneMapper::set_current_bone_idx).bind(i), CONNECT_DEFERRED);
426426
mb->set_h_grow_direction(GROW_DIRECTION_BOTH);
427427
mb->set_v_grow_direction(GROW_DIRECTION_BOTH);

scene/resources/skeleton_profile.cpp

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ bool SkeletonProfile::_set(const StringName &p_path, const Variant &p_value) {
6868
} else if (what == "group") {
6969
set_group(which, p_value);
7070
} else if (what == "require") {
71-
set_require(which, p_value);
71+
set_required(which, p_value);
7272
} else {
7373
return false;
7474
}
@@ -113,7 +113,7 @@ bool SkeletonProfile::_get(const StringName &p_path, Variant &r_ret) const {
113113
} else if (what == "group") {
114114
r_ret = get_group(which);
115115
} else if (what == "require") {
116-
r_ret = is_require(which);
116+
r_ret = is_required(which);
117117
} else {
118118
return false;
119119
}
@@ -299,7 +299,7 @@ SkeletonProfile::TailDirection SkeletonProfile::get_tail_direction(int p_bone_id
299299
return bones[p_bone_idx].tail_direction;
300300
}
301301

302-
void SkeletonProfile::set_tail_direction(int p_bone_idx, const TailDirection p_tail_direction) {
302+
void SkeletonProfile::set_tail_direction(int p_bone_idx, TailDirection p_tail_direction) {
303303
if (is_read_only) {
304304
return;
305305
}
@@ -328,7 +328,7 @@ Transform3D SkeletonProfile::get_reference_pose(int p_bone_idx) const {
328328
return bones[p_bone_idx].reference_pose;
329329
}
330330

331-
void SkeletonProfile::set_reference_pose(int p_bone_idx, const Transform3D p_reference_pose) {
331+
void SkeletonProfile::set_reference_pose(int p_bone_idx, const Transform3D &p_reference_pose) {
332332
if (is_read_only) {
333333
return;
334334
}
@@ -342,7 +342,7 @@ Vector2 SkeletonProfile::get_handle_offset(int p_bone_idx) const {
342342
return bones[p_bone_idx].handle_offset;
343343
}
344344

345-
void SkeletonProfile::set_handle_offset(int p_bone_idx, const Vector2 p_handle_offset) {
345+
void SkeletonProfile::set_handle_offset(int p_bone_idx, const Vector2 &p_handle_offset) {
346346
if (is_read_only) {
347347
return;
348348
}
@@ -365,17 +365,17 @@ void SkeletonProfile::set_group(int p_bone_idx, const StringName &p_group) {
365365
emit_signal("profile_updated");
366366
}
367367

368-
bool SkeletonProfile::is_require(int p_bone_idx) const {
368+
bool SkeletonProfile::is_required(int p_bone_idx) const {
369369
ERR_FAIL_INDEX_V(p_bone_idx, bones.size(), false);
370-
return bones[p_bone_idx].require;
370+
return bones[p_bone_idx].required;
371371
}
372372

373-
void SkeletonProfile::set_require(int p_bone_idx, const bool p_require) {
373+
void SkeletonProfile::set_required(int p_bone_idx, bool p_required) {
374374
if (is_read_only) {
375375
return;
376376
}
377377
ERR_FAIL_INDEX(p_bone_idx, bones.size());
378-
bones.write[p_bone_idx].require = p_require;
378+
bones.write[p_bone_idx].required = p_required;
379379
emit_signal("profile_updated");
380380
}
381381

@@ -432,6 +432,9 @@ void SkeletonProfile::_bind_methods() {
432432
ClassDB::bind_method(D_METHOD("get_group", "bone_idx"), &SkeletonProfile::get_group);
433433
ClassDB::bind_method(D_METHOD("set_group", "bone_idx", "group"), &SkeletonProfile::set_group);
434434

435+
ClassDB::bind_method(D_METHOD("is_required", "bone_idx"), &SkeletonProfile::is_required);
436+
ClassDB::bind_method(D_METHOD("set_required", "bone_idx", "required"), &SkeletonProfile::set_required);
437+
435438
ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "root_bone", PROPERTY_HINT_ENUM_SUGGESTION, ""), "set_root_bone", "get_root_bone");
436439
ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "scale_base_bone", PROPERTY_HINT_ENUM_SUGGESTION, ""), "set_scale_base_bone", "get_scale_base_bone");
437440

@@ -478,14 +481,14 @@ SkeletonProfileHumanoid::SkeletonProfileHumanoid() {
478481
bones.write[1].reference_pose = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.75, 0);
479482
bones.write[1].handle_offset = Vector2(0.5, 0.5);
480483
bones.write[1].group = "Body";
481-
bones.write[1].require = true;
484+
bones.write[1].required = true;
482485

483486
bones.write[2].bone_name = "Spine";
484487
bones.write[2].bone_parent = "Hips";
485488
bones.write[2].reference_pose = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0);
486489
bones.write[2].handle_offset = Vector2(0.5, 0.43);
487490
bones.write[2].group = "Body";
488-
bones.write[2].require = true;
491+
bones.write[2].required = true;
489492

490493
bones.write[3].bone_name = "Chest";
491494
bones.write[3].bone_parent = "Spine";
@@ -506,15 +509,15 @@ SkeletonProfileHumanoid::SkeletonProfileHumanoid() {
506509
bones.write[5].reference_pose = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0);
507510
bones.write[5].handle_offset = Vector2(0.5, 0.23);
508511
bones.write[5].group = "Body";
509-
bones.write[5].require = false;
512+
bones.write[5].required = false;
510513

511514
bones.write[6].bone_name = "Head";
512515
bones.write[6].bone_parent = "Neck";
513516
bones.write[6].tail_direction = TAIL_DIRECTION_END;
514517
bones.write[6].reference_pose = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0);
515518
bones.write[6].handle_offset = Vector2(0.5, 0.18);
516519
bones.write[6].group = "Body";
517-
bones.write[6].require = true;
520+
bones.write[6].required = true;
518521

519522
bones.write[7].bone_name = "LeftEye";
520523
bones.write[7].bone_parent = "Head";
@@ -539,21 +542,21 @@ SkeletonProfileHumanoid::SkeletonProfileHumanoid() {
539542
bones.write[10].reference_pose = Transform3D(0, 1, 0, 0, 0, 1, 1, 0, 0, 0.05, 0.1, 0);
540543
bones.write[10].handle_offset = Vector2(0.55, 0.235);
541544
bones.write[10].group = "Body";
542-
bones.write[10].require = true;
545+
bones.write[10].required = true;
543546

544547
bones.write[11].bone_name = "LeftUpperArm";
545548
bones.write[11].bone_parent = "LeftShoulder";
546549
bones.write[11].reference_pose = Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0.05, 0);
547550
bones.write[11].handle_offset = Vector2(0.6, 0.24);
548551
bones.write[11].group = "Body";
549-
bones.write[11].require = true;
552+
bones.write[11].required = true;
550553

551554
bones.write[12].bone_name = "LeftLowerArm";
552555
bones.write[12].bone_parent = "LeftUpperArm";
553556
bones.write[12].reference_pose = Transform3D(0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0.25, 0);
554557
bones.write[12].handle_offset = Vector2(0.7, 0.24);
555558
bones.write[12].group = "Body";
556-
bones.write[12].require = true;
559+
bones.write[12].required = true;
557560

558561
bones.write[13].bone_name = "LeftHand";
559562
bones.write[13].bone_parent = "LeftLowerArm";
@@ -562,7 +565,7 @@ SkeletonProfileHumanoid::SkeletonProfileHumanoid() {
562565
bones.write[13].reference_pose = Transform3D(0, 0, 1, 0, 1, 0, -1, 0, 0, 0, 0.25, 0);
563566
bones.write[13].handle_offset = Vector2(0.82, 0.235);
564567
bones.write[13].group = "Body";
565-
bones.write[13].require = true;
568+
bones.write[13].required = true;
566569

567570
bones.write[14].bone_name = "LeftThumbMetacarpal";
568571
bones.write[14].bone_parent = "LeftHand";
@@ -659,21 +662,21 @@ SkeletonProfileHumanoid::SkeletonProfileHumanoid() {
659662
bones.write[29].reference_pose = Transform3D(0, -1, 0, 0, 0, 1, -1, 0, 0, -0.05, 0.1, 0);
660663
bones.write[29].handle_offset = Vector2(0.45, 0.235);
661664
bones.write[29].group = "Body";
662-
bones.write[29].require = true;
665+
bones.write[29].required = true;
663666

664667
bones.write[30].bone_name = "RightUpperArm";
665668
bones.write[30].bone_parent = "RightShoulder";
666669
bones.write[30].reference_pose = Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0.05, 0);
667670
bones.write[30].handle_offset = Vector2(0.4, 0.24);
668671
bones.write[30].group = "Body";
669-
bones.write[30].require = true;
672+
bones.write[30].required = true;
670673

671674
bones.write[31].bone_name = "RightLowerArm";
672675
bones.write[31].bone_parent = "RightUpperArm";
673676
bones.write[31].reference_pose = Transform3D(0, 0, 1, 0, 1, 0, -1, 0, 0, 0, 0.25, 0);
674677
bones.write[31].handle_offset = Vector2(0.3, 0.24);
675678
bones.write[31].group = "Body";
676-
bones.write[31].require = true;
679+
bones.write[31].required = true;
677680

678681
bones.write[32].bone_name = "RightHand";
679682
bones.write[32].bone_parent = "RightLowerArm";
@@ -682,7 +685,7 @@ SkeletonProfileHumanoid::SkeletonProfileHumanoid() {
682685
bones.write[32].reference_pose = Transform3D(0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0.25, 0);
683686
bones.write[32].handle_offset = Vector2(0.18, 0.235);
684687
bones.write[32].group = "Body";
685-
bones.write[32].require = true;
688+
bones.write[32].required = true;
686689

687690
bones.write[33].bone_name = "RightThumbMetacarpal";
688691
bones.write[33].bone_parent = "RightHand";
@@ -779,21 +782,21 @@ SkeletonProfileHumanoid::SkeletonProfileHumanoid() {
779782
bones.write[48].reference_pose = Transform3D(-1, 0, 0, 0, -1, 0, 0, 0, 1, 0.1, 0, 0);
780783
bones.write[48].handle_offset = Vector2(0.549, 0.49);
781784
bones.write[48].group = "Body";
782-
bones.write[48].require = true;
785+
bones.write[48].required = true;
783786

784787
bones.write[49].bone_name = "LeftLowerLeg";
785788
bones.write[49].bone_parent = "LeftUpperLeg";
786789
bones.write[49].reference_pose = Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0.375, 0);
787790
bones.write[49].handle_offset = Vector2(0.548, 0.683);
788791
bones.write[49].group = "Body";
789-
bones.write[49].require = true;
792+
bones.write[49].required = true;
790793

791794
bones.write[50].bone_name = "LeftFoot";
792795
bones.write[50].bone_parent = "LeftLowerLeg";
793796
bones.write[50].reference_pose = Transform3D(-1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0.375, 0);
794797
bones.write[50].handle_offset = Vector2(0.545, 0.9);
795798
bones.write[50].group = "Body";
796-
bones.write[50].require = true;
799+
bones.write[50].required = true;
797800

798801
bones.write[51].bone_name = "LeftToes";
799802
bones.write[51].bone_parent = "LeftFoot";
@@ -806,21 +809,21 @@ SkeletonProfileHumanoid::SkeletonProfileHumanoid() {
806809
bones.write[52].reference_pose = Transform3D(-1, 0, 0, 0, -1, 0, 0, 0, 1, -0.1, 0, 0);
807810
bones.write[52].handle_offset = Vector2(0.451, 0.49);
808811
bones.write[52].group = "Body";
809-
bones.write[52].require = true;
812+
bones.write[52].required = true;
810813

811814
bones.write[53].bone_name = "RightLowerLeg";
812815
bones.write[53].bone_parent = "RightUpperLeg";
813816
bones.write[53].reference_pose = Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0.375, 0);
814817
bones.write[53].handle_offset = Vector2(0.452, 0.683);
815818
bones.write[53].group = "Body";
816-
bones.write[53].require = true;
819+
bones.write[53].required = true;
817820

818821
bones.write[54].bone_name = "RightFoot";
819822
bones.write[54].bone_parent = "RightLowerLeg";
820823
bones.write[54].reference_pose = Transform3D(-1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0.375, 0);
821824
bones.write[54].handle_offset = Vector2(0.455, 0.9);
822825
bones.write[54].group = "Body";
823-
bones.write[54].require = true;
826+
bones.write[54].required = true;
824827

825828
bones.write[55].bone_name = "RightToes";
826829
bones.write[55].bone_parent = "RightFoot";

scene/resources/skeleton_profile.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class SkeletonProfile : public Resource {
6161
Transform3D reference_pose;
6262
Vector2 handle_offset;
6363
StringName group;
64-
bool require = false;
64+
bool required = false;
6565
};
6666

6767
StringName root_bone;
@@ -104,22 +104,22 @@ class SkeletonProfile : public Resource {
104104
void set_bone_parent(int p_bone_idx, const StringName &p_bone_parent);
105105

106106
TailDirection get_tail_direction(int p_bone_idx) const;
107-
void set_tail_direction(int p_bone_idx, const TailDirection p_tail_direction);
107+
void set_tail_direction(int p_bone_idx, TailDirection p_tail_direction);
108108

109109
StringName get_bone_tail(int p_bone_idx) const;
110110
void set_bone_tail(int p_bone_idx, const StringName &p_bone_tail);
111111

112112
Transform3D get_reference_pose(int p_bone_idx) const;
113-
void set_reference_pose(int p_bone_idx, const Transform3D p_reference_pose);
113+
void set_reference_pose(int p_bone_idx, const Transform3D &p_reference_pose);
114114

115115
Vector2 get_handle_offset(int p_bone_idx) const;
116-
void set_handle_offset(int p_bone_idx, const Vector2 p_handle_offset);
116+
void set_handle_offset(int p_bone_idx, const Vector2 &p_handle_offset);
117117

118118
StringName get_group(int p_bone_idx) const;
119119
void set_group(int p_bone_idx, const StringName &p_group);
120120

121-
bool is_require(int p_bone_idx) const;
122-
void set_require(int p_bone_idx, const bool p_require);
121+
bool is_required(int p_bone_idx) const;
122+
void set_required(int p_bone_idx, bool p_required);
123123

124124
bool has_bone(const StringName &p_bone_name);
125125

0 commit comments

Comments
 (0)