summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThaddeus Crews <repiteo@outlook.com>2024-11-19 15:20:11 -0600
committerThaddeus Crews <repiteo@outlook.com>2024-11-19 15:20:11 -0600
commit1680edb2cda73aa8fe1dbb83ec3d059c4999be7c (patch)
treeaf2c9aa43091b02613e796a3cd80dd41f9b69659
parente4dbba94d9019dddc620b0c0c71f265dd857bb51 (diff)
parentb0e04c1e7a01d24953e56ff019dc1e0e8fe8cc6d (diff)
downloadredot-engine-1680edb2cda73aa8fe1dbb83ec3d059c4999be7c.tar.gz
Merge pull request #99231 from fire/sort-blendshapes-by-id
Sort blend shapes in the inspector by ID instead of alphabetically
-rw-r--r--scene/3d/mesh_instance_3d.cpp15
1 files changed, 5 insertions, 10 deletions
diff --git a/scene/3d/mesh_instance_3d.cpp b/scene/3d/mesh_instance_3d.cpp
index f551cb401c..14bc22a217 100644
--- a/scene/3d/mesh_instance_3d.cpp
+++ b/scene/3d/mesh_instance_3d.cpp
@@ -87,17 +87,9 @@ bool MeshInstance3D::_get(const StringName &p_name, Variant &r_ret) const {
}
void MeshInstance3D::_get_property_list(List<PropertyInfo> *p_list) const {
- List<String> ls;
- for (const KeyValue<StringName, int> &E : blend_shape_properties) {
- ls.push_back(E.key);
- }
-
- ls.sort();
-
- for (const String &E : ls) {
- p_list->push_back(PropertyInfo(Variant::FLOAT, E, PROPERTY_HINT_RANGE, "-1,1,0.00001"));
+ for (uint32_t i = 0; i < blend_shape_tracks.size(); i++) {
+ p_list->push_back(PropertyInfo(Variant::FLOAT, vformat("blend_shapes/%s", String(mesh->get_blend_shape_name(i))), PROPERTY_HINT_RANGE, "-1,1,0.00001"));
}
-
if (mesh.is_valid()) {
for (int i = 0; i < mesh->get_surface_count(); i++) {
p_list->push_back(PropertyInfo(Variant::OBJECT, vformat("%s/%d", PNAME("surface_material_override"), i), PROPERTY_HINT_RESOURCE_TYPE, "BaseMaterial3D,ShaderMaterial", PROPERTY_USAGE_DEFAULT));
@@ -142,6 +134,7 @@ int MeshInstance3D::get_blend_shape_count() const {
}
return mesh->get_blend_shape_count();
}
+
int MeshInstance3D::find_blend_shape_by_name(const StringName &p_name) {
if (mesh.is_null()) {
return -1;
@@ -153,11 +146,13 @@ int MeshInstance3D::find_blend_shape_by_name(const StringName &p_name) {
}
return -1;
}
+
float MeshInstance3D::get_blend_shape_value(int p_blend_shape) const {
ERR_FAIL_COND_V(mesh.is_null(), 0.0);
ERR_FAIL_INDEX_V(p_blend_shape, (int)blend_shape_tracks.size(), 0);
return blend_shape_tracks[p_blend_shape];
}
+
void MeshInstance3D::set_blend_shape_value(int p_blend_shape, float p_value) {
ERR_FAIL_COND(mesh.is_null());
ERR_FAIL_INDEX(p_blend_shape, (int)blend_shape_tracks.size());