Merge pull request #64570 from KoBeWi/node🧳ing

Unify node casing adjustment
This commit is contained in:
Rémi Verschelde
2022-08-26 09:49:58 +02:00
committed by GitHub
4 changed files with 20 additions and 39 deletions

View File

@ -948,6 +948,21 @@ String Node::validate_child_name(Node *p_child) {
}
#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) {
/* 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.
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