/* * 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 "MorphableCamera.hpp" #include "Controller/CameraController.hpp" #include "Input/InputManager.hpp" #include "Input/InputKey.hpp" #include "Math/Math.hpp" namespace OpenVulkano::Scene { class MorphableCameraController final : public CameraController { double m_animationDuration; double m_currentTime; bool m_isMorphing; bool m_targetMorphStatePerspective; // true for perspective, false for orthographic Input::InputAction* m_actionMorph; bool m_wasMorphingKeyDown = false; public: MorphableCameraController(MorphableCamera* camera = nullptr); void Init(MorphableCamera* camera); void Tick() override; void SetDuration(double duration) { m_animationDuration = duration; } double GetDuration() { return m_animationDuration; } void SetTargetState(bool toPerspective) { m_targetMorphStatePerspective = toPerspective; } void Reset() { m_currentTime = 0; } }; }