43 int2 m_dragStartScreenPos{ 0, 0 };
44 uint32_t m_dragPayloadType = 0;
45 uintptr_t m_dragPayloadValue = 0;
46 std::any m_dragPayload;
59 uint32_t m_dragEventPayloadType = 0;
60 uintptr_t m_dragEventPayloadValue = 0;
63 ID ResolveDropTarget(
ID hoveredID)
const;
65 void SetEventPayload(
ID sourceID, uint32_t payloadType, uintptr_t payloadValue);
87 const std::any&
GetPayload()
const {
return m_dragPayload; }
93 void Begin(
ID sourceID, uint32_t payloadType, uintptr_t payloadValue,
int2 startScreenPos,
Drag-and-drop state, owned by GUIStateManager.
Definition gui_drag_drop_state.h:39
void SetStartDistance(int32_t pixels)
Pointer travel in pixels before a pending drag starts.
Definition gui_drag_drop_state.h:98
ID GetDragOverID() const
Definition gui_drag_drop_state.h:71
void SetFrameVisualizerOverride(DragVisualizer visualizer)
Definition gui_drag_drop_state.h:103
const std::any & GetPayload() const
Definition gui_drag_drop_state.h:87
void UpdateFromInput(const InputState &in)
ID GetEnterTargetID() const
Definition gui_drag_drop_state.h:78
bool IsDragging() const
Definition gui_drag_drop_state.h:69
void Begin(ID sourceID, uint32_t payloadType, uintptr_t payloadValue, int2 startScreenPos, std::any payload={}, DragVisualizer sourceVisualizer={})
Arms a pending drag from sourceID; ignored for an Invalid source or payload type 0.
void EndFrameUpdate(ID hoveredForDrop, bool leftButtonDown)
bool IsDropTargetFor(ID id, uint32_t acceptedPayloadType=0) const
True when an active drag is over id and its payload type is acceptedPayloadType (0 accepts any type).
ID GetOutTargetID() const
Definition gui_drag_drop_state.h:80
uintptr_t GetPayloadValue() const
Definition gui_drag_drop_state.h:72
void SetSourceVisualizer(DragVisualizer sourceVisualizer)
ID GetOverTargetID() const
Definition gui_drag_drop_state.h:79
ID GetDropTargetID() const
Definition gui_drag_drop_state.h:81
ID GetDraggedID() const
Definition gui_drag_drop_state.h:70
ID GetValidatedTargetID() const
Definition gui_drag_drop_state.h:82
bool InvokeActiveVisualizer(const DragVisualContext &context) const
uint32_t GetEventPayloadType() const
Definition gui_drag_drop_state.h:85
void ClearFrameVisualizerOverride()
uintptr_t GetEventPayloadValue() const
Definition gui_drag_drop_state.h:86
void SetValidatedTargetID(ID id)
Definition gui_drag_drop_state.h:101
ID GetEventSourceID() const
Definition gui_drag_drop_state.h:84
void ClearEvents()
Clears per-frame events. GUIStateManager::EndFrame calls it; the input manager may too.
std::function< void(const DragVisualContext &context)> DragVisualizer
Draws the dragged item while a drag is in progress.
Definition gui_drag_drop_state.h:33
Definition gui_logging.h:24
What a DragVisualizer draws from: the pointer, the source and target, and the payload.
Definition gui_drag_drop_state.h:20
uintptr_t payloadValue
Definition gui_drag_drop_state.h:28
ID targetID
Definition gui_drag_drop_state.h:23
uint32_t payloadType
Definition gui_drag_drop_state.h:27
const std::any * payload
Definition gui_drag_drop_state.h:29
tachyon::int2 screenPos
Definition gui_drag_drop_state.h:21
bool leftMouseDown
Definition gui_drag_drop_state.h:25
bool isDropValid
Definition gui_drag_drop_state.h:24
ID sourceID
Definition gui_drag_drop_state.h:22
A 64-bit element ID whose bit layout depends on its IDMode.
Definition gui_id.h:23
static constexpr ID Invalid()
The "no element" ID (all bits zero); also the default for optional ID parameters.
Definition gui_id.h:66
Integer 2D vector.
Definition gui_base_types.h:19