1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-17 14:11:06 +00:00

Add a dedicated editor for Camera2D limits

This commit is contained in:
kobewi
2025-03-14 22:15:27 +01:00
parent 03bd8ba9c2
commit 2bb3217819
4 changed files with 174 additions and 174 deletions

View File

@@ -39,18 +39,31 @@ class MenuButton;
class Camera2DEditor : public Control {
GDCLASS(Camera2DEditor, Control);
EditorPlugin *plugin = nullptr;
enum Menu {
MENU_SNAP_LIMITS_TO_VIEWPORT,
};
enum class Drag {
NONE,
LEFT,
TOP,
RIGHT,
BOTTOM,
CENTER,
} drag_type;
Rect2 drag_revert;
Vector2 center_drag_point;
Camera2D *selected_camera = nullptr;
friend class Camera2DEditorPlugin;
MenuButton *options = nullptr;
void _menu_option(int p_option);
void _snap_limits_to_viewport();
void _undo_snap_limits_to_viewport(const Rect2 &p_prev_rect);
void _snap_limits_to_viewport(Camera2D *p_camera);
void _update_overlays_if_needed(Camera2D *p_camera);
protected:
static void _bind_methods();
@@ -58,7 +71,11 @@ protected:
public:
void edit(Camera2D *p_camera);
Camera2DEditor();
bool forward_canvas_gui_input(const Ref<InputEvent> &p_event);
void forward_canvas_draw_over_viewport(Control *p_overlay);
Camera2DEditor(EditorPlugin *p_plugin);
};
class Camera2DEditorPlugin : public EditorPlugin {
@@ -66,15 +83,13 @@ class Camera2DEditorPlugin : public EditorPlugin {
Camera2DEditor *camera_2d_editor = nullptr;
Label *approach_to_move_rect = nullptr;
void _editor_theme_changed();
void _update_approach_text_visibility();
public:
virtual void edit(Object *p_object) override;
virtual bool handles(Object *p_object) const override;
virtual void make_visible(bool p_visible) override;
virtual bool forward_canvas_gui_input(const Ref<InputEvent> &p_event) override { return camera_2d_editor->forward_canvas_gui_input(p_event); }
virtual void forward_canvas_draw_over_viewport(Control *p_overlay) override { camera_2d_editor->forward_canvas_draw_over_viewport(p_overlay); }
Camera2DEditorPlugin();
};