-
-
Save lyuma/c707c74486a74112bc5a2791dda92154 to your computer and use it in GitHub Desktop.
Tool script for Godot 4.0.dev which renames a bone or a blendshape.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@tool | |
extends EditorPlugin | |
func _enter_tree(): | |
add_tool_menu_item("Rename bone or blendshape", self, "callback") | |
# add_import_plugin(import_plugin) | |
func callback(ud): | |
var nodes:Array = get_editor_interface().get_selection().get_selected_nodes() | |
for node in nodes: | |
if node is MeshInstance3D: | |
var nodem:MeshInstance3D = node | |
var nm:ArrayMesh = nodem.mesh as ArrayMesh | |
var mynm:ArrayMesh = nm # Workaround script bug | |
if nm is ArrayMesh: | |
if nm.get_blend_shape_count() == 0: | |
print("No blend shapes found yet! Added a sample one.") | |
var sa:Array = nm.surface_get_arrays(0) | |
var pt = nm.surface_get_primitive_type(0) | |
nm.clear_surfaces() | |
nm.add_blend_shape("Test " + str(nm.get_blend_shape_count())) | |
nm.add_surface_from_arrays(pt, sa) | |
var bsn = mynm.get_blend_shape_name(0) | |
print("Old blend shape name 0 " + bsn) | |
nm.set_blend_shape_name(0, str(OS.get_datetime())) | |
print("Blend shape changed from " + bsn + " to " + mynm.get_blend_shape_name(0)) | |
elif node is Skeleton3D: | |
var skel:Skeleton3D = node | |
var skelx:Skeleton3D = node # Avoid infinite loop due to GDScript bugs | |
var bn:String = skel.get_bone_name(0) | |
print("Old bone name 0 " + bn) | |
skel.set_bone_name(0, str(OS.get_datetime())) | |
print("Bone name changed from " + bn + " to " + skelx.get_bone_name(0)) | |
# Causes infinite loop??? | |
# print("Bone name changed from " + bn + " to " + skel.get_bone_name(0)) | |
func _exit_tree(): | |
remove_tool_menu_item("Rename bone or blendshape") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment