2024-11-10 01:56:33 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "moveable.h"
|
2024-11-17 02:40:31 +01:00
|
|
|
#include "selectable.h"
|
|
|
|
|
#include "state.h"
|
2024-11-10 01:56:33 +01:00
|
|
|
#include "vmath.h"
|
2026-07-19 02:39:19 +02:00
|
|
|
#include <chrono>
|
2024-11-10 01:56:33 +01:00
|
|
|
|
|
|
|
|
namespace VISEQ::BASE {
|
2024-11-17 02:40:31 +01:00
|
|
|
class Draggable : public Movable, public Selectable{
|
2024-11-10 01:56:33 +01:00
|
|
|
public:
|
|
|
|
|
Draggable() {}
|
|
|
|
|
Draggable(float x, float y) : Movable(Vec2Df(x, y), 960.0f) {}
|
|
|
|
|
Draggable(Vec2Df p) : Movable(p, 960.0f) {}
|
|
|
|
|
virtual ~Draggable() {}
|
|
|
|
|
|
2024-11-24 03:08:06 +01:00
|
|
|
std::shared_ptr<APP::State> state = APP::State::get();
|
|
|
|
|
|
2024-11-10 01:56:33 +01:00
|
|
|
Vec2Df drag_offset;
|
|
|
|
|
|
|
|
|
|
bool picked_up = false;
|
|
|
|
|
|
2026-07-19 02:39:19 +02:00
|
|
|
std::chrono::time_point<std::chrono::high_resolution_clock> last_tp;
|
|
|
|
|
|
2026-05-04 18:40:00 +02:00
|
|
|
virtual bool entered() override;
|
|
|
|
|
virtual bool exited() override;
|
2026-07-19 02:39:19 +02:00
|
|
|
virtual bool clicked() override;
|
2026-05-04 18:40:00 +02:00
|
|
|
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;
|
2024-11-10 01:56:33 +01:00
|
|
|
};
|
|
|
|
|
}
|