You've already forked godot
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:
@@ -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();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user