Voltray Engine Docs
Loading...
Searching...
No Matches
BaseCamera Class Referenceabstract

Abstract base class for all camera types. More...

#include <BaseCamera.h>

Inheritance diagram for BaseCamera:
Collaboration diagram for BaseCamera:

Public Member Functions

 BaseCamera (const std::string &name, float aspect, float nearPlane, float farPlane)
 Constructor with basic camera parameters.
 
virtual ~BaseCamera ()
 Virtual destructor.
 
virtual Mat4 GetProjectionMatrix () const =0
 
virtual CameraType GetType () const =0
 
virtual std::string GetTypeName () const =0
 
virtual Ray ScreenToWorldRay (float screenX, float screenY) const =0
 
virtual Mat4 GetViewMatrix () const
 
virtual Mat4 GetViewProjectionMatrix () const
 
virtual void SetPosition (const Vec3 &position)
 
virtual void SetTarget (const Vec3 &target)
 
virtual void SetUp (const Vec3 &up)
 
virtual void LookAt (const Vec3 &position, const Vec3 &target, const Vec3 &up)
 
virtual void SetAspectRatio (float aspect)
 
virtual void SetClippingPlanes (float nearPlane, float farPlane)
 
virtual void SetName (const std::string &name)
 
const Vec3GetPosition () const
 
const Vec3GetTarget () const
 
const Vec3GetUp () const
 
Vec3 GetForward () const
 
Vec3 GetRight () const
 
float GetAspectRatio () const
 
float GetNearPlane () const
 
float GetFarPlane () const
 
const std::string & GetName () const
 
virtual void Update ()
 
virtual void ProcessInput ()
 
virtual void SetInputEnabled (bool enabled)
 
virtual void SetMouseMovementActive (bool active)
 
virtual bool IsInputEnabled () const
 
virtual void SetViewportBounds (float x, float y, float width, float height)
 
virtual bool IsMouseInViewport () const
 
virtual void SetTransform (const Mat4 &transform)
 
virtual Mat4 GetTransform () const
 
virtual void FocusOnObjectSmooth (const Vec3 &objectPosition, float duration=1.0f)
 
virtual CameraAnimatorGetAnimator ()
 
virtual bool IsAnimating () const
 

Static Public Member Functions

static std::unique_ptr< BaseCameraCreate (CameraType type, const std::string &name="", float aspect=16.0f/9.0f, float nearPlane=0.1f, float farPlane=1000.0f)
 

Protected Member Functions

virtual void ProcessMouseInput ()
 
virtual void ProcessKeyboardInput ()
 
virtual void ProcessScrollInput ()
 
virtual void UpdatePositionFromAngles ()
 
virtual void UpdateAnglesFromPosition ()
 
virtual void Zoom (float delta)
 
virtual void FocusOnObject (const Vec3 &objectPosition)
 
void UpdateViewMatrix () const
 

Protected Attributes

std::string m_Name
 
Vec3 m_Position {0.0f, 0.0f, 3.0f}
 
Vec3 m_Target {0.0f, 0.0f, 0.0f}
 
Vec3 m_Up {0.0f, 1.0f, 0.0f}
 
float m_Aspect
 
float m_Near
 
float m_Far
 
bool m_InputEnabled = true
 
bool m_isMouseMovementActive = true
 
float m_MouseSensitivity = 0.1f
 
float m_ZoomSpeed = 1.0f
 
bool m_CursorHidden = false
 
float m_Yaw = -90.0f
 
float m_Pitch = 0.0f
 
float m_Distance = 3.0f
 
float m_ViewportX = 0.0f
 
float m_ViewportY = 0.0f
 
float m_ViewportWidth = 0.0f
 
float m_ViewportHeight = 0.0f
 
std::unique_ptr< CameraAnimatorm_Animator
 
Mat4 m_ViewMatrix
 
bool m_ViewMatrixDirty = true
 

Detailed Description

Abstract base class for all camera types.

