diff options
Diffstat (limited to 'editor/plugins/path_3d_editor_plugin.h')
-rw-r--r-- | editor/plugins/path_3d_editor_plugin.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/editor/plugins/path_3d_editor_plugin.h b/editor/plugins/path_3d_editor_plugin.h index 5a5f76b015..931ac7128c 100644 --- a/editor/plugins/path_3d_editor_plugin.h +++ b/editor/plugins/path_3d_editor_plugin.h @@ -63,6 +63,8 @@ class Path3DGizmo : public EditorNode3DGizmo { // Cache information of secondary handles. Vector<HandleInfo> _secondary_handles_info; + void _update_transform_gizmo(); + public: virtual String get_handle_name(int p_id, bool p_secondary) const override; virtual Variant get_handle_value(int p_id, bool p_secondary) const override; @@ -78,11 +80,25 @@ class Path3DGizmoPlugin : public EditorNode3DGizmoPlugin { float disk_size = 0.8; + // Locking basis is meant to ensure a predictable behavior during translation of the curve points in "local space transform mode". + // Without the locking, the gizmo/point, in "local space transform mode", wouldn't follow a straight path and would curve and twitch in an unpredictable way. + HashMap<int, Basis> transformation_locked_basis; + protected: Ref<EditorNode3DGizmo> create_gizmo(Node3D *p_spatial) override; public: + virtual bool has_gizmo(Node3D *p_spatial) override; String get_gizmo_name() const override; + + virtual void redraw(EditorNode3DGizmo *p_gizmo) override; + + virtual int subgizmos_intersect_ray(const EditorNode3DGizmo *p_gizmo, Camera3D *p_camera, const Vector2 &p_point) const override; + virtual Vector<int> subgizmos_intersect_frustum(const EditorNode3DGizmo *p_gizmo, const Camera3D *p_camera, const Vector<Plane> &p_frustum) const override; + virtual Transform3D get_subgizmo_transform(const EditorNode3DGizmo *p_gizmo, int p_id) const override; + virtual void set_subgizmo_transform(const EditorNode3DGizmo *p_gizmo, int p_id, Transform3D p_transform) override; + virtual void commit_subgizmos(const EditorNode3DGizmo *p_gizmo, const Vector<int> &p_ids, const Vector<Transform3D> &p_restore, bool p_cancel = false) override; + int get_priority() const override; Path3DGizmoPlugin(float p_disk_size); }; |