#pragma once #include #include class DraggingState { public: DraggingState(const std::function& keyUpdateCallback); ~DraggingState() = default; void Enable(); void Disable(); void UpdateDraggingState() noexcept; bool IsDragging() const noexcept; bool IsSelectManyZonesState() const noexcept; private: void OnMouseDown(); std::atomic m_mouseState; SecondaryMouseButtonsHook m_mouseHook; KeyState m_leftShiftKeyState; KeyState m_rightShiftKeyState; KeyState m_ctrlKeyState; std::function m_keyUpdateCallback; bool m_dragging{}; // True if we should be showing zone hints while dragging };