Sfoglia il codice sorgente

Merge pull request #64570 from KoBeWi/node🧳ing

Unify node casing adjustment
Rémi Verschelde 3 anni fa
parent
commit
d93d646723

+ 1 - 13
editor/plugins/canvas_item_editor_plugin.cpp

@@ -5563,19 +5563,7 @@ bool CanvasItemEditorViewport::_cyclical_dependency_exists(const String &p_targe
 void CanvasItemEditorViewport::_create_nodes(Node *parent, Node *child, String &path, const Point2 &p_point) {
 void CanvasItemEditorViewport::_create_nodes(Node *parent, Node *child, String &path, const Point2 &p_point) {
 	// Adjust casing according to project setting. The file name is expected to be in snake_case, but will work for others.
 	// Adjust casing according to project setting. The file name is expected to be in snake_case, but will work for others.
 	String name = path.get_file().get_basename();
 	String name = path.get_file().get_basename();
-	switch (ProjectSettings::get_singleton()->get("editor/node_naming/name_casing").operator int()) {
-		case NAME_CASING_PASCAL_CASE:
-			name = name.capitalize().replace(" ", "");
-			break;
-		case NAME_CASING_CAMEL_CASE:
-			name = name.capitalize().replace(" ", "");
-			name[0] = name.to_lower()[0];
-			break;
-		case NAME_CASING_SNAKE_CASE:
-			name = name.capitalize().replace(" ", "_").to_lower();
-			break;
-	}
-	child->set_name(name);
+	child->set_name(Node::adjust_name_casing(name));
 
 
 	Ref<Texture2D> texture = ResourceCache::get_ref(path);
 	Ref<Texture2D> texture = ResourceCache::get_ref(path);
 
 

+ 1 - 13
editor/plugins/node_3d_editor_plugin.cpp

@@ -3981,19 +3981,7 @@ bool Node3DEditorViewport::_create_instance(Node *parent, String &path, const Po
 
 
 			// Adjust casing according to project setting. The file name is expected to be in snake_case, but will work for others.
 			// Adjust casing according to project setting. The file name is expected to be in snake_case, but will work for others.
 			String name = path.get_file().get_basename();
 			String name = path.get_file().get_basename();
-			switch (ProjectSettings::get_singleton()->get("editor/node_naming/name_casing").operator int()) {
-				case NAME_CASING_PASCAL_CASE:
-					name = name.capitalize().replace(" ", "");
-					break;
-				case NAME_CASING_CAMEL_CASE:
-					name = name.capitalize().replace(" ", "");
-					name[0] = name.to_lower()[0];
-					break;
-				case NAME_CASING_SNAKE_CASE:
-					name = name.capitalize().replace(" ", "_").to_lower();
-					break;
-			}
-			mesh_instance->set_name(name);
+			mesh_instance->set_name(Node::adjust_name_casing(name));
 
 
 			instantiated_scene = mesh_instance;
 			instantiated_scene = mesh_instance;
 		} else {
 		} else {

+ 17 - 13
scene/main/node.cpp

@@ -948,6 +948,21 @@ String Node::validate_child_name(Node *p_child) {
 }
 }
 #endif
 #endif
 
 
+String Node::adjust_name_casing(const String &p_name) {
+	switch (GLOBAL_GET("editor/node_naming/name_casing").operator int()) {
+		case NAME_CASING_PASCAL_CASE:
+			return p_name.capitalize().replace(" ", "");
+		case NAME_CASING_CAMEL_CASE: {
+			String name = p_name.capitalize().replace(" ", "");
+			name[0] = name.to_lower()[0];
+			return name;
+		}
+		case NAME_CASING_SNAKE_CASE:
+			return p_name.capitalize().replace(" ", "_").to_lower();
+	}
+	return p_name;
+}
+
 void Node::_validate_child_name(Node *p_child, bool p_force_human_readable) {
 void Node::_validate_child_name(Node *p_child, bool p_force_human_readable) {
 	/* Make sure the name is unique */
 	/* Make sure the name is unique */
 
 
@@ -1021,19 +1036,8 @@ void Node::_generate_serial_child_name(const Node *p_child, StringName &name) co
 		//no name and a new name is needed, create one.
 		//no name and a new name is needed, create one.
 
 
 		name = p_child->get_class();
 		name = p_child->get_class();
-		// Adjust casing according to project setting. The current type name is expected to be in PascalCase.
-		switch (ProjectSettings::get_singleton()->get("editor/node_naming/name_casing").operator int()) {
-			case NAME_CASING_PASCAL_CASE:
-				break;
-			case NAME_CASING_CAMEL_CASE: {
-				String n = name;
-				n[0] = n.to_lower()[0];
-				name = n;
-			} break;
-			case NAME_CASING_SNAKE_CASE:
-				name = String(name).camelcase_to_underscore(true);
-				break;
-		}
+		// Adjust casing according to project setting.
+		name = adjust_name_casing(name);
 	}
 	}
 
 
 	//quickly test if proposed name exists
 	//quickly test if proposed name exists

+ 1 - 0
scene/main/node.h

@@ -459,6 +459,7 @@ public:
 #ifdef TOOLS_ENABLED
 #ifdef TOOLS_ENABLED
 	String validate_child_name(Node *p_child);
 	String validate_child_name(Node *p_child);
 #endif
 #endif
+	static String adjust_name_casing(const String &p_name);
 
 
 	void queue_delete();
 	void queue_delete();