Elaztek Developer Hub
Blamite Game Engine - blam!  00315.05.27.21.0015.blamite
The core library for the Blamite Game Engine.
director.h
Go to the documentation of this file.
1 #pragma once
2 
5 
6 #include <vector>
7 #include <map>
8 
9 #ifndef BLAM
10 #define BLAM
11 #endif
12 
24 {
25 private:
26  bool mouse_capture_state_changed = false;
27  bool mouse_captured = false;
28  int current_speed_index = 0;
29 
33  std::vector<float> camera_speeds = {
34  1.000000f,
35  5.000000f,
36  20.00000f,
37  40.000000f,
38  100.000000f
39  };
40 
41  int viewport_center_x = 0;
42  int viewport_center_y = 0;
43 
44  bool zoom_state_changed = false;
45  float zoom_increment = 0.0f;
46 
47  std::map<BlamDirection, float> move_accelerations = {
48  std::pair<BlamDirection, float>(BlamDirection::Forward, 0.0f),
49  std::pair<BlamDirection, float>(BlamDirection::Backward, 0.0f),
50  std::pair<BlamDirection, float>(BlamDirection::Left, 0.0f),
51  std::pair<BlamDirection, float>(BlamDirection::Right, 0.0f),
52  std::pair<BlamDirection, float>(BlamDirection::Up, 0.0f),
53  std::pair<BlamDirection, float>(BlamDirection::Down, 0.0f)
54  };
55 
56  float accel_increment = 0.0f;
57 
58  int move_finished_tick = -1;
59  bool bounce_needed = false;
60  bool currently_bouncing = false;
61  bool bounceback_done = false;
62  bool bounceforward_done = false;
63 public:
66 
67  bool auto_verify_coords = true;
70 
71  float fov = 70.0f;
72  float fov_normal = 70.0f;
73  float fov_zoomed = 20.0f;
74  float speed = 1.0f;
75  float look_sensetivity = 0.25f;
76  float zoom_increment_count = 30;
77  bool lock_camera = false;
78  bool pancam = true;
79  bool pancam_lock_xy = false;
80  bool move_acceleration = true;
81  bool look_acceleration = false;
82  float accel_increment_count = 30;
83  bool camera_bouncing = false;
84  bool zoomed = false;
85 
86  bool calculate_angle = true;
87  float horizontal_angle = 0.0f;
88  float vertical_angle = 0.0f;
89 
91  float far_clip_plane_distance = 100.0f;
92 
96  BlamDirector();
97 
101  ~BlamDirector();
102 
103  void OnNewFrameEvent(NewFrameEvent* event);
104  void OnTickEvent(TickEvent* event);
105  void OnMouseMoveEvent(MouseMoveEvent* event);
106  void OnMouseClickEvent(MouseClickEvent* event);
107  void OnKeyPressEvent(KeyPressEvent* event);
108 
121  void MoveCamera(BlamDirection direction, float acceleration);
122 
130  void ValidateCameraCoords();
131 
137  void SetCameraSpeed(float _speed);
138 };
139 
143 namespace Blam::Director
144 {
148  BLAM void PrepareCamera();
149 
153  BLAM void ShutdownCamera();
154 
161 }
Blam::Director::GetCamera
BLAM BlamDirector * GetCamera()
Retrieves the director instance.
Definition: director.cpp:24
BlamDirector::OnTickEvent
void OnTickEvent(TickEvent *event)
Called when the listener is subscribed to Key Press events, and a new TickEvent is fired.
Definition: BlamDirectorCamera.cpp:72
Down
@ Down
Definition: world.h:14
BlamDirector::BlamDirector
BlamDirector()
Initializes the camera.
Definition: BlamDirectorCamera.cpp:15
BLAM
#define BLAM
Definition: director.h:10
Right
@ Right
Definition: world.h:12
BlamDirector::fov
float fov
The camera's current field of view.
Definition: director.h:71
Left
@ Left
Definition: world.h:11
BlamDirector::far_clip_plane_distance
float far_clip_plane_distance
Definition: director.h:91
BlamDirector::camera_angle
BlamVector3 camera_angle
The current looking angle of the camera. X is yaw, Y is pitch, Z is roll (unused atm).
Definition: director.h:65
BlamDirector::zoom_increment_count
float zoom_increment_count
The number of steps/increments to use when zooming in and out. Lower numbers will cause the camera to...
Definition: director.h:76
Backward
@ Backward
Definition: world.h:10
world.h
Up
@ Up
Definition: world.h:13
BlamDirector::OnKeyPressEvent
void OnKeyPressEvent(KeyPressEvent *event)
Called when the listener is subscribed to Key Press events, and a new KeyPressEvent is fired.
Definition: BlamDirectorCamera.cpp:338
BlamDirector::near_clip_plane_distance
float near_clip_plane_distance
Definition: director.h:90
BlamDirector::OnNewFrameEvent
void OnNewFrameEvent(NewFrameEvent *event)
Called when the listener is subscribed to New Frame events, and a new NewFrameEvent is fired.
Definition: BlamDirectorCamera.cpp:30
BlamDirector::fov_normal
float fov_normal
The camera's default field of view.
Definition: director.h:72
BlamVector3
Definition: world.h:23
KeyPressEvent
Class representing a virtual key press.
Definition: KeyPressEvent.h:12
BlamDirector::vertical_angle
float vertical_angle
Definition: director.h:88
Blam::Director::PrepareCamera
BLAM void PrepareCamera()
Prepares the director for use.
Definition: director.cpp:5
BlamDirector::camera_right
BlamVector3 camera_right
The calculated point representing the right of the camera.
Definition: director.h:69
BlamDirector::calculate_angle
bool calculate_angle
Definition: director.h:86
events.h
BlamDirector::accel_increment_count
float accel_increment_count
The number of steps/increments to use when accelerating and decelerating. Lower numbers will cause th...
Definition: director.h:82
Blam::Director
Namespace for things related to the debug camera (director).
Definition: director.h:143
BlamDirector::horizontal_angle
float horizontal_angle
Definition: director.h:87
TickEvent
Class representing an engine tick event.
Definition: TickEvent.h:10
BlamDirector::look_sensetivity
float look_sensetivity
The camera's look sensetivity.
Definition: director.h:75
BlamDirector::move_acceleration
bool move_acceleration
Whether or not camera movements should use acceleration.
Definition: director.h:80
Blam::Director::ShutdownCamera
BLAM void ShutdownCamera()
Destroys the director and cleans up any data related to it.
Definition: director.cpp:19
MouseMoveEvent
Class representing a mouse movement event.
Definition: MouseMoveEvent.h:10
BlamDirector::auto_verify_coords
bool auto_verify_coords
Whether or not camera_front and camera_right should be automatically calculated.
Definition: director.h:67
BlamDirector::speed
float speed
The camera's current speed.
Definition: director.h:74
BlamDirector::lock_camera
bool lock_camera
Whether or not the camera is locked. If locked, all keyboard/mouse input is ignored.
Definition: director.h:77
MouseClickEvent
Class representing a mouse button press.
Definition: MouseClickEvent.h:12
BlamDirector::look_acceleration
bool look_acceleration
Whether or not camera looking should use acceleration.
Definition: director.h:81
BlamDirector
Class representing the Director.
Definition: director.h:23
BlamDirector::pancam_lock_xy
bool pancam_lock_xy
Whether or not the camera should be locked to X/Y axis when in pan-cam mode.
Definition: director.h:79
BlamDirector::zoomed
bool zoomed
Whether or not the camera is currently zoomed in.
Definition: director.h:84
BlamDirector::camera_bouncing
bool camera_bouncing
Whether or not the camera should have a bounce/rubber effect when moving and looking around.
Definition: director.h:83
Forward
@ Forward
Definition: world.h:9
BlamDirector::SetCameraSpeed
void SetCameraSpeed(float _speed)
Sets the camera's speed, while also sending a log message indicating that the speed has been changed.
Definition: BlamDirectorCamera.cpp:641
BlamEventListener
Class representing an Event Listener.
Definition: events.h:28
BlamDirector::pancam
bool pancam
Whether or not the camera is currently in pan-cam mode. Pan-cam locks Z movement of the camera when n...
Definition: director.h:78
BlamDirector::OnMouseClickEvent
void OnMouseClickEvent(MouseClickEvent *event)
Called when the listener is subscribed to Mouse Click events, and a new MouseClickEvent is fired.
Definition: BlamDirectorCamera.cpp:323
BlamDirector::ValidateCameraCoords
void ValidateCameraCoords()
If auto_verify_coords is set to true, this will verify all camera coordinates.
Definition: BlamDirectorCamera.cpp:587
NewFrameEvent
Class representing an engine frame event.
Definition: NewFrameEvent.h:13
BlamDirector::OnMouseMoveEvent
void OnMouseMoveEvent(MouseMoveEvent *event)
Called when the listener is subscribed to Mouse Move events, and a new MouseMoveEvent is fired.
Definition: BlamDirectorCamera.cpp:306
BlamDirector::camera_front
BlamVector3 camera_front
The calculated point representing the front of the camera.
Definition: director.h:68
BlamDirection
BlamDirection
Definition: world.h:7
BlamDirector::camera_pos
BlamVector3 camera_pos
The current position of the camera.
Definition: director.h:64
BlamDirector::fov_zoomed
float fov_zoomed
The camera's field of view while zoomed in.
Definition: director.h:73
BlamDirector::~BlamDirector
~BlamDirector()
Destroys the camera.
Definition: BlamDirectorCamera.cpp:25
BlamDirector::MoveCamera
void MoveCamera(BlamDirection direction, float acceleration)
Moves the camera one "step" in the given direction.
Definition: BlamDirectorCamera.cpp:353