Bladeren bron

Project setting to control node name casing

(cherry picked from commit 87fd54b2f18928213021fef7f330d0c314cf7ac7)
Ray Koopa 8 jaren geleden
bovenliggende
commit
a971186c26
2 gewijzigde bestanden met toevoegingen van 19 en 1 verwijderingen
  1. 13 1
      scene/main/node.cpp
  2. 6 0
      scene/main/node.h

+ 13 - 1
scene/main/node.cpp

@@ -1384,6 +1384,17 @@ String Node::_generate_serial_child_name(Node *p_child) {
 	if (name=="") {
 
 		name = p_child->get_class();
+		// Adjust casing according to project setting. The current type name is expected to be in PascalCase.
+		switch (Globals::get_singleton()->get("node/name_casing").operator int()) {
+			case NAME_CASING_PASCAL_CASE:
+				break;
+			case NAME_CASING_CAMEL_CASE:
+				name[0] = name.to_lower()[0];
+				break;
+			case NAME_CASING_SNAKE_CASE:
+				name = name.camelcase_to_underscore(true);
+				break;
+		}
 	}
 
 	// Extract trailing number
@@ -2890,7 +2901,8 @@ void Node::_bind_methods() {
 
 	_GLOBAL_DEF("editor/node_name_num_separator",0);
 	GlobalConfig::get_singleton()->set_custom_property_info("editor/node_name_num_separator",PropertyInfo(Variant::INT,"editor/node_name_num_separator",PROPERTY_HINT_ENUM, "None,Space,Underscore,Dash"));
-
+	_GLOBAL_DEF("node/name_casing",NAME_CASING_PASCAL_CASE);
+        GlobalConfig::get_singleton()->set_custom_property_info("node/name_casing",PropertyInfo(Variant::INT,"node/name_casing",PROPERTY_HINT_ENUM,"PascalCase,camelCase,snake_case"));
 
 	ClassDB::bind_method(_MD("_add_child_below_node","node:Node","child_node:Node","legible_unique_name"),&Node::add_child_below_node,DEFVAL(false));
 

+ 6 - 0
scene/main/node.h

@@ -147,6 +147,12 @@ private:
 
 	} data;
 
+	enum NameCasing {
+		NAME_CASING_PASCAL_CASE,
+		NAME_CASING_CAMEL_CASE,
+		NAME_CASING_SNAKE_CASE
+	};
+
 
 	void _print_tree(const Node *p_node);