summaryrefslogtreecommitdiffstats
path: root/editor/plugins/path_3d_editor_plugin.h
diff options
context:
space:
mode:
Diffstat (limited to 'editor/plugins/path_3d_editor_plugin.h')
-rw-r--r--editor/plugins/path_3d_editor_plugin.h16
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);
};