diff options
author | Juan Linietsky <reduzio@gmail.com> | 2014-05-04 22:50:23 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2014-05-04 22:50:23 -0300 |
commit | 72ae89c5aa8da9110ec8f89e5558d5d04935f3b5 (patch) | |
tree | 453b2c8b8cc0edc588cee2dd3e440b30ff729ae2 /tools/editor/plugins/spatial_editor_plugin.h | |
parent | 3c17e0c91548299b60a6d3998eadb303418512cc (diff) |
Lots of 3D improvements:
-Object Manipulator Gizmo keeps proper scale in all windows and projections, (configurable on settings too).
-Manipulator gizmos for other objects (camera, shapes, etc) massively improved and bug-fixed.
-Manipulator gizmos are different for edited object and other objects.
-Properly highlight manipulator gizmo handles when hovered.
-Fixed bugs in fragment program when using more than 1 light together.
-Reload png/jpg files automatically in editor if edited externally.
-Added 4-stages Parallel Split Shadow Mapping, to improve shadow quality in large scenarios
-Added PCF13 to improve smoothness of shadow borders
-General optimization of directional light shadow mapping for Orthogonal,PSM and PSSM.
-Fixed normal mapping when importing DAE files, works nicely now.
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 aac2d62002..4bc3b553ef 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; } |