SleakEngine
0.1.0
C++23 multi-backend game engine
Toggle main menu visibility
Loading...
Searching...
No Matches
CameraController.hpp
Go to the documentation of this file.
1
#ifndef _CAMERACONTROLLERCOMPONENT_HPP_
2
#define _CAMERACONTROLLERCOMPONENT_HPP_
3
4
#include <
ECS/Component.hpp
>
5
#include <
Math/Vector.hpp
>
6
#include <
Camera/Camera.hpp
>
7
#include <
Memory/RefPtr.hpp
>
8
#include <
Core/OSDef.hpp
>
9
10
namespace
Sleak
{
11
/// Base for components that drive a Camera GameObject from input.
12
/// Concrete controllers (first-person, free-look) implement UpdateInput/UpdateCamera.
13
/// @ingroup scene
14
class
ENGINE_API
CameraController
:
public
Component
{
15
public
:
16
CameraController
(
GameObject
*
object
) :
Component
(object) {}
17
~CameraController
()
override
=
default
;
18
19
bool
Initialize
()
override
{
20
bIsInitialized
=
true
;
21
22
camera
=
GetCamera
();
23
24
return
true
;
25
}
26
27
void
Update
(
float
deltaTime)
override
= 0;
28
29
/// Shows or hides the OS cursor and, typically, toggles relative mouse mode.
30
virtual
void
ToggleCursor
(
bool
enable) = 0;
31
32
virtual
void
SetEnabled
(
bool
enabled) {
isEnabled
= enabled;}
33
virtual
bool
IsEnabled
()
const
{
return
isEnabled
;}
34
virtual
void
SetSensitivity
(
float
sensitivity
) {this->sensitivity =
sensitivity
;}
35
virtual
float
GetSensitivity
()
const
{
return
sensitivity
;}
36
37
/// Casts the owning GameObject to Camera; valid only when attached to one.
38
Camera
*
GetCamera
() {
39
return
dynamic_cast<
Camera
*
>
(
owner
);
40
}
41
42
protected
:
43
/// Applies accumulated input to the camera's position/orientation.
44
virtual
void
UpdateCamera
(
float
deltaTime) = 0;
45
/// Polls raw input devices and updates translation/rotation input state.
46
virtual
void
UpdateInput
(
float
deltaTime) = 0;
47
48
float
sensitivity
= 0.0f;
49
bool
isEnabled
=
true
;
50
51
Math::Vector3D
translationInput
;
52
Math::Vector3D
rotationInput
;
53
Math::Vector2D
MousePosition
,
LastMousePosition
;
54
55
Camera
*
camera
=
nullptr
;
56
};
57
}
58
59
#endif
Camera.hpp
Component.hpp
OSDef.hpp
RefPtr.hpp
Vector.hpp
Sleak::CameraController::SetEnabled
virtual void SetEnabled(bool enabled)
Definition
CameraController.hpp:32
Sleak::CameraController::IsEnabled
virtual bool IsEnabled() const
Definition
CameraController.hpp:33
Sleak::CameraController::~CameraController
~CameraController() override=default
Sleak::CameraController::isEnabled
bool isEnabled
Definition
CameraController.hpp:49
Sleak::CameraController::translationInput
Math::Vector3D translationInput
Definition
CameraController.hpp:51
Sleak::CameraController::sensitivity
float sensitivity
Definition
CameraController.hpp:48
Sleak::CameraController::MousePosition
Math::Vector2D MousePosition
Definition
CameraController.hpp:53
Sleak::CameraController::GetCamera
Camera * GetCamera()
Casts the owning GameObject to Camera; valid only when attached to one.
Definition
CameraController.hpp:38
Sleak::CameraController::Update
void Update(float deltaTime) override=0
Sleak::CameraController::CameraController
CameraController(GameObject *object)
Definition
CameraController.hpp:16
Sleak::CameraController::ToggleCursor
virtual void ToggleCursor(bool enable)=0
Shows or hides the OS cursor and, typically, toggles relative mouse mode.
Sleak::CameraController::UpdateCamera
virtual void UpdateCamera(float deltaTime)=0
Applies accumulated input to the camera's position/orientation.
Sleak::CameraController::rotationInput
Math::Vector3D rotationInput
Definition
CameraController.hpp:52
Sleak::CameraController::camera
Camera * camera
Definition
CameraController.hpp:55
Sleak::CameraController::Initialize
bool Initialize() override
One-time setup, called after the component is attached and the owner is initialized.
Definition
CameraController.hpp:19
Sleak::CameraController::UpdateInput
virtual void UpdateInput(float deltaTime)=0
Polls raw input devices and updates translation/rotation input state.
Sleak::CameraController::SetSensitivity
virtual void SetSensitivity(float sensitivity)
Definition
CameraController.hpp:34
Sleak::CameraController::LastMousePosition
Math::Vector2D LastMousePosition
Definition
CameraController.hpp:53
Sleak::CameraController::GetSensitivity
virtual float GetSensitivity() const
Definition
CameraController.hpp:35
Sleak::Camera
Definition
Camera.hpp:59
Sleak::Component::GameObject
friend class GameObject
Definition
Component.hpp:88
Sleak::Component::bIsInitialized
bool bIsInitialized
Definition
Component.hpp:85
Sleak::Component::owner
GameObject * owner
Definition
Component.hpp:84
Sleak::Component::Component
Component(GameObject *object)
Definition
Component.hpp:61
Sleak::Math::Vector2D
Definition
Vector.hpp:210
Sleak::Math::Vector3D
Definition
Vector.hpp:354
Sleak
Root namespace for everything the engine exposes.
Definition
Camera.hpp:10
include
public
ECS
Components
CameraController.hpp
Generated on
for SleakEngine by
1.18.0