Add project setting to change scene file casing
The default behavior is unchanged (the root node name is used as-is).
This commit is contained in:
parent
08cabf2a36
commit
8948b36f0d
|
@ -2432,13 +2432,21 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
|
||||||
file->set_current_path(path.replacen("." + ext, "." + extensions.front()->get()));
|
file->set_current_path(path.replacen("." + ext, "." + extensions.front()->get()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else if (extensions.size()) {
|
||||||
String existing;
|
String root_name = scene->get_name();
|
||||||
if (extensions.size()) {
|
// Very similar to node naming logic.
|
||||||
String root_name(scene->get_name());
|
switch (ProjectSettings::get_singleton()->get("editor/scene/scene_naming").operator int()) {
|
||||||
existing = root_name + "." + extensions.front()->get().to_lower();
|
case SCENE_NAME_CASING_AUTO:
|
||||||
|
// Use casing of the root node.
|
||||||
|
break;
|
||||||
|
case SCENE_NAME_CASING_PASCAL_CASE: {
|
||||||
|
root_name = root_name.capitalize().replace(" ", "");
|
||||||
|
} break;
|
||||||
|
case SCENE_NAME_CASING_SNAKE_CASE:
|
||||||
|
root_name = root_name.capitalize().replace(" ", "").replace("-", "_").camelcase_to_underscore();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
file->set_current_path(existing);
|
file->set_current_path(root_name + "." + extensions.front()->get().to_lower());
|
||||||
}
|
}
|
||||||
file->popup_centered_ratio();
|
file->popup_centered_ratio();
|
||||||
file->set_title(TTR("Save Scene As..."));
|
file->set_title(TTR("Save Scene As..."));
|
||||||
|
@ -5575,6 +5583,9 @@ void EditorNode::_feature_profile_changed() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditorNode::_bind_methods() {
|
void EditorNode::_bind_methods() {
|
||||||
|
GLOBAL_DEF("editor/scene/scene_naming", SCENE_NAME_CASING_AUTO);
|
||||||
|
ProjectSettings::get_singleton()->set_custom_property_info("editor/scene/scene_naming", PropertyInfo(Variant::INT, "editor/scene/scene_naming", PROPERTY_HINT_ENUM, "Auto,PascalCase,snake_case"));
|
||||||
|
|
||||||
ClassDB::bind_method("_menu_option", &EditorNode::_menu_option);
|
ClassDB::bind_method("_menu_option", &EditorNode::_menu_option);
|
||||||
ClassDB::bind_method("_tool_menu_option", &EditorNode::_tool_menu_option);
|
ClassDB::bind_method("_tool_menu_option", &EditorNode::_tool_menu_option);
|
||||||
ClassDB::bind_method("_menu_confirm_current", &EditorNode::_menu_confirm_current);
|
ClassDB::bind_method("_menu_confirm_current", &EditorNode::_menu_confirm_current);
|
||||||
|
|
|
@ -217,6 +217,12 @@ private:
|
||||||
TOOL_MENU_BASE = 1000
|
TOOL_MENU_BASE = 1000
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum ScriptNameCasing {
|
||||||
|
SCENE_NAME_CASING_AUTO,
|
||||||
|
SCENE_NAME_CASING_PASCAL_CASE,
|
||||||
|
SCENE_NAME_CASING_SNAKE_CASE
|
||||||
|
};
|
||||||
|
|
||||||
Viewport *scene_root; //root of the scene being edited
|
Viewport *scene_root; //root of the scene being edited
|
||||||
|
|
||||||
PanelContainer *scene_root_parent;
|
PanelContainer *scene_root_parent;
|
||||||
|
|
Loading…
Reference in New Issue