Merge pull request #16944 from rainerdeyke/master
Added 'fill selection' command to grid map editor
This commit is contained in:
commit
72e05f3f99
2 changed files with 33 additions and 0 deletions
|
@ -230,6 +230,13 @@ void GridMapEditor::_menu_option(int p_option) {
|
|||
|
||||
_delete_selection();
|
||||
|
||||
} break;
|
||||
case MENU_OPTION_SELECTION_FILL: {
|
||||
if (!selection.active)
|
||||
return;
|
||||
|
||||
_fill_selection();
|
||||
|
||||
} break;
|
||||
case MENU_OPTION_GRIDMAP_SETTINGS: {
|
||||
settings_dialog->popup_centered(settings_vbc->get_combined_minimum_size() + Size2(50, 50) * EDSCALE);
|
||||
|
@ -455,6 +462,29 @@ void GridMapEditor::_delete_selection() {
|
|||
_validate_selection();
|
||||
}
|
||||
|
||||
void GridMapEditor::_fill_selection() {
|
||||
|
||||
if (!selection.active)
|
||||
return;
|
||||
|
||||
undo_redo->create_action(TTR("GridMap Fill Selection"));
|
||||
for (int i = selection.begin.x; i <= selection.end.x; i++) {
|
||||
|
||||
for (int j = selection.begin.y; j <= selection.end.y; j++) {
|
||||
|
||||
for (int k = selection.begin.z; k <= selection.end.z; k++) {
|
||||
|
||||
undo_redo->add_do_method(node, "set_cell_item", i, j, k, selected_pallete, cursor_rot);
|
||||
undo_redo->add_undo_method(node, "set_cell_item", i, j, k, node->get_cell_item(i, j, k), node->get_cell_item_orientation(i, j, k));
|
||||
}
|
||||
}
|
||||
}
|
||||
undo_redo->commit_action();
|
||||
|
||||
selection.active = false;
|
||||
_validate_selection();
|
||||
}
|
||||
|
||||
void GridMapEditor::_update_duplicate_indicator() {
|
||||
|
||||
if (!selection.active || input_action != INPUT_DUPLICATE) {
|
||||
|
@ -1072,6 +1102,7 @@ GridMapEditor::GridMapEditor(EditorNode *p_editor) {
|
|||
options->get_popup()->add_separator();
|
||||
options->get_popup()->add_item(TTR("Duplicate Selection"), MENU_OPTION_SELECTION_DUPLICATE, KEY_MASK_SHIFT + KEY_C);
|
||||
options->get_popup()->add_item(TTR("Clear Selection"), MENU_OPTION_SELECTION_CLEAR, KEY_MASK_SHIFT + KEY_X);
|
||||
options->get_popup()->add_item(TTR("Fill Selection"), MENU_OPTION_SELECTION_FILL, KEY_MASK_SHIFT + KEY_F);
|
||||
|
||||
options->get_popup()->add_separator();
|
||||
options->get_popup()->add_item(TTR("Settings"), MENU_OPTION_GRIDMAP_SETTINGS);
|
||||
|
|
|
@ -168,6 +168,7 @@ class GridMapEditor : public VBoxContainer {
|
|||
MENU_OPTION_SELECTION_MAKE_EXTERIOR_CONNECTOR,
|
||||
MENU_OPTION_SELECTION_DUPLICATE,
|
||||
MENU_OPTION_SELECTION_CLEAR,
|
||||
MENU_OPTION_SELECTION_FILL,
|
||||
MENU_OPTION_REMOVE_AREA,
|
||||
MENU_OPTION_GRIDMAP_SETTINGS
|
||||
|
||||
|
@ -200,6 +201,7 @@ class GridMapEditor : public VBoxContainer {
|
|||
void _floor_changed(float p_value);
|
||||
|
||||
void _delete_selection();
|
||||
void _fill_selection();
|
||||
|
||||
EditorNode *editor;
|
||||
bool do_input_action(Camera *p_camera, const Point2 &p_point, bool p_click);
|
||||
|
|
Loading…
Reference in a new issue