Files
viseq/src/draggable.h
T

37 lines
960 B
C++

#pragma once
#include "moveable.h"
#include "selectable.h"
#include "state.h"
#include "vmath.h"
#include <chrono>
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<APP::State> state = APP::State::get();
Vec2Df drag_offset;
bool picked_up = false;
std::chrono::time_point<std::chrono::high_resolution_clock> 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;
};
}