/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #pragma once #include "Gesture.hpp" #include "TouchInfo.hpp" #include "GestureInfos.hpp" #include "Base/Event.hpp" namespace OpenVulkano::Input { class GesturePan final : public Gesture { PanInfo m_panInfo; std::vector m_pendingTouches; uint32_t m_requiredTouchInputs; bool m_paused = false; void TryStart(const Touch& touch); Math::Vector2f CalculatePosition() const; public: GesturePan(uint32_t requiredTouchInputs) : Gesture(TYPE_PAN), m_requiredTouchInputs(requiredTouchInputs) {} void Cancel() override; void Reset() override { if (IsActive()) Cancel(); m_pendingTouches.clear(); } void TouchDown(const Touch& touch) override; void TouchUp(const Touch& touch) override; void TouchMoved(const Touch& touch) override; Event OnPanStarted, OnPanMoved, OnPanEnded; }; }