/* * 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 "Camera.hpp" #include "Math/Math.hpp" namespace OpenVulkano::Scene { class MorphableCamera : public PerspectiveCamera { float m_morphState; Math::Matrix4f m_orthoMatrix; public: MorphableCamera(float fovDegrees, float width, float height, float nearPlane, float farPlane) : PerspectiveCamera(fovDegrees, nearPlane, farPlane, width, height), m_morphState(0.0f) { UpdateProjectionMatrix(); } void SetMorphState(float state) { m_morphState = Math::Utils::clamp(state, 0.0f, 1.0f); UpdateProjectionMatrix(); } void UpdateProjectionMatrix() override; }; }