#pragma once #include "moveable.h" #include "selectable.h" #include "state.h" #include "vmath.h" #include namespace VISEQ::BASE { class Draggable : public Movable, public Selectable{ public: Draggable() {} Draggable(float x, float y) : Movable(Vec2Df(x, y), 960.0f) {} Draggable(Vec2Df p) : Movable(p, 960.0f) {} virtual ~Draggable() {} std::shared_ptr state = APP::State::get(); Vec2Df drag_offset; bool picked_up = false; std::chrono::time_point last_tp; virtual bool entered() override; virtual bool exited() override; virtual bool clicked() override; virtual bool pickedUp(); virtual void pickUp() override; virtual void pickUp(Vec2Df selection_origin) override; virtual void drag(Vec2Df new_position) override; virtual void putDown() override; virtual bool select() override; virtual void deselect() override; }; }