diff options
Diffstat (limited to 'tools/editor/plugins/spatial_editor_plugin.h')
| -rw-r--r-- | tools/editor/plugins/spatial_editor_plugin.h | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/tools/editor/plugins/spatial_editor_plugin.h b/tools/editor/plugins/spatial_editor_plugin.h index aac2d6200..4bc3b553e 100644 --- a/tools/editor/plugins/spatial_editor_plugin.h +++ b/tools/editor/plugins/spatial_editor_plugin.h @@ -44,8 +44,13 @@ class SpatialEditorGizmos; class SpatialEditorGizmo : public SpatialGizmo { OBJ_TYPE(SpatialEditorGizmo,SpatialGizmo); + + bool selected; public: + void set_selected(bool p_selected) { selected=p_selected; } + bool is_selected() const { return selected; } + virtual String get_handle_name(int p_idx) const; virtual Variant get_handle_value(int p_idx) const; virtual void set_handle(int p_idx,Camera *p_camera, const Point2& p_point); @@ -74,8 +79,13 @@ class SpatialEditorViewport : public Control { VIEW_ENVIRONMENT, VIEW_ORTHOGONAL }; + enum { + GIZMO_BASE_LAYER=25 + }; + int index; void _menu_option(int p_option); + Size2 prev_size; EditorNode *editor; EditorSelection *editor_selection; @@ -90,6 +100,7 @@ class SpatialEditorViewport : public Control { Camera *camera; bool transforming; bool orthogonal; + float gizmo_scale; void _compute_edit(const Point2& p_point); void _clear_selected(); @@ -174,6 +185,9 @@ class SpatialEditorViewport : public Control { Cursor() { x_rot=y_rot=0; distance=4; region_select=false; } } cursor; + RID move_gizmo_instance[3], rotate_gizmo_instance[3]; + + String last_message; String message; float message_time; @@ -193,19 +207,24 @@ class SpatialEditorViewport : public Control { void _preview_exited_scene(); void _toggle_camera_preview(bool); + void _init_gizmo_instance(int p_idx); + + protected: void _notification(int p_what); static void _bind_methods(); public: + void update_transform_gizmo_view(); + void set_can_preview(Camera* p_preview); void set_state(const Dictionary& p_state); Dictionary get_state() const; - SpatialEditorViewport(SpatialEditor *p_spatial_editor,EditorNode *p_editor); + SpatialEditorViewport(SpatialEditor *p_spatial_editor,EditorNode *p_editor,int p_index); }; @@ -275,11 +294,12 @@ private: bool grid_enabled; Ref<Mesh> move_gizmo[3], rotate_gizmo[3]; - RID move_gizmo_instance[3], rotate_gizmo_instance[3]; Ref<FixedMaterial> gizmo_color[3]; Ref<FixedMaterial> gizmo_hl; + int over_gizmo_handle; + Ref<Mesh> selection_box; @@ -365,8 +385,6 @@ private: HBoxContainer *hbc_menu; - void _update_transform_gizmo_view(); - // // void _generate_selection_box(); @@ -386,10 +404,13 @@ private: List<EditorPlugin*> gizmo_plugins; + Spatial *selected; + void _request_gizmo(Object* p_obj); static SpatialEditor *singleton; + void _node_removed(Node* p_node); SpatialEditorGizmos *gizmos; SpatialEditor(); @@ -422,6 +443,9 @@ public: float get_rotate_snap() const { return snap_rotate->get_text().to_double(); } float get_scale_snap() const { return snap_scale->get_text().to_double(); } + Ref<Mesh> get_move_gizmo(int idx) const { return move_gizmo[idx]; } + Ref<Mesh> get_rotate_gizmo(int idx) const { return rotate_gizmo[idx]; } + void update_transform_gizmo(); void select_gizmo_hilight_axis(int p_axis); @@ -442,6 +466,11 @@ public: VSplitContainer *get_shader_split(); HSplitContainer *get_palette_split(); + Spatial *get_selected() { return selected; } + + int get_over_gizmo_handle() const { return over_gizmo_handle; } + void set_over_gizmo_handle(int idx) { over_gizmo_handle=idx; } + void set_can_preview(Camera* p_preview); Camera *get_camera() { return NULL; } |
