DDraceNetwork Docs
camera.h
Go to the documentation of this file.
1/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2/* If you are missing that file, acquire a complete release at teeworlds.com. */
3#ifndef GAME_CLIENT_COMPONENTS_CAMERA_H
4#define GAME_CLIENT_COMPONENTS_CAMERA_H
5#include <base/bezier.h>
6#include <base/vmath.h>
7
8#include <engine/client.h>
9#include <engine/console.h>
10
12
13class CCamera : public CComponent
14{
15 friend class CMenuBackground;
16
17public:
18 enum
19 {
23 };
24
25private:
29
32
41
42 float CameraSmoothingProgress(float CurrentTime) const;
43
47
48 void ScaleZoom(float Factor);
49 void ChangeZoom(float Target, int Smoothness, bool IsUser);
50 float ZoomProgress(float CurrentTime) const;
51
52 float MinZoomLevel();
53 float MaxZoomLevel();
54
59
61
62public:
63 static constexpr float ZOOM_STEP = 0.866025f;
64
71 static inline float ZoomStepsToValue(float Steps) { return std::pow(CCamera::ZOOM_STEP, Steps); }
72
76 float m_Zoom;
78
82
85
86 CCamera();
87 virtual int Sizeof() const override { return sizeof(*this); }
88 virtual void OnRender() override;
89
90 // DDRace
91
92 virtual void OnConsoleInit() override;
93 virtual void OnReset() override;
94
95 void SetView(ivec2 Pos, bool Relative = false);
96 void GotoSwitch(int Number, int Offset = -1);
97 void GotoTele(int Number, int Offset = -1);
98
99 void SetZoom(float Target, int Smoothness, bool IsUser);
100 bool ZoomAllowed() const;
101
102 int Deadzone() const;
103 int FollowFactor() const;
104 int CamType() const { return m_CamType; }
105
106 void UpdateCamera();
107 void ResetAutoSpecCamera();
108 bool SpectatingPlayer() const { return m_IsSpectatingPlayer; }
109 bool CanUseAutoSpecCamera() const;
112
114
115private:
116 static void ConZoomPlus(IConsole::IResult *pResult, void *pUserData);
117 static void ConZoomMinus(IConsole::IResult *pResult, void *pUserData);
118 static void ConZoom(IConsole::IResult *pResult, void *pUserData);
119 static void ConSetView(IConsole::IResult *pResult, void *pUserData);
120 static void ConSetViewRelative(IConsole::IResult *pResult, void *pUserData);
121 static void ConGotoSwitch(IConsole::IResult *pResult, void *pUserData);
122 static void ConGotoTele(IConsole::IResult *pResult, void *pUserData);
123
131};
132
133#endif
Definition: camera.h:14
float m_DyncamSmoothingSpeedBias
Definition: camera.h:56
float CameraSmoothingProgress(float CurrentTime) const
Definition: camera.cpp:52
float m_ZoomSmoothingEnd
Definition: camera.h:46
int m_GotoTeleOffset
Definition: camera.h:127
float MaxZoomLevel()
Definition: camera.cpp:71
void UpdateAutoSpecCameraTooltip()
Definition: camera.cpp:651
int m_CamType
Definition: camera.h:26
CCubicBezier m_CameraSmoothingBezierY
Definition: camera.h:37
int CamType() const
Definition: camera.h:104
int m_PrevSpecId
Definition: camera.h:30
bool m_AutoSpecCameraZooming
Definition: camera.h:79
vec2 m_CenterBeforeSmoothing
Definition: camera.h:40
CCamera()
Definition: camera.cpp:19
vec2 m_CameraSmoothingTarget
Definition: camera.h:35
bool m_Zooming
Definition: camera.h:75
float m_Zoom
Definition: camera.h:76
static void ConGotoSwitch(IConsole::IResult *pResult, void *pUserData)
Definition: camera.cpp:476
static float ZoomStepsToValue(float Steps)
Definition: camera.h:71
static void ConZoomMinus(IConsole::IResult *pResult, void *pUserData)
Definition: camera.cpp:430
bool m_IsSpectatingPlayer
Definition: camera.h:57
int m_GotoTeleLastNumber
Definition: camera.h:130
int Deadzone() const
Definition: camera.cpp:611
bool m_UsingAutoSpecCamera
Definition: camera.h:58
CCubicBezier m_CameraSmoothingBezierX
Definition: camera.h:36
static void ConZoomPlus(IConsole::IResult *pResult, void *pUserData)
Definition: camera.cpp:417
bool ZoomAllowed() const
Definition: camera.cpp:604
float ZoomProgress(float CurrentTime) const
Definition: camera.cpp:58
vec2 m_aLastPos[NUM_DUMMIES]
Definition: camera.h:27
virtual void OnRender() override
Definition: camera.cpp:281
virtual void OnConsoleInit() override
Definition: camera.cpp:396
vec2 m_DyncamTargetCameraOffset
Definition: camera.h:83
static void ConGotoTele(IConsole::IResult *pResult, void *pUserData)
Definition: camera.cpp:481
vec2 m_LastTargetPos
Definition: camera.h:55
@ CAMTYPE_UNDEFINED
Definition: camera.h:20
@ CAMTYPE_PLAYER
Definition: camera.h:22
@ CAMTYPE_SPEC
Definition: camera.h:21
float m_CameraSmoothingEnd
Definition: camera.h:39
ivec2 m_GotoTeleLastPos
Definition: camera.h:129
void SetView(ivec2 Pos, bool Relative=false)
Definition: camera.cpp:487
static void ConSetViewRelative(IConsole::IResult *pResult, void *pUserData)
Definition: camera.cpp:470
const char * AutoSpecCameraTooltip()
Definition: camera.h:113
void GotoTele(int Number, int Offset=-1)
Definition: camera.cpp:543
bool SpectatingPlayer() const
Definition: camera.h:108
vec2 m_CameraSmoothingCenter
Definition: camera.h:34
void SetZoom(float Target, int Smoothness, bool IsUser)
Definition: camera.cpp:599
bool m_WasSpectating
Definition: camera.h:31
bool m_ZoomSet
Definition: camera.h:74
char m_aAutoSpecCameraTooltip[512]
Definition: camera.h:60
void UpdateCamera()
Definition: camera.cpp:114
vec2 m_PrevCenter
Definition: camera.h:28
vec2 m_Center
Definition: camera.h:73
static void ConSetView(IConsole::IResult *pResult, void *pUserData)
Definition: camera.cpp:464
bool m_ForceFreeview
Definition: camera.h:124
bool CanUseAutoSpecCamera() const
Definition: camera.cpp:621
ivec2 m_GotoSwitchLastPos
Definition: camera.h:128
virtual void OnReset() override
Definition: camera.cpp:407
float m_CameraSmoothingStart
Definition: camera.h:38
vec2 m_ForceFreeviewPos
Definition: camera.h:125
CCubicBezier m_ZoomSmoothing
Definition: camera.h:44
void ResetAutoSpecCamera()
Definition: camera.cpp:109
void GotoSwitch(int Number, int Offset=-1)
Definition: camera.cpp:499
int m_GotoSwitchOffset
Definition: camera.h:126
static constexpr float ZOOM_STEP
Definition: camera.h:63
void ToggleAutoSpecCamera()
Definition: camera.cpp:634
void ScaleZoom(float Factor)
Definition: camera.cpp:63
static void ConZoom(IConsole::IResult *pResult, void *pUserData)
Definition: camera.cpp:444
virtual int Sizeof() const override
Definition: camera.h:87
float m_ZoomSmoothingTarget
Definition: camera.h:77
float m_ZoomSmoothingStart
Definition: camera.h:45
float m_UserZoomTarget
Definition: camera.h:81
int FollowFactor() const
Definition: camera.cpp:616
vec2 m_aDyncamCurrentCameraOffset[NUM_DUMMIES]
Definition: camera.h:84
void ChangeZoom(float Target, int Smoothness, bool IsUser)
Definition: camera.cpp:81
bool m_AutoSpecCamera
Definition: camera.h:80
bool m_CameraSmoothing
Definition: camera.h:33
float MinZoomLevel()
Definition: camera.cpp:76
Definition: component.h:20
Definition: bezier.h:10
Definition: menu_background.h:33
Definition: console.h:47
@ NUM_DUMMIES
Definition: enums.h:8