Add "Show Origin" and "Show Viewport" options to 2D Editor Viewport

This commit is contained in:
Blazej Floch 2018-03-02 03:52:13 -05:00
parent 08cadc3d87
commit 934498d37a
2 changed files with 57 additions and 15 deletions

View File

@ -2384,14 +2384,21 @@ void CanvasItemEditor::_draw_straight_line(Point2 p_from, Point2 p_to, Color p_c
} }
void CanvasItemEditor::_draw_axis() { void CanvasItemEditor::_draw_axis() {
RID ci = viewport->get_canvas_item();
if (show_origin) {
Color x_axis_color(1.0, 0.4, 0.4, 0.6); Color x_axis_color(1.0, 0.4, 0.4, 0.6);
Color y_axis_color(0.4, 1.0, 0.4, 0.6); Color y_axis_color(0.4, 1.0, 0.4, 0.6);
Color area_axis_color(0.4, 0.4, 1.0, 0.4);
_draw_straight_line(Point2(), Point2(1, 0), x_axis_color); _draw_straight_line(Point2(), Point2(1, 0), x_axis_color);
_draw_straight_line(Point2(), Point2(0, 1), y_axis_color); _draw_straight_line(Point2(), Point2(0, 1), y_axis_color);
}
if (show_viewport) {
RID ci = viewport->get_canvas_item();
Color area_axis_color(0.4, 0.4, 1.0, 0.4);
Size2 screen_size = Size2(ProjectSettings::get_singleton()->get("display/window/size/width"), ProjectSettings::get_singleton()->get("display/window/size/height")); Size2 screen_size = Size2(ProjectSettings::get_singleton()->get("display/window/size/width"), ProjectSettings::get_singleton()->get("display/window/size/height"));
@ -2406,6 +2413,7 @@ void CanvasItemEditor::_draw_axis() {
VisualServer::get_singleton()->canvas_item_add_line(ci, screen_endpoints[i], screen_endpoints[(i + 1) % 4], area_axis_color); VisualServer::get_singleton()->canvas_item_add_line(ci, screen_endpoints[i], screen_endpoints[(i + 1) % 4], area_axis_color);
} }
} }
}
void CanvasItemEditor::_draw_bones() { void CanvasItemEditor::_draw_bones() {
RID ci = viewport->get_canvas_item(); RID ci = viewport->get_canvas_item();
@ -2987,6 +2995,18 @@ void CanvasItemEditor::_popup_callback(int p_op) {
view_menu->get_popup()->set_item_checked(idx, show_grid); view_menu->get_popup()->set_item_checked(idx, show_grid);
viewport->update(); viewport->update();
} break; } break;
case SHOW_ORIGIN: {
show_origin = !show_origin;
int idx = view_menu->get_popup()->get_item_index(SHOW_ORIGIN);
view_menu->get_popup()->set_item_checked(idx, show_origin);
viewport->update();
} break;
case SHOW_VIEWPORT: {
show_viewport = !show_viewport;
int idx = view_menu->get_popup()->get_item_index(SHOW_VIEWPORT);
view_menu->get_popup()->set_item_checked(idx, show_viewport);
viewport->update();
} break;
case SNAP_USE_NODE_PARENT: { case SNAP_USE_NODE_PARENT: {
snap_node_parent = !snap_node_parent; snap_node_parent = !snap_node_parent;
int idx = smartsnap_config_popup->get_item_index(SNAP_USE_NODE_PARENT); int idx = smartsnap_config_popup->get_item_index(SNAP_USE_NODE_PARENT);
@ -3574,6 +3594,8 @@ Dictionary CanvasItemEditor::get_state() const {
state["snap_grid"] = snap_grid; state["snap_grid"] = snap_grid;
state["snap_guides"] = snap_guides; state["snap_guides"] = snap_guides;
state["show_grid"] = show_grid; state["show_grid"] = show_grid;
state["show_origin"] = show_origin;
state["show_viewport"] = show_viewport;
state["show_rulers"] = show_rulers; state["show_rulers"] = show_rulers;
state["show_guides"] = show_guides; state["show_guides"] = show_guides;
state["show_helpers"] = show_helpers; state["show_helpers"] = show_helpers;
@ -3667,6 +3689,18 @@ void CanvasItemEditor::set_state(const Dictionary &p_state) {
view_menu->get_popup()->set_item_checked(idx, show_grid); view_menu->get_popup()->set_item_checked(idx, show_grid);
} }
if (state.has("show_origin")) {
show_origin = state["show_origin"];
int idx = view_menu->get_popup()->get_item_index(SHOW_ORIGIN);
view_menu->get_popup()->set_item_checked(idx, show_origin);
}
if (state.has("show_viewport")) {
show_viewport = state["show_viewport"];
int idx = view_menu->get_popup()->get_item_index(SHOW_VIEWPORT);
view_menu->get_popup()->set_item_checked(idx, show_viewport);
}
if (state.has("show_rulers")) { if (state.has("show_rulers")) {
show_rulers = state["show_rulers"]; show_rulers = state["show_rulers"];
int idx = view_menu->get_popup()->get_item_index(SHOW_RULERS); int idx = view_menu->get_popup()->get_item_index(SHOW_RULERS);
@ -3940,6 +3974,8 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_helpers", TTR("Show Helpers"), KEY_H), SHOW_HELPERS); p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_helpers", TTR("Show Helpers"), KEY_H), SHOW_HELPERS);
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_rulers", TTR("Show Rulers"), KEY_R), SHOW_RULERS); p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_rulers", TTR("Show Rulers"), KEY_R), SHOW_RULERS);
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_guides", TTR("Show Guides"), KEY_Y), SHOW_GUIDES); p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_guides", TTR("Show Guides"), KEY_Y), SHOW_GUIDES);
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_origin", TTR("Show Origin")), SHOW_ORIGIN);
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_viewport", TTR("Show Viewport")), SHOW_VIEWPORT);
p->add_separator(); p->add_separator();
p->add_shortcut(ED_SHORTCUT("canvas_item_editor/center_selection", TTR("Center Selection"), KEY_F), VIEW_CENTER_TO_SELECTION); p->add_shortcut(ED_SHORTCUT("canvas_item_editor/center_selection", TTR("Center Selection"), KEY_F), VIEW_CENTER_TO_SELECTION);
p->add_shortcut(ED_SHORTCUT("canvas_item_editor/frame_selection", TTR("Frame Selection"), KEY_MASK_SHIFT | KEY_F), VIEW_FRAME_TO_SELECTION); p->add_shortcut(ED_SHORTCUT("canvas_item_editor/frame_selection", TTR("Frame Selection"), KEY_MASK_SHIFT | KEY_F), VIEW_FRAME_TO_SELECTION);
@ -4025,6 +4061,8 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
key_scale = false; key_scale = false;
show_grid = false; show_grid = false;
show_origin = true;
show_viewport = true;
show_helpers = false; show_helpers = false;
show_rulers = true; show_rulers = true;
show_guides = true; show_guides = true;

View File

@ -100,6 +100,8 @@ class CanvasItemEditor : public VBoxContainer {
SHOW_HELPERS, SHOW_HELPERS,
SHOW_RULERS, SHOW_RULERS,
SHOW_GUIDES, SHOW_GUIDES,
SHOW_ORIGIN,
SHOW_VIEWPORT,
LOCK_SELECTED, LOCK_SELECTED,
UNLOCK_SELECTED, UNLOCK_SELECTED,
GROUP_SELECTED, GROUP_SELECTED,
@ -215,6 +217,8 @@ class CanvasItemEditor : public VBoxContainer {
bool show_grid; bool show_grid;
bool show_rulers; bool show_rulers;
bool show_guides; bool show_guides;
bool show_origin;
bool show_viewport;
bool show_helpers; bool show_helpers;
float zoom; float zoom;