3#include "../Math/Vec3.h"
4#include "../Math/Mat4.h"
5#include "../Math/Ray.h"
43 BaseCamera(
const std::string &name,
float aspect,
float nearPlane,
float farPlane);
67 virtual void SetName(
const std::string &name);
99 static std::unique_ptr<BaseCamera>
Create(
CameraType type,
const std::string &name =
"",
100 float aspect = 16.0f / 9.0f,
float nearPlane = 0.1f,
float farPlane = 1000.0f);
138 virtual void Zoom(
float delta);
CameraType
Enumeration of all supported camera types.
Definition BaseCamera.h:17
Abstract base class for all camera types.
Definition BaseCamera.h:34
virtual void SetTransform(const Mat4 &transform)
Definition BaseCamera.cpp:144
virtual Mat4 GetViewProjectionMatrix() const
Definition BaseCamera.cpp:43
float GetFarPlane() const
Definition BaseCamera.h:77
virtual void UpdatePositionFromAngles()
Definition BaseCamera.cpp:331
Vec3 GetRight() const
Definition BaseCamera.h:74
virtual void ProcessKeyboardInput()
Definition BaseCamera.cpp:266
virtual ~BaseCamera()
Virtual destructor.
static std::unique_ptr< BaseCamera > Create(CameraType type, const std::string &name="", float aspect=16.0f/9.0f, float nearPlane=0.1f, float farPlane=1000.0f)
Definition BaseCamera.cpp:365
const Vec3 & GetUp() const
Definition BaseCamera.h:72
virtual CameraAnimator & GetAnimator()
Definition BaseCamera.cpp:389
float m_ViewportX
Definition BaseCamera.h:125
virtual void FocusOnObject(const Vec3 &objectPosition)
Definition BaseCamera.cpp:353
float m_MouseSensitivity
Definition BaseCamera.h:115
std::string m_Name
Definition BaseCamera.h:104
virtual void ProcessMouseInput()
Definition BaseCamera.cpp:193
bool m_isMouseMovementActive
Definition BaseCamera.h:114
virtual void FocusOnObjectSmooth(const Vec3 &objectPosition, float duration=1.0f)
Definition BaseCamera.cpp:381
Mat4 m_ViewMatrix
Definition BaseCamera.h:148
float GetAspectRatio() const
Definition BaseCamera.h:75
float m_ZoomSpeed
Definition BaseCamera.h:116
float m_Yaw
Definition BaseCamera.h:120
float m_ViewportY
Definition BaseCamera.h:126
float m_Pitch
Definition BaseCamera.h:121
bool m_ViewMatrixDirty
Definition BaseCamera.h:149
virtual bool IsMouseInViewport() const
Definition BaseCamera.cpp:129
virtual Mat4 GetTransform() const
Definition BaseCamera.cpp:159
virtual void SetClippingPlanes(float nearPlane, float farPlane)
Definition BaseCamera.cpp:83
virtual Ray ScreenToWorldRay(float screenX, float screenY) const =0
virtual std::string GetTypeName() const =0
virtual void SetInputEnabled(bool enabled)
Definition BaseCamera.cpp:116
std::unique_ptr< CameraAnimator > m_Animator
Definition BaseCamera.h:145
virtual Mat4 GetViewMatrix() const
Definition BaseCamera.cpp:34
Vec3 m_Up
Definition BaseCamera.h:107
float m_Aspect
Definition BaseCamera.h:108
void UpdateViewMatrix() const
Definition BaseCamera.cpp:308
virtual bool IsAnimating() const
Definition BaseCamera.cpp:394
float m_Far
Definition BaseCamera.h:110
virtual void ProcessScrollInput()
Definition BaseCamera.cpp:300
virtual void UpdateAnglesFromPosition()
Definition BaseCamera.cpp:343
float m_Near
Definition BaseCamera.h:109
virtual void SetMouseMovementActive(bool active)
Definition BaseCamera.cpp:29
virtual CameraType GetType() const =0
virtual void SetAspectRatio(float aspect)
Definition BaseCamera.cpp:78
virtual void SetPosition(const Vec3 &position)
Definition BaseCamera.cpp:48
bool m_InputEnabled
Definition BaseCamera.h:113
float m_Distance
Definition BaseCamera.h:122
const Vec3 & GetTarget() const
Definition BaseCamera.h:71
const Vec3 & GetPosition() const
Definition BaseCamera.h:70
float m_ViewportHeight
Definition BaseCamera.h:128
Vec3 m_Position
Definition BaseCamera.h:105
float GetNearPlane() const
Definition BaseCamera.h:76
virtual void SetUp(const Vec3 &up)
Definition BaseCamera.cpp:64
virtual void Zoom(float delta)
Definition BaseCamera.cpp:314
virtual void SetViewportBounds(float x, float y, float width, float height)
Definition BaseCamera.cpp:121
virtual void SetName(const std::string &name)
Definition BaseCamera.cpp:89
virtual Mat4 GetProjectionMatrix() const =0
const std::string & GetName() const
Definition BaseCamera.h:78
virtual bool IsInputEnabled() const
Definition BaseCamera.h:85
Vec3 GetForward() const
Definition BaseCamera.h:73
Vec3 m_Target
Definition BaseCamera.h:106
virtual void ProcessInput()
Definition BaseCamera.cpp:109
virtual void SetTarget(const Vec3 &target)
Definition BaseCamera.cpp:56
float m_ViewportWidth
Definition BaseCamera.h:127
bool m_CursorHidden
Definition BaseCamera.h:117
virtual void Update()
Definition BaseCamera.cpp:94
virtual void LookAt(const Vec3 &position, const Vec3 &target, const Vec3 &up)
Definition BaseCamera.cpp:70
Handles smooth camera transitions and animations.
Definition CameraAnimator.h:18
4x4 Matrix structure for 3D transformations and projections.
Definition Mat4.h:16
Represents a ray in 3D space with an origin and direction.
Definition Ray.h:15
Vec3 Normalize() const
Definition vec3.cpp:39
Vec3 Cross(const Vec3 &other) const
Definition vec3.cpp:52