This class provides the common interface and functionality for all camera types. It handles basic camera operations like positioning, input handling, and provides pure virtual methods for projection-specific calculations.

The design allows cameras to be used both as viewport cameras and potentially as scene objects in the future.

Constructor & Destructor Documentation

◆ BaseCamera()

BaseCamera::BaseCamera ( const std::string &  name,
float  aspect,
float  nearPlane,
float  farPlane 
)

Constructor with basic camera parameters.

Parameters
nameCamera name/identifier
aspectAspect ratio (width/height)
nearPlaneNear clipping plane distance
farPlaneFar clipping plane distance

◆ ~BaseCamera()

BaseCamera::~BaseCamera ( )
virtualdefault

Virtual destructor.

Member Function Documentation

◆ Create()

std::unique_ptr< BaseCamera > BaseCamera::Create ( CameraType  type,
const std::string &  name = "",
float  aspect = 16.0f / 9.0f,
float  nearPlane = 0.1f,
float  farPlane = 1000.0f 
)
static

◆ FocusOnObject()

void BaseCamera::FocusOnObject ( const Vec3 objectPosition)
protectedvirtual

◆ FocusOnObjectSmooth()

void BaseCamera::FocusOnObjectSmooth ( const Vec3 objectPosition,
float  duration = 1.0f 
)
virtual

◆ GetAnimator()

CameraAnimator & BaseCamera::GetAnimator ( )
virtual

◆ GetAspectRatio()

float BaseCamera::GetAspectRatio ( ) const
inline

◆ GetFarPlane()

float BaseCamera::GetFarPlane ( ) const
inline

◆ GetForward()

Vec3 BaseCamera::GetForward ( ) const
inline

◆ GetName()

const std::string & BaseCamera::GetName ( ) const
inline

◆ GetNearPlane()

float BaseCamera::GetNearPlane ( ) const
inline

◆ GetPosition()

const Vec3 & BaseCamera::GetPosition ( ) const
inline

◆ GetProjectionMatrix()

virtual Mat4 BaseCamera::GetProjectionMatrix ( ) const
pure virtual

Implemented in OrthographicCamera, and PerspectiveCamera.

◆ GetRight()

Vec3 BaseCamera::GetRight ( ) const
inline

◆ GetTarget()

const Vec3 & BaseCamera::GetTarget ( ) const
inline

◆ GetTransform()

Mat4 BaseCamera::GetTransform ( ) const
virtual

◆ GetType()

virtual CameraType BaseCamera::GetType ( ) const
pure virtual

Implemented in OrthographicCamera, and PerspectiveCamera.

◆ GetTypeName()

virtual std::string BaseCamera::GetTypeName ( ) const
pure virtual

Implemented in OrthographicCamera, and PerspectiveCamera.

◆ GetUp()

const Vec3 & BaseCamera::GetUp ( ) const
inline

◆ GetViewMatrix()

Mat4 BaseCamera::GetViewMatrix ( ) const
virtual

◆ GetViewProjectionMatrix()

Mat4 BaseCamera::GetViewProjectionMatrix ( ) const
virtual

◆ IsAnimating()

bool BaseCamera::IsAnimating ( ) const
virtual

◆ IsInputEnabled()

virtual bool BaseCamera::IsInputEnabled ( ) const
inlinevirtual

◆ IsMouseInViewport()

bool BaseCamera::IsMouseInViewport ( ) const
virtual

◆ LookAt()

void BaseCamera::LookAt ( const Vec3 position,
const Vec3 target,
const Vec3 up 
)
virtual

◆ ProcessInput()

void BaseCamera::ProcessInput ( )
virtual

◆ ProcessKeyboardInput()

void BaseCamera::ProcessKeyboardInput ( )
protectedvirtual

◆ ProcessMouseInput()

void BaseCamera::ProcessMouseInput ( )
protectedvirtual

◆ ProcessScrollInput()

void BaseCamera::ProcessScrollInput ( )
protectedvirtual

