123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- #ifndef PATH_EDITOR_PLUGIN_H
- #define PATH_EDITOR_PLUGIN_H
- #include "editor/spatial_editor_gizmos.h"
- #include "scene/3d/path.h"
- class PathSpatialGizmo : public EditorSpatialGizmo {
- GDCLASS(PathSpatialGizmo, EditorSpatialGizmo);
- Path *path;
- mutable Vector3 original;
- mutable float orig_in_length;
- mutable float orig_out_length;
- public:
- virtual String get_handle_name(int p_idx) const;
- virtual Variant get_handle_value(int p_idx);
- virtual void set_handle(int p_idx, Camera *p_camera, const Point2 &p_point);
- virtual void commit_handle(int p_idx, const Variant &p_restore, bool p_cancel = false);
- virtual void redraw();
- PathSpatialGizmo(Path *p_path = NULL);
- };
- class PathSpatialGizmoPlugin : public EditorSpatialGizmoPlugin {
- GDCLASS(PathSpatialGizmoPlugin, EditorSpatialGizmoPlugin);
- protected:
- Ref<EditorSpatialGizmo> create_gizmo(Spatial *p_spatial);
- public:
- String get_name() const;
- PathSpatialGizmoPlugin();
- };
- class PathEditorPlugin : public EditorPlugin {
- GDCLASS(PathEditorPlugin, EditorPlugin);
- Separator *sep;
- ToolButton *curve_create;
- ToolButton *curve_edit;
- ToolButton *curve_del;
- ToolButton *curve_close;
- MenuButton *handle_menu;
- EditorNode *editor;
- Path *path;
- void _mode_changed(int p_idx);
- void _close_curve();
- void _handle_option_pressed(int p_option);
- bool handle_clicked;
- bool mirror_handle_angle;
- bool mirror_handle_length;
- enum HandleOption {
- HANDLE_OPTION_ANGLE,
- HANDLE_OPTION_LENGTH
- };
- protected:
- void _notification(int p_what);
- static void _bind_methods();
- public:
- Path *get_edited_path() { return path; }
- static PathEditorPlugin *singleton;
- virtual bool forward_spatial_gui_input(Camera *p_camera, const Ref<InputEvent> &p_event);
-
-
- virtual String get_name() const { return "Path"; }
- bool has_main_screen() const { return false; }
- virtual void edit(Object *p_object);
- virtual bool handles(Object *p_object) const;
- virtual void make_visible(bool p_visible);
- bool mirror_angle_enabled() { return mirror_handle_angle; }
- bool mirror_length_enabled() { return mirror_handle_length; }
- bool is_handle_clicked() { return handle_clicked; }
- void set_handle_clicked(bool clicked) { handle_clicked = clicked; }
- PathEditorPlugin(EditorNode *p_node);
- ~PathEditorPlugin();
- };
- #endif
|