From 7b76f8783f438c381466108f7fd3150afcb9070a Mon Sep 17 00:00:00 2001 From: "K. S. Ernest (iFire) Lee" Date: Mon, 5 Oct 2020 09:14:36 -0700 Subject: [PATCH] Better non alphanumeric bone names. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. _gen_unique_bone_name(Ref state, const GLTFSkeletonIndex skel_i, const String &p_name) won't return an empty string. 2. String GLTFDocument::_sanitize_bone_name(const String &name) will keep Japanese characters. Like: "全ての親". 3. The sanitize function allows the bone name to be not just alphanumeric. The only required conditions are the ones in add_bone. > ERR_FAIL_COND(p_name == "" || p_name.find(":") != -1 || p_name.find("/") != -1); --- editor/import/editor_scene_importer_gltf.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/editor/import/editor_scene_importer_gltf.cpp b/editor/import/editor_scene_importer_gltf.cpp index 0c67c769efc..266df789495 100644 --- a/editor/import/editor_scene_importer_gltf.cpp +++ b/editor/import/editor_scene_importer_gltf.cpp @@ -184,8 +184,11 @@ String EditorSceneImporterGLTF::_gen_unique_name(GLTFState &state, const String String EditorSceneImporterGLTF::_sanitize_bone_name(const String &name) { String p_name = name.camelcase_to_underscore(true); - RegEx pattern_del("([^a-zA-Z0-9_ ])+"); - p_name = pattern_del.sub(p_name, "", true); + RegEx pattern_nocolon(":"); + p_name = pattern_nocolon.sub(p_name, "_", true); + + RegEx pattern_noslash("/"); + p_name = pattern_noslash.sub(p_name, "_", true); RegEx pattern_nospace(" +"); p_name = pattern_nospace.sub(p_name, "_", true); @@ -200,8 +203,10 @@ String EditorSceneImporterGLTF::_sanitize_bone_name(const String &name) { } String EditorSceneImporterGLTF::_gen_unique_bone_name(GLTFState &state, const GLTFSkeletonIndex skel_i, const String &p_name) { - const String s_name = _sanitize_bone_name(p_name); - + String s_name = _sanitize_bone_name(p_name); + if (s_name.empty()) { + s_name = "bone"; + } String name; int index = 1; while (true) {