// Copyright (c) 2023 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #pragma once #include "scene/SceneItem.hpp" namespace Dawn { enum CameraType { PERSPECTIVE, ORTHOGONAL }; class Camera : public SceneComponent { public: float_t clipNear = 0.01f; float_t clipFar = 1000.0f; enum CameraType type = CameraType::PERSPECTIVE; float_t fov = 0.785398f; float_t orthoLeft = -1.0f; float_t orthoRight = 1.0f; float_t orthoBottom = -1.0f; float_t orthoTop = 1.0f; // std::shared_ptr renderTarget; void onInit() override; /** * Returns the aspect ratio that the camera is using. In future I may * allow you to specify a custom ratio for stylistic reasons but for now I * just take the ratio of the specific frame buffer. * * @return The aspect ratio as a ratio of w/h. */ float_t getAspect(); /** * Returns the projection matrix for this camera. * * @return Projection matrix. */ glm::mat4 getProjection(); }; }