mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-14 18:27:58 -06:00
Tech ENABLE_RAYCAST_PICKING - Refactoring to allow for easier update of raycasters transform
(cherry picked from commit prusa3d/PrusaSlicer@9ac5ab857b)
This commit is contained in:
parent
29be4cc9a3
commit
ab090bf20d
6 changed files with 64 additions and 73 deletions
|
@ -37,6 +37,7 @@ public:
|
|||
// Starting value for ids to avoid clashing with ids used by GLVolumes
|
||||
// (254 is choosen to leave some space for forward compatibility)
|
||||
static const unsigned int BASE_ID = 255 * 255 * 254;
|
||||
static const unsigned int GRABBER_ELEMENTS_MAX_COUNT = 7;
|
||||
|
||||
static float INV_ZOOM;
|
||||
|
||||
|
@ -86,8 +87,8 @@ protected:
|
|||
ColorRGBA hover_color{GRABBER_HOVER_COL};
|
||||
EGrabberExtension extensions{ EGrabberExtension::None };
|
||||
// the picking id shared by all the elements
|
||||
int picking_id{ -1 };
|
||||
bool elements_registered_for_picking{ false };
|
||||
PickingId picking_id{ -1 };
|
||||
std::array<std::shared_ptr<SceneRaycasterItem>, GRABBER_ELEMENTS_MAX_COUNT> raycasters = { nullptr };
|
||||
|
||||
Grabber() = default;
|
||||
~Grabber();
|
||||
|
@ -98,7 +99,7 @@ protected:
|
|||
float get_dragging_half_size(float size) const;
|
||||
PickingModel &get_cube();
|
||||
|
||||
void register_raycasters_for_picking(int id);
|
||||
void register_raycasters_for_picking(PickingId id);
|
||||
void unregister_raycasters_for_picking();
|
||||
|
||||
private:
|
||||
|
@ -212,7 +213,7 @@ public:
|
|||
int get_count() { return ++count; }
|
||||
std::string get_gizmo_name() { return on_get_name(); }
|
||||
|
||||
void register_raycasters_for_picking(bool use_group_id = false) { register_grabbers_for_picking(use_group_id); on_register_raycasters_for_picking(); }
|
||||
void register_raycasters_for_picking() { register_grabbers_for_picking(); on_register_raycasters_for_picking(); }
|
||||
void unregister_raycasters_for_picking() { unregister_grabbers_for_picking(); on_unregister_raycasters_for_picking(); }
|
||||
|
||||
protected:
|
||||
|
@ -238,7 +239,7 @@ protected:
|
|||
void GizmoImguiEnd();
|
||||
void GizmoImguiSetNextWIndowPos(float &x, float y, int flag, float pivot_x = 0.0f, float pivot_y = 0.0f);
|
||||
|
||||
void register_grabbers_for_picking(bool use_group_id = false);
|
||||
void register_grabbers_for_picking();
|
||||
void unregister_grabbers_for_picking();
|
||||
virtual void on_register_raycasters_for_picking() {}
|
||||
virtual void on_unregister_raycasters_for_picking() {}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue