Elaztek Developer Hub
Blamite Game Engine - blam!  00368.02.12.23.1347.blamite
The core library for the Blamite Game Engine.
director.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "../../debug_ui.h"
4 
6 
8 {
13  {
14  private:
15  bool allow_compat_editing = false;
16 
17  float look_sensetivity = 0.25f;
18 
19  public:
20  void Draw()
21  {
22  if (show)
23  {
24  if (ImGui::Begin("Director Debug", &show))
25  {
27 
28  if (director)
29  {
30  // Basic camera settings
31  {
32  ImGui::DragFloat3("camera pos", (float*)&director->camera_pos);
33  ImGui::DragFloat3("camera angle", (float*)&director->camera_angle);
34  ImGui::DragFloat("field of view", &director->fov);
35  }
36 
38 
39  // Advanced camera settings
40  {
41  ImGui::Checkbox("lock camera", &director->lock_camera);
42  ImGui::DragFloat("camera speed", &director->speed);
43 
44  ImGui::Checkbox("tick based camera looking", &director->tick_based_looking);
45  ImGui::DragFloat("look sensetivity (horizontal)", &director->look_sensetivity_horizontal);
46  ImGui::DragFloat("look sensetivity (vertical)", &director->look_sensetivity_vertical);
47  ImGui::Checkbox("persistent look motion", &director->persistent_look_motion);
49  Widgets::ShowHelpMarker(ENGINE_TEXT("director_persistent_look_motion_help_text").c_str());
50 
51  ImGui::Checkbox("move acceleration", &director->move_acceleration);
52  ImGui::Checkbox("look acceleration", &director->look_acceleration);
53  ImGui::InputFloat("acceleration increment count", &director->accel_increment_count);
54 
55  ImGui::InputFloat("zoom increment count", &director->zoom_increment_count);
57  Widgets::ShowHelpMarker(ENGINE_TEXT("director_zoom_increment_count_help_text").c_str());
58 
59  ImGui::Checkbox("pan-cam", &director->pancam);
61  Widgets::ShowHelpMarker(ENGINE_TEXT("director_pancam_help_text").c_str());
62 
63  ImGui::Checkbox("pan-cam lock x/y", &director->pancam_lock_xy);
65  Widgets::ShowHelpMarker(ENGINE_TEXT("director_camera_pancam_lock_xy_help_text").c_str());
66 
67  ImGui::Checkbox("camera bouncing", &director->camera_bouncing);
69  Widgets::ShowHelpMarker(ENGINE_TEXT("director_camera_bouncing_help_text").c_str());
70 
71  ImGui::DragFloat("near clip distance", &director->near_clip_plane_distance);
73  Widgets::ShowHelpMarker(ENGINE_TEXT("director_near_clip_help_text").c_str());
74 
75  ImGui::DragFloat("far clip distance", &director->far_clip_plane_distance);
77  Widgets::ShowHelpMarker(ENGINE_TEXT("director_far_clip_help_text").c_str());
78  }
79 
80  if (ImGui::CollapsingHeader("internal"))
81  {
82  ImGui::Checkbox("auto verify coords", &director->auto_verify_coords);
84  Widgets::ShowHelpMarker(ENGINE_TEXT("director_auto_verify_coords_help_text").c_str());
85 
86  ImGui::DragFloat3("camera front", (float*)&director->camera_front);
87  ImGui::DragFloat3("camera right", (float*)&director->camera_right);
88  //ImGui::DragFloat3("camera up", (float*)&director->camera_up);
89 
90  ImGui::Checkbox("auto calculate angle", &director->calculate_angle);
91  ImGui::DragFloat("horizontal angle", &director->horizontal_angle);
92  ImGui::DragFloat("vertical angle", &director->vertical_angle);
93  }
94 
95  if (ImGui::CollapsingHeader("deprecated"))
96  {
97  ImGui::Text("these settings are unused and will likely be removed in the future");
98 
99  ImGui::Checkbox("allow editing", &allow_compat_editing);
100  ImGui::SameLine();
101  Widgets::ShowHelpMarker("enables compatiability editing of deprecated settings - this will try and apply the settings to their closest counterparts");
102 
103  if (allow_compat_editing)
104  {
105  ImGui::DragFloat("look sensetivity", &look_sensetivity);
106 
107  director->look_sensetivity_horizontal = look_sensetivity;
108  director->look_sensetivity_vertical = look_sensetivity;
109  }
110  else
111  {
112  ImGui::TextDisabled("look sensetivity");
113  }
114  }
115  }
116  else
117  {
118  ImGui::Text("director is not initialized");
119  }
120  }
121  ImGui::End();
122  }
123  }
124  };
125 }
Blam::Director::GetCamera
BLAM BlamDirector * GetCamera()
Retrieves the director instance.
Definition: director.cpp:28
Blam::DebugUI::Widgets::ShowHelpMarker
BLAM void ShowHelpMarker(const char *desc)
Shows a help indicator.
Definition: widgets.cpp:7
BlamDirector::fov
float fov
The camera's current field of view.
Definition: director.h:85
BlamDirector::far_clip_plane_distance
float far_clip_plane_distance
Definition: director.h:109
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:78
ImGui::Checkbox
IMGUI_API bool Checkbox(const char *label, bool *v)
Definition: imgui_widgets.cpp:974
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:90
ImGui::End
IMGUI_API void End()
Definition: imgui.cpp:6016
BlamDirector::near_clip_plane_distance
float near_clip_plane_distance
Definition: director.h:108
director.h
Blam::DebugUI::Windows::DirectorTool::Draw
void Draw()
Draws the contents of the group.
Definition: director.hpp:20
ImGui::SameLine
IMGUI_API void SameLine(float offset_from_start_x=0.0f, float spacing=-1.0f)
Definition: imgui.cpp:7147
BlamDirector::vertical_angle
float vertical_angle
Definition: director.h:106
BlamDirector::camera_right
BlamVector3 camera_right
The calculated point representing the right of the camera.
Definition: director.h:82
BlamDirector::calculate_angle
bool calculate_angle
Definition: director.h:104
ImGui::DragFloat
IMGUI_API bool DragFloat(const char *label, float *v, float v_speed=1.0f, float v_min=0.0f, float v_max=0.0f, const char *format="%.3f", float power=1.0f)
Definition: imgui_widgets.cpp:2164
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:96
ImGui::Begin
IMGUI_API bool Begin(const char *name, bool *p_open=NULL, ImGuiWindowFlags flags=0)
Definition: imgui.cpp:5397
ImGui::CollapsingHeader
IMGUI_API bool CollapsingHeader(const char *label, ImGuiTreeNodeFlags flags=0)
Definition: imgui_widgets.cpp:5422
BlamDirector::horizontal_angle
float horizontal_angle
Definition: director.h:105
ImGui::Text
IMGUI_API void Text(const char *fmt,...) IM_FMTARGS(1)
Definition: imgui_widgets.cpp:238
BlamDirector::move_acceleration
bool move_acceleration
Whether or not camera movements should use acceleration.
Definition: director.h:94
Blam::DebugUI::ImGUIDrawingGroup::show
bool show
Controls whether or not the group should be shown. May not be used in all groups.
Definition: debug_ui.h:362
BlamDirector::auto_verify_coords
bool auto_verify_coords
Whether or not camera_front and camera_right should be automatically calculated.
Definition: director.h:80
BlamDirector::speed
float speed
The camera's current speed.
Definition: director.h:88
Blam::DebugUI::ImGUIDrawingGroup
Class representing an ImGUI drawing group/draw list item.
Definition: debug_ui.h:359
ImGui::DragFloat3
IMGUI_API bool DragFloat3(const char *label, float v[3], float v_speed=1.0f, float v_min=0.0f, float v_max=0.0f, const char *format="%.3f", float power=1.0f)
Definition: imgui_widgets.cpp:2174
BlamDirector::lock_camera
bool lock_camera
Whether or not the camera is locked. If locked, all keyboard/mouse input is ignored.
Definition: director.h:91
BlamDirector::look_acceleration
bool look_acceleration
Whether or not camera looking should use acceleration.
Definition: director.h:95
BlamDirector
Class representing the Director.
Definition: director.h:27
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:93
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:97
BlamDirector::tick_based_looking
bool tick_based_looking
Whether or not camera looking should be driven by the game tick.
Definition: director.h:102
BlamDirector::persistent_look_motion
bool persistent_look_motion
Whether or not to use persistent camera look motion. Only applies when using tick based looking.
Definition: director.h:101
ENGINE_TEXT
#define ENGINE_TEXT(string_id)
Definition: engine_text.h:7
Blam::DebugUI::Windows::DirectorTool
Class for the Director debug utility.
Definition: director.hpp:12
ImGui::Separator
IMGUI_API void Separator()
Definition: imgui_widgets.cpp:1284
Blam::DebugUI::Windows
Legacy namespace to contain data for the legacy ImGUI console.
Definition: ui.h:19
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:92
BlamDirector::camera_front
BlamVector3 camera_front
The calculated point representing the front of the camera.
Definition: director.h:81
ImGui::InputFloat
IMGUI_API bool InputFloat(const char *label, float *v, float step=0.0f, float step_fast=0.0f, const char *format="%.3f", ImGuiInputTextFlags flags=0)
Definition: imgui_widgets.cpp:2975
ImGui::TextDisabled
IMGUI_API void TextDisabled(const char *fmt,...) IM_FMTARGS(1)
Definition: imgui_widgets.cpp:272
BlamDirector::camera_pos
BlamVector3 camera_pos
The current position of the camera.
Definition: director.h:77
BlamDirector::look_sensetivity_vertical
float look_sensetivity_vertical
The camera's vertical look sensetivity.
Definition: director.h:99
BlamDirector::look_sensetivity_horizontal
float look_sensetivity_horizontal
The camera's horizontal look sensetivity.
Definition: director.h:100