Update naar godot 4.0
Nog steeds geen nieuwe features ofzo. kopie van bestaande gridmap.
This commit is contained in:
+103
-82
@@ -5,8 +5,8 @@
|
||||
/* GODOT ENGINE */
|
||||
/* https://godotengine.org */
|
||||
/*************************************************************************/
|
||||
/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
|
||||
/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
|
||||
/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
|
||||
/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
@@ -49,7 +49,7 @@ void HexMapEditor::_configure() {
|
||||
return;
|
||||
}
|
||||
|
||||
update();
|
||||
update_grid();
|
||||
}
|
||||
|
||||
void HexMapEditor::_menu_option(int p_option) {
|
||||
@@ -255,6 +255,12 @@ void HexMapEditor::_update_cursor_transform() {
|
||||
cursor_transform.basis *= node->get_cell_scale();
|
||||
cursor_transform = node->get_global_transform() * cursor_transform;
|
||||
|
||||
if (selected_palette >= 0) {
|
||||
if (node && !node->get_mesh_library().is_null()) {
|
||||
cursor_transform *= node->get_mesh_library()->get_item_mesh_transform(selected_palette);
|
||||
}
|
||||
}
|
||||
|
||||
if (cursor_instance.is_valid()) {
|
||||
RenderingServer::get_singleton()->instance_set_transform(cursor_instance, cursor_transform);
|
||||
RenderingServer::get_singleton()->instance_set_visible(cursor_instance, cursor_visible);
|
||||
@@ -461,7 +467,7 @@ void HexMapEditor::_delete_selection() {
|
||||
return;
|
||||
}
|
||||
|
||||
undo_redo->create_action(TTR("GridMap Delete Selection"));
|
||||
undo_redo->create_action(TTR("HexMap Delete 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++) {
|
||||
@@ -481,7 +487,7 @@ void HexMapEditor::_fill_selection() {
|
||||
return;
|
||||
}
|
||||
|
||||
undo_redo->create_action(TTR("GridMap Fill Selection"));
|
||||
undo_redo->create_action(TTR("HexMap 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++) {
|
||||
@@ -574,7 +580,7 @@ void HexMapEditor::_do_paste() {
|
||||
rot.set_orthogonal_index(paste_indicator.orientation);
|
||||
|
||||
Vector3 ofs = paste_indicator.current - paste_indicator.click;
|
||||
undo_redo->create_action(TTR("GridMap Paste Selection"));
|
||||
undo_redo->create_action(TTR("HexMap Paste Selection"));
|
||||
|
||||
for (const ClipboardItem &item : clipboard_items) {
|
||||
Vector3 position = rot.xform(item.grid_offset) + paste_indicator.begin + ofs;
|
||||
@@ -597,32 +603,32 @@ void HexMapEditor::_do_paste() {
|
||||
_clear_clipboard_data();
|
||||
}
|
||||
|
||||
bool HexMapEditor::forward_spatial_input_event(Camera3D *p_camera, const Ref<InputEvent> &p_event) {
|
||||
EditorPlugin::AfterGUIInput HexMapEditor::forward_spatial_input_event(Camera3D *p_camera, const Ref<InputEvent> &p_event) {
|
||||
if (!node) {
|
||||
return false;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_PASS;
|
||||
}
|
||||
|
||||
Ref<InputEventMouseButton> mb = p_event;
|
||||
|
||||
if (mb.is_valid()) {
|
||||
if (mb->get_button_index() == MOUSE_BUTTON_WHEEL_UP && (mb->is_command_pressed() || mb->is_shift_pressed())) {
|
||||
if (mb->get_button_index() == MouseButton::WHEEL_UP && (mb->is_command_pressed() || mb->is_shift_pressed())) {
|
||||
if (mb->is_pressed()) {
|
||||
floor->set_value(floor->get_value() + mb->get_factor());
|
||||
}
|
||||
|
||||
return true; // Eaten.
|
||||
} else if (mb->get_button_index() == MOUSE_BUTTON_WHEEL_DOWN && (mb->is_command_pressed() || mb->is_shift_pressed())) {
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP; // Eaten.
|
||||
} else if (mb->get_button_index() == MouseButton::WHEEL_DOWN && (mb->is_command_pressed() || mb->is_shift_pressed())) {
|
||||
if (mb->is_pressed()) {
|
||||
floor->set_value(floor->get_value() - mb->get_factor());
|
||||
}
|
||||
return true;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
}
|
||||
|
||||
if (mb->is_pressed()) {
|
||||
Node3DEditorViewport::NavigationScheme nav_scheme = (Node3DEditorViewport::NavigationScheme)EditorSettings::get_singleton()->get("editors/3d/navigation/navigation_scheme").operator int();
|
||||
if ((nav_scheme == Node3DEditorViewport::NAVIGATION_MAYA || nav_scheme == Node3DEditorViewport::NAVIGATION_MODO) && mb->is_alt_pressed()) {
|
||||
input_action = INPUT_NONE;
|
||||
} else if (mb->get_button_index() == MOUSE_BUTTON_LEFT) {
|
||||
} else if (mb->get_button_index() == MouseButton::LEFT) {
|
||||
bool can_edit = (node && node->get_mesh_library().is_valid());
|
||||
if (input_action == INPUT_PASTE) {
|
||||
_do_paste();
|
||||
@@ -637,28 +643,31 @@ bool HexMapEditor::forward_spatial_input_event(Camera3D *p_camera, const Ref<Inp
|
||||
input_action = INPUT_PAINT;
|
||||
set_items.clear();
|
||||
}
|
||||
} else if (mb->get_button_index() == MOUSE_BUTTON_RIGHT) {
|
||||
} else if (mb->get_button_index() == MouseButton::RIGHT) {
|
||||
if (input_action == INPUT_PASTE) {
|
||||
_clear_clipboard_data();
|
||||
input_action = INPUT_NONE;
|
||||
_update_paste_indicator();
|
||||
return true;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
} else if (selection.active) {
|
||||
_set_selection(false);
|
||||
return true;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
} else {
|
||||
input_action = INPUT_ERASE;
|
||||
set_items.clear();
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_PASS;
|
||||
}
|
||||
|
||||
return do_input_action(p_camera, Point2(mb->get_position().x, mb->get_position().y), true);
|
||||
if (do_input_action(p_camera, Point2(mb->get_position().x, mb->get_position().y), true)) {
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
}
|
||||
return EditorPlugin::AFTER_GUI_INPUT_PASS;
|
||||
} else {
|
||||
if ((mb->get_button_index() == MOUSE_BUTTON_RIGHT && input_action == INPUT_ERASE) || (mb->get_button_index() == MOUSE_BUTTON_LEFT && input_action == INPUT_PAINT)) {
|
||||
if ((mb->get_button_index() == MouseButton::RIGHT && input_action == INPUT_ERASE) || (mb->get_button_index() == MouseButton::LEFT && input_action == INPUT_PAINT)) {
|
||||
if (set_items.size()) {
|
||||
undo_redo->create_action(TTR("GridMap Paint"));
|
||||
undo_redo->create_action(TTR("HexMap Paint"));
|
||||
for (const SetItem &si : set_items) {
|
||||
undo_redo->add_do_method(node, "set_cell_item", si.position, si.new_value, si.new_orientation);
|
||||
}
|
||||
@@ -671,24 +680,28 @@ bool HexMapEditor::forward_spatial_input_event(Camera3D *p_camera, const Ref<Inp
|
||||
}
|
||||
set_items.clear();
|
||||
input_action = INPUT_NONE;
|
||||
return set_items.size() > 0;
|
||||
|
||||
if (set_items.size() > 0) {
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
}
|
||||
return EditorPlugin::AFTER_GUI_INPUT_PASS;
|
||||
}
|
||||
|
||||
if (mb->get_button_index() == MOUSE_BUTTON_LEFT && input_action == INPUT_SELECT) {
|
||||
undo_redo->create_action(TTR("GridMap Selection"));
|
||||
if (mb->get_button_index() == MouseButton::LEFT && input_action == INPUT_SELECT) {
|
||||
undo_redo->create_action(TTR("HexMap Selection"));
|
||||
undo_redo->add_do_method(this, "_set_selection", selection.active, selection.begin, selection.end);
|
||||
undo_redo->add_undo_method(this, "_set_selection", last_selection.active, last_selection.begin, last_selection.end);
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
if (mb->get_button_index() == MOUSE_BUTTON_LEFT && input_action != INPUT_NONE) {
|
||||
if (mb->get_button_index() == MouseButton::LEFT && input_action != INPUT_NONE) {
|
||||
set_items.clear();
|
||||
input_action = INPUT_NONE;
|
||||
return true;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
}
|
||||
if (mb->get_button_index() == MOUSE_BUTTON_RIGHT && (input_action == INPUT_ERASE || input_action == INPUT_PASTE)) {
|
||||
if (mb->get_button_index() == MouseButton::RIGHT && (input_action == INPUT_ERASE || input_action == INPUT_PASTE)) {
|
||||
input_action = INPUT_NONE;
|
||||
return true;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -696,41 +709,44 @@ bool HexMapEditor::forward_spatial_input_event(Camera3D *p_camera, const Ref<Inp
|
||||
Ref<InputEventMouseMotion> mm = p_event;
|
||||
|
||||
if (mm.is_valid()) {
|
||||
return do_input_action(p_camera, mm->get_position(), false);
|
||||
if (do_input_action(p_camera, mm->get_position(), false)) {
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
}
|
||||
return EditorPlugin::AFTER_GUI_INPUT_PASS;
|
||||
}
|
||||
|
||||
Ref<InputEventKey> k = p_event;
|
||||
|
||||
if (k.is_valid()) {
|
||||
if (k->is_pressed()) {
|
||||
if (k->get_keycode() == KEY_ESCAPE) {
|
||||
if (k->get_keycode() == Key::ESCAPE) {
|
||||
if (input_action == INPUT_PASTE) {
|
||||
_clear_clipboard_data();
|
||||
input_action = INPUT_NONE;
|
||||
_update_paste_indicator();
|
||||
return true;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
} else if (selection.active) {
|
||||
_set_selection(false);
|
||||
return true;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
} else {
|
||||
selected_palette = -1;
|
||||
mesh_library_palette->deselect_all();
|
||||
update_palette();
|
||||
_update_cursor_instance();
|
||||
return true;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
}
|
||||
}
|
||||
|
||||
if (k->is_shift_pressed() && selection.active && input_action != INPUT_PASTE) {
|
||||
if (k->get_keycode() == options->get_popup()->get_item_accelerator(options->get_popup()->get_item_index(MENU_OPTION_PREV_LEVEL))) {
|
||||
if (k->get_keycode() == (Key)options->get_popup()->get_item_accelerator(options->get_popup()->get_item_index(MENU_OPTION_PREV_LEVEL))) {
|
||||
selection.click[edit_axis]--;
|
||||
_validate_selection();
|
||||
return true;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
}
|
||||
if (k->get_keycode() == options->get_popup()->get_item_accelerator(options->get_popup()->get_item_index(MENU_OPTION_NEXT_LEVEL))) {
|
||||
if (k->get_keycode() == (Key)options->get_popup()->get_item_accelerator(options->get_popup()->get_item_index(MENU_OPTION_NEXT_LEVEL))) {
|
||||
selection.click[edit_axis]++;
|
||||
_validate_selection();
|
||||
return true;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -743,18 +759,18 @@ bool HexMapEditor::forward_spatial_input_event(Camera3D *p_camera, const Ref<Inp
|
||||
accumulated_floor_delta += delta;
|
||||
int step = 0;
|
||||
if (ABS(accumulated_floor_delta) > 1.0) {
|
||||
step = SGN(accumulated_floor_delta);
|
||||
step = SIGN(accumulated_floor_delta);
|
||||
accumulated_floor_delta -= step;
|
||||
}
|
||||
if (step) {
|
||||
floor->set_value(floor->get_value() + step);
|
||||
}
|
||||
return true;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP;
|
||||
}
|
||||
}
|
||||
accumulated_floor_delta = 0.0;
|
||||
|
||||
return false;
|
||||
return EditorPlugin::AFTER_GUI_INPUT_PASS;
|
||||
}
|
||||
|
||||
struct _CGMEItemSort {
|
||||
@@ -788,7 +804,7 @@ void HexMapEditor::_text_changed(const String &p_text) {
|
||||
void HexMapEditor::_sbox_input(const Ref<InputEvent> &p_ie) {
|
||||
const Ref<InputEventKey> k = p_ie;
|
||||
|
||||
if (k.is_valid() && (k->get_keycode() == KEY_UP || k->get_keycode() == KEY_DOWN || k->get_keycode() == KEY_PAGEUP || k->get_keycode() == KEY_PAGEDOWN)) {
|
||||
if (k.is_valid() && (k->get_keycode() == Key::UP || k->get_keycode() == Key::DOWN || k->get_keycode() == Key::PAGEUP || k->get_keycode() == Key::PAGEDOWN)) {
|
||||
// Forward the key input to the ItemList so it can be scrolled
|
||||
mesh_library_palette->gui_input(k);
|
||||
search_box->accept_event();
|
||||
@@ -800,11 +816,11 @@ void HexMapEditor::_mesh_library_palette_input(const Ref<InputEvent> &p_ie) {
|
||||
|
||||
// Zoom in/out using Ctrl + mouse wheel
|
||||
if (mb.is_valid() && mb->is_pressed() && mb->is_command_pressed()) {
|
||||
if (mb->is_pressed() && mb->get_button_index() == MOUSE_BUTTON_WHEEL_UP) {
|
||||
if (mb->is_pressed() && mb->get_button_index() == MouseButton::WHEEL_UP) {
|
||||
size_slider->set_value(size_slider->get_value() + 0.2);
|
||||
}
|
||||
|
||||
if (mb->is_pressed() && mb->get_button_index() == MOUSE_BUTTON_WHEEL_DOWN) {
|
||||
if (mb->is_pressed() && mb->get_button_index() == MouseButton::WHEEL_DOWN) {
|
||||
size_slider->set_value(size_slider->get_value() - 0.2);
|
||||
}
|
||||
}
|
||||
@@ -818,7 +834,7 @@ void HexMapEditor::_icon_size_changed(float p_value) {
|
||||
void HexMapEditor::update_palette() {
|
||||
int selected = mesh_library_palette->get_current();
|
||||
|
||||
float min_size = EDITOR_DEF("editors/hex_map/preview_size", 64);
|
||||
float min_size = EDITOR_DEF("editors/grid_map/preview_size", 64);
|
||||
min_size *= EDSCALE;
|
||||
|
||||
mesh_library_palette->clear();
|
||||
@@ -869,11 +885,11 @@ void HexMapEditor::update_palette() {
|
||||
String name = mesh_library->get_item_name(id);
|
||||
Ref<Texture2D> preview = mesh_library->get_item_preview(id);
|
||||
|
||||
if (name == "") {
|
||||
if (name.is_empty()) {
|
||||
name = "#" + itos(id);
|
||||
}
|
||||
|
||||
if (filter != "" && !filter.is_subsequence_ofi(name)) {
|
||||
if (!filter.is_empty() && !filter.is_subsequence_ofi(name)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1012,6 +1028,13 @@ void HexMapEditor::_draw_grids(const Vector3 &cell_size) {
|
||||
}
|
||||
}
|
||||
|
||||
void HexMapEditor::_update_theme() {
|
||||
options->set_icon(get_theme_icon(SNAME("HexMap"), SNAME("EditorIcons")));
|
||||
search_box->set_right_icon(get_theme_icon(SNAME("Search"), SNAME("EditorIcons")));
|
||||
mode_thumbnail->set_icon(get_theme_icon(SNAME("FileThumbnail"), SNAME("EditorIcons")));
|
||||
mode_list->set_icon(get_theme_icon(SNAME("FileList"), SNAME("EditorIcons")));
|
||||
}
|
||||
|
||||
void HexMapEditor::_notification(int p_what) {
|
||||
switch (p_what) {
|
||||
case NOTIFICATION_ENTER_TREE: {
|
||||
@@ -1032,6 +1055,7 @@ void HexMapEditor::_notification(int p_what) {
|
||||
|
||||
_update_selection_transform();
|
||||
_update_paste_indicator();
|
||||
_update_theme();
|
||||
} break;
|
||||
|
||||
case NOTIFICATION_EXIT_TREE: {
|
||||
@@ -1072,8 +1096,7 @@ void HexMapEditor::_notification(int p_what) {
|
||||
} break;
|
||||
|
||||
case NOTIFICATION_THEME_CHANGED: {
|
||||
options->set_icon(get_theme_icon(SNAME("GridMap"), SNAME("EditorIcons")));
|
||||
search_box->set_right_icon(get_theme_icon(SNAME("Search"), SNAME("EditorIcons")));
|
||||
_update_theme();
|
||||
} break;
|
||||
|
||||
case NOTIFICATION_APPLICATION_FOCUS_OUT: {
|
||||
@@ -1081,7 +1104,7 @@ void HexMapEditor::_notification(int p_what) {
|
||||
// Simulate mouse released event to stop drawing when editor focus exists.
|
||||
Ref<InputEventMouseButton> release;
|
||||
release.instantiate();
|
||||
release->set_button_index(MOUSE_BUTTON_LEFT);
|
||||
release->set_button_index(MouseButton::LEFT);
|
||||
forward_spatial_input_event(nullptr, release);
|
||||
}
|
||||
} break;
|
||||
@@ -1140,14 +1163,14 @@ HexMapEditor::HexMapEditor(EditorNode *p_editor) {
|
||||
editor = p_editor;
|
||||
undo_redo = p_editor->get_undo_redo();
|
||||
|
||||
int mw = EDITOR_DEF("editors/hex_map/palette_min_width", 230);
|
||||
int mw = EDITOR_DEF("editors/grid_map/palette_min_width", 230);
|
||||
Control *ec = memnew(Control);
|
||||
ec->set_custom_minimum_size(Size2(mw, 0) * EDSCALE);
|
||||
add_child(ec);
|
||||
|
||||
spatial_editor_hb = memnew(HBoxContainer);
|
||||
spatial_editor_hb->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||
spatial_editor_hb->set_alignment(BoxContainer::ALIGN_END);
|
||||
spatial_editor_hb->set_alignment(BoxContainer::ALIGNMENT_END);
|
||||
Node3DEditor::get_singleton()->add_control_to_menu_panel(spatial_editor_hb);
|
||||
|
||||
spin_box_label = memnew(Label);
|
||||
@@ -1172,39 +1195,39 @@ HexMapEditor::HexMapEditor(EditorNode *p_editor) {
|
||||
spatial_editor_hb->hide();
|
||||
|
||||
options->set_text(TTR("Grid Map"));
|
||||
options->get_popup()->add_item(TTR("Previous Floor"), MENU_OPTION_PREV_LEVEL, KEY_Q);
|
||||
options->get_popup()->add_item(TTR("Next Floor"), MENU_OPTION_NEXT_LEVEL, KEY_E);
|
||||
options->get_popup()->add_item(TTR("Previous Floor"), MENU_OPTION_PREV_LEVEL, Key::Q);
|
||||
options->get_popup()->add_item(TTR("Next Floor"), MENU_OPTION_NEXT_LEVEL, Key::E);
|
||||
options->get_popup()->add_separator();
|
||||
options->get_popup()->add_radio_check_item(TTR("Clip Disabled"), MENU_OPTION_CLIP_DISABLED);
|
||||
options->get_popup()->set_item_checked(options->get_popup()->get_item_index(MENU_OPTION_CLIP_DISABLED), true);
|
||||
options->get_popup()->add_radio_check_item(TTR("Clip Above"), MENU_OPTION_CLIP_ABOVE);
|
||||
options->get_popup()->add_radio_check_item(TTR("Clip Below"), MENU_OPTION_CLIP_BELOW);
|
||||
options->get_popup()->add_separator();
|
||||
options->get_popup()->add_radio_check_item(TTR("Edit X Axis"), MENU_OPTION_X_AXIS, KEY_Z);
|
||||
options->get_popup()->add_radio_check_item(TTR("Edit Y Axis"), MENU_OPTION_Y_AXIS, KEY_X);
|
||||
options->get_popup()->add_radio_check_item(TTR("Edit Z Axis"), MENU_OPTION_Z_AXIS, KEY_C);
|
||||
options->get_popup()->add_radio_check_item(TTR("Edit X Axis"), MENU_OPTION_X_AXIS, Key::Z);
|
||||
options->get_popup()->add_radio_check_item(TTR("Edit Y Axis"), MENU_OPTION_Y_AXIS, Key::X);
|
||||
options->get_popup()->add_radio_check_item(TTR("Edit Z Axis"), MENU_OPTION_Z_AXIS, Key::C);
|
||||
options->get_popup()->set_item_checked(options->get_popup()->get_item_index(MENU_OPTION_Y_AXIS), true);
|
||||
options->get_popup()->add_separator();
|
||||
options->get_popup()->add_item(TTR("Cursor Rotate X"), MENU_OPTION_CURSOR_ROTATE_X, KEY_A);
|
||||
options->get_popup()->add_item(TTR("Cursor Rotate Y"), MENU_OPTION_CURSOR_ROTATE_Y, KEY_S);
|
||||
options->get_popup()->add_item(TTR("Cursor Rotate Z"), MENU_OPTION_CURSOR_ROTATE_Z, KEY_D);
|
||||
options->get_popup()->add_item(TTR("Cursor Back Rotate X"), MENU_OPTION_CURSOR_BACK_ROTATE_X, KEY_MASK_SHIFT + KEY_A);
|
||||
options->get_popup()->add_item(TTR("Cursor Back Rotate Y"), MENU_OPTION_CURSOR_BACK_ROTATE_Y, KEY_MASK_SHIFT + KEY_S);
|
||||
options->get_popup()->add_item(TTR("Cursor Back Rotate Z"), MENU_OPTION_CURSOR_BACK_ROTATE_Z, KEY_MASK_SHIFT + KEY_D);
|
||||
options->get_popup()->add_item(TTR("Cursor Clear Rotation"), MENU_OPTION_CURSOR_CLEAR_ROTATION, KEY_W);
|
||||
options->get_popup()->add_item(TTR("Cursor Rotate X"), MENU_OPTION_CURSOR_ROTATE_X, Key::A);
|
||||
options->get_popup()->add_item(TTR("Cursor Rotate Y"), MENU_OPTION_CURSOR_ROTATE_Y, Key::S);
|
||||
options->get_popup()->add_item(TTR("Cursor Rotate Z"), MENU_OPTION_CURSOR_ROTATE_Z, Key::D);
|
||||
options->get_popup()->add_item(TTR("Cursor Back Rotate X"), MENU_OPTION_CURSOR_BACK_ROTATE_X, KeyModifierMask::SHIFT + Key::A);
|
||||
options->get_popup()->add_item(TTR("Cursor Back Rotate Y"), MENU_OPTION_CURSOR_BACK_ROTATE_Y, KeyModifierMask::SHIFT + Key::S);
|
||||
options->get_popup()->add_item(TTR("Cursor Back Rotate Z"), MENU_OPTION_CURSOR_BACK_ROTATE_Z, KeyModifierMask::SHIFT + Key::D);
|
||||
options->get_popup()->add_item(TTR("Cursor Clear Rotation"), MENU_OPTION_CURSOR_CLEAR_ROTATION, Key::W);
|
||||
options->get_popup()->add_separator();
|
||||
options->get_popup()->add_check_item(TTR("Paste Selects"), MENU_OPTION_PASTE_SELECTS);
|
||||
options->get_popup()->add_separator();
|
||||
options->get_popup()->add_item(TTR("Duplicate Selection"), MENU_OPTION_SELECTION_DUPLICATE, KEY_MASK_CTRL + KEY_C);
|
||||
options->get_popup()->add_item(TTR("Cut Selection"), MENU_OPTION_SELECTION_CUT, KEY_MASK_CTRL + KEY_X);
|
||||
options->get_popup()->add_item(TTR("Clear Selection"), MENU_OPTION_SELECTION_CLEAR, KEY_DELETE);
|
||||
options->get_popup()->add_item(TTR("Fill Selection"), MENU_OPTION_SELECTION_FILL, KEY_MASK_CTRL + KEY_F);
|
||||
options->get_popup()->add_item(TTR("Duplicate Selection"), MENU_OPTION_SELECTION_DUPLICATE, KeyModifierMask::CTRL + Key::C);
|
||||
options->get_popup()->add_item(TTR("Cut Selection"), MENU_OPTION_SELECTION_CUT, KeyModifierMask::CTRL + Key::X);
|
||||
options->get_popup()->add_item(TTR("Clear Selection"), MENU_OPTION_SELECTION_CLEAR, Key::KEY_DELETE);
|
||||
options->get_popup()->add_item(TTR("Fill Selection"), MENU_OPTION_SELECTION_FILL, KeyModifierMask::CTRL + Key::F);
|
||||
|
||||
options->get_popup()->add_separator();
|
||||
options->get_popup()->add_item(TTR("Settings..."), MENU_OPTION_GRIDMAP_SETTINGS);
|
||||
|
||||
settings_dialog = memnew(ConfirmationDialog);
|
||||
settings_dialog->set_title(TTR("GridMap Settings"));
|
||||
settings_dialog->set_title(TTR("HexMap Settings"));
|
||||
add_child(settings_dialog);
|
||||
settings_vbc = memnew(VBoxContainer);
|
||||
settings_vbc->set_custom_minimum_size(Size2(200, 0) * EDSCALE);
|
||||
@@ -1214,7 +1237,7 @@ HexMapEditor::HexMapEditor(EditorNode *p_editor) {
|
||||
settings_pick_distance->set_max(10000.0f);
|
||||
settings_pick_distance->set_min(500.0f);
|
||||
settings_pick_distance->set_step(1.0f);
|
||||
settings_pick_distance->set_value(EDITOR_DEF("editors/hex_map/pick_distance", 5000.0));
|
||||
settings_pick_distance->set_value(EDITOR_DEF("editors/grid_map/pick_distance", 5000.0));
|
||||
settings_vbc->add_margin_child(TTR("Pick Distance:"), settings_pick_distance);
|
||||
|
||||
options->get_popup()->connect("id_pressed", callable_mp(this, &HexMapEditor::_menu_option));
|
||||
@@ -1234,7 +1257,6 @@ HexMapEditor::HexMapEditor(EditorNode *p_editor) {
|
||||
mode_thumbnail->set_flat(true);
|
||||
mode_thumbnail->set_toggle_mode(true);
|
||||
mode_thumbnail->set_pressed(true);
|
||||
mode_thumbnail->set_icon(p_editor->get_gui_base()->get_theme_icon(SNAME("FileThumbnail"), SNAME("EditorIcons")));
|
||||
hb->add_child(mode_thumbnail);
|
||||
mode_thumbnail->connect("pressed", callable_mp(this, &HexMapEditor::_set_display_mode), varray(DISPLAY_THUMBNAIL));
|
||||
|
||||
@@ -1242,7 +1264,6 @@ HexMapEditor::HexMapEditor(EditorNode *p_editor) {
|
||||
mode_list->set_flat(true);
|
||||
mode_list->set_toggle_mode(true);
|
||||
mode_list->set_pressed(false);
|
||||
mode_list->set_icon(p_editor->get_gui_base()->get_theme_icon(SNAME("FileList"), SNAME("EditorIcons")));
|
||||
hb->add_child(mode_list);
|
||||
mode_list->connect("pressed", callable_mp(this, &HexMapEditor::_set_display_mode), varray(DISPLAY_LIST));
|
||||
|
||||
@@ -1255,7 +1276,7 @@ HexMapEditor::HexMapEditor(EditorNode *p_editor) {
|
||||
size_slider->connect("value_changed", callable_mp(this, &HexMapEditor::_icon_size_changed));
|
||||
add_child(size_slider);
|
||||
|
||||
EDITOR_DEF("editors/hex_map/preview_size", 64);
|
||||
EDITOR_DEF("editors/grid_map/preview_size", 64);
|
||||
|
||||
mesh_library_palette = memnew(ItemList);
|
||||
add_child(mesh_library_palette);
|
||||
@@ -1263,9 +1284,9 @@ HexMapEditor::HexMapEditor(EditorNode *p_editor) {
|
||||
mesh_library_palette->connect("gui_input", callable_mp(this, &HexMapEditor::_mesh_library_palette_input));
|
||||
|
||||
info_message = memnew(Label);
|
||||
info_message->set_text(TTR("Give a MeshLibrary resource to this GridMap to use its meshes."));
|
||||
info_message->set_valign(Label::VALIGN_CENTER);
|
||||
info_message->set_align(Label::ALIGN_CENTER);
|
||||
info_message->set_text(TTR("Give a MeshLibrary resource to this HexMap to use its meshes."));
|
||||
info_message->set_vertical_alignment(VERTICAL_ALIGNMENT_CENTER);
|
||||
info_message->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
|
||||
info_message->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
|
||||
info_message->set_custom_minimum_size(Size2(100 * EDSCALE, 0));
|
||||
info_message->set_anchors_and_offsets_preset(PRESET_WIDE, PRESET_MODE_KEEP_SIZE, 8 * EDSCALE);
|
||||
@@ -1436,12 +1457,12 @@ HexMapEditor::~HexMapEditor() {
|
||||
|
||||
void HexMapEditorPlugin::_notification(int p_what) {
|
||||
if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) {
|
||||
switch ((int)EditorSettings::get_singleton()->get("editors/hex_map/editor_side")) {
|
||||
switch ((int)EditorSettings::get_singleton()->get("editors/grid_map/editor_side")) {
|
||||
case 0: { // Left.
|
||||
Node3DEditor::get_singleton()->get_palette_split()->move_child(grid_map_editor, 0);
|
||||
Node3DEditor::get_singleton()->move_control_to_left_panel(grid_map_editor);
|
||||
} break;
|
||||
case 1: { // Right.
|
||||
Node3DEditor::get_singleton()->get_palette_split()->move_child(grid_map_editor, 1);
|
||||
Node3DEditor::get_singleton()->move_control_to_right_panel(grid_map_editor);
|
||||
} break;
|
||||
}
|
||||
}
|
||||
@@ -1471,16 +1492,16 @@ void HexMapEditorPlugin::make_visible(bool p_visible) {
|
||||
HexMapEditorPlugin::HexMapEditorPlugin(EditorNode *p_node) {
|
||||
editor = p_node;
|
||||
|
||||
EDITOR_DEF("editors/hex_map/editor_side", 1);
|
||||
EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::INT, "editors/hex_map/editor_side", PROPERTY_HINT_ENUM, "Left,Right"));
|
||||
EDITOR_DEF("editors/grid_map/editor_side", 1);
|
||||
EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::INT, "editors/grid_map/editor_side", PROPERTY_HINT_ENUM, "Left,Right"));
|
||||
|
||||
grid_map_editor = memnew(HexMapEditor(editor));
|
||||
switch ((int)EditorSettings::get_singleton()->get("editors/hex_map/editor_side")) {
|
||||
switch ((int)EditorSettings::get_singleton()->get("editors/grid_map/editor_side")) {
|
||||
case 0: { // Left.
|
||||
add_control_to_container(CONTAINER_SPATIAL_EDITOR_SIDE_LEFT, grid_map_editor);
|
||||
Node3DEditor::get_singleton()->add_control_to_left_panel(grid_map_editor);
|
||||
} break;
|
||||
case 1: { // Right.
|
||||
add_control_to_container(CONTAINER_SPATIAL_EDITOR_SIDE_RIGHT, grid_map_editor);
|
||||
Node3DEditor::get_singleton()->add_control_to_right_panel(grid_map_editor);
|
||||
} break;
|
||||
}
|
||||
grid_map_editor->hide();
|
||||
|
||||
Reference in New Issue
Block a user