@@ -185,6 +185,12 @@ void GridMapEditor::_menu_option(int p_option) {
185185 _fill_selection ();
186186
187187 } break ;
188+ case MENU_OPTION_CLEAR_ALL_CELLS: {
189+ _clear_all_cells ();
190+ } break ;
191+ case MENU_OPTION_FIX_INVALID_CELLS: {
192+ _fix_invalid_cells ();
193+ } break ;
188194 case MENU_OPTION_GRIDMAP_SETTINGS: {
189195 settings_dialog->popup_centered (settings_vbc->get_combined_minimum_size () + Size2 (50 , 50 ) * EDSCALE);
190196 } break ;
@@ -502,6 +508,24 @@ void GridMapEditor::_fill_selection() {
502508 undo_redo->commit_action ();
503509}
504510
511+ void GridMapEditor::_clear_all_cells () {
512+ EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton ();
513+ undo_redo->create_action (TTR (" Clear All Cells" ));
514+ undo_redo->add_undo_method (node, " set" , " data" , node->get (" data" ));
515+ node->clear ();
516+ undo_redo->add_do_method (node, " set" , " data" , node->get (" data" ));
517+ undo_redo->commit_action ();
518+ }
519+
520+ void GridMapEditor::_fix_invalid_cells () {
521+ EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton ();
522+ undo_redo->create_action (TTR (" Fix Invalid Cells" ));
523+ undo_redo->add_undo_method (node, " set" , " data" , node->get (" data" ));
524+ node->fix_invalid_cells ();
525+ undo_redo->add_do_method (node, " set" , " data" , node->get (" data" ));
526+ undo_redo->commit_action ();
527+ }
528+
505529void GridMapEditor::_clear_clipboard_data () {
506530 for (const ClipboardItem &E : clipboard_items) {
507531 if (E.instance .is_null ()) {
@@ -1323,6 +1347,9 @@ GridMapEditor::GridMapEditor() {
13231347 options->get_popup ()->add_check_shortcut (ED_GET_SHORTCUT (" grid_map/keep_selected" ), MENU_OPTION_PASTE_SELECTS);
13241348 options->get_popup ()->set_item_checked (options->get_popup ()->get_item_index (MENU_OPTION_PASTE_SELECTS), true );
13251349 options->get_popup ()->add_separator ();
1350+ options->get_popup ()->add_item (TTR (" Clear All Cells" ), MENU_OPTION_CLEAR_ALL_CELLS);
1351+ options->get_popup ()->add_item (TTR (" Fix Invalid Cells" ), MENU_OPTION_FIX_INVALID_CELLS);
1352+ options->get_popup ()->add_separator ();
13261353 options->get_popup ()->add_item (TTR (" Settings..." ), MENU_OPTION_GRIDMAP_SETTINGS);
13271354
13281355 settings_dialog = memnew (ConfirmationDialog);
0 commit comments