◆ ScreenToWorldRay()

virtual Ray BaseCamera::ScreenToWorldRay ( float  screenX,
float  screenY 
) const
pure virtual

Implemented in OrthographicCamera, and PerspectiveCamera.

◆ SetAspectRatio()

void BaseCamera::SetAspectRatio ( float  aspect)
virtual

◆ SetClippingPlanes()

void BaseCamera::SetClippingPlanes ( float  nearPlane,
float  farPlane 
)
virtual

◆ SetInputEnabled()

void BaseCamera::SetInputEnabled ( bool  enabled)
virtual

◆ SetMouseMovementActive()

void BaseCamera::SetMouseMovementActive ( bool  active)
virtual

◆ SetName()

void BaseCamera::SetName ( const std::string &  name)
virtual

◆ SetPosition()

void BaseCamera::SetPosition ( const Vec3 position)
virtual

◆ SetTarget()

void BaseCamera::SetTarget ( const Vec3 target)
virtual

◆ SetTransform()

void BaseCamera::SetTransform ( const Mat4 transform)
virtual

◆ SetUp()

void BaseCamera::SetUp ( const Vec3 up)
virtual

◆ SetViewportBounds()

void BaseCamera::SetViewportBounds ( float  x,
float  y,
float  width,
float  height 
)
virtual

◆ Update()

void BaseCamera::Update ( )
virtual

◆ UpdateAnglesFromPosition()

void BaseCamera::UpdateAnglesFromPosition ( )
protectedvirtual

◆ UpdatePositionFromAngles()

void BaseCamera::UpdatePositionFromAngles ( )
protectedvirtual

◆ UpdateViewMatrix()

void BaseCamera::UpdateViewMatrix ( ) const
protected

◆ Zoom()

void BaseCamera::Zoom ( float  delta)
protectedvirtual

Member Data Documentation

◆ m_Animator

std::unique_ptr<CameraAnimator> BaseCamera::m_Animator
protected

◆ m_Aspect

float BaseCamera::m_Aspect
protected

◆ m_CursorHidden

bool BaseCamera::m_CursorHidden = false
protected

◆ m_Distance

float BaseCamera::m_Distance = 3.0f
protected

◆ m_Far

float BaseCamera::m_Far
protected

◆ m_InputEnabled

bool BaseCamera::m_InputEnabled = true
protected

◆ m_isMouseMovementActive

bool BaseCamera::m_isMouseMovementActive = true
protected

◆ m_MouseSensitivity

float BaseCamera::m_MouseSensitivity = 0.1f
protected

◆ m_Name

std::string BaseCamera::m_Name
protected

◆ m_Near

float BaseCamera::m_Near
protected

◆ m_Pitch

float BaseCamera::m_Pitch = 0.0f
protected

◆ m_Position

Vec3 BaseCamera::m_Position {0.0f, 0.0f, 3.0f}
protected

◆ m_Target

Vec3 BaseCamera::m_Target {0.0f, 0.0f, 0.0f}
protected

◆ m_Up

Vec3 BaseCamera::m_Up {0.0f, 1.0f, 0.0f}
protected

◆ m_ViewMatrix

Mat4 BaseCamera::m_ViewMatrix
mutableprotected

◆ m_ViewMatrixDirty

bool BaseCamera::m_ViewMatrixDirty = true
mutableprotected

◆ m_ViewportHeight

float BaseCamera::m_ViewportHeight = 0.0f
protected

◆ m_ViewportWidth

float BaseCamera::m_ViewportWidth = 0.0f
protected

◆ m_ViewportX

float BaseCamera::m_ViewportX = 0.0f
protected

◆ m_ViewportY

float BaseCamera::m_ViewportY = 0.0f
protected

◆ m_Yaw

float BaseCamera::m_Yaw = -90.0f
protected

◆ m_ZoomSpeed

float BaseCamera::m_ZoomSpeed = 1.0f
protected

The documentation for this class was generated from the following files: