OpenBarnyard
 
Loading...
Searching...
No Matches
ACameraManager.cpp
Go to the documentation of this file.
1#include "pch.h"
2#include "ACameraManager.h"
3#include "Tasks/ARootTask.h"
5
6//-----------------------------------------------------------------------------
7// Enables memory debugging.
8// Note: Should be the last include!
9//-----------------------------------------------------------------------------
10#include <Core/TMemoryDebugOn.h>
11
13
15
17 : m_vInitialLookDirection( ACamera::sm_vInitialLookDirection )
19{
20 for ( TUINT i = 0; i < SPLITSCREEN_MAX_CAMERAS; i++ )
21 {
22 m_apCameras[ i ] = new ACamera();
24 }
25
26 for ( TINT i = 0; i < CAMERAHELPER_NUM_OF; i++ )
28
29 for ( TINT i = 0; i < SPLITSCREEN_CAMERAHELPER_NUM_OF; i++ )
31
32 for ( TINT i = 0; i < SPLITSCREEN_MAX_CAMERAS; i++ )
34
36
37 TTODO( "Create helpers" );
39 // ...
40
43
44 for ( TINT i = 0; i < CAMERAHELPER_NUM_OF; i++ )
45 {
46 if ( m_apCameraHelpers[ i ] )
47 m_apCameraHelpers[ i ]->UpdateCurrentCamera();
48 }
49
50 for ( TINT i = 0; i < SPLITSCREEN_CAMERAHELPER_NUM_OF; i++ )
51 {
53 m_apSplitscreenCameraHelpers[ i ]->UpdateCurrentCamera();
54 }
55
56 // ...
57}
58
62
64{
65 TIMPLEMENT();
66
67 if ( ARootTask::GetSingleton()->IsPaused() )
68 return TTRUE;
69
70 if ( !m_bIsPosLerping )
71 // No smooth transition is happening, just update the helpers
72 {
73 if ( m_pCurrentHelper )
74 m_pCurrentHelper->OnUpdate( a_fDeltaTime );
75
76 for ( TINT i = 0; i < SPLITSCREEN_CAMERAHELPER_NUM_OF; i++ )
77 {
79 m_apSplitscreenCameraHelpers[ i ]->OnUpdate( a_fDeltaTime );
80 }
81
82 return TTRUE;
83 }
84
85 TASSERT( !"Smooth camera transition is not implemented" );
86
87 //static TFLOAT s_fTime = 0.0f;
88 //s_fTime += a_fDeltaTime;
89
90 //TVector4 vLookDirection = m_vInitialLookDirection;
91 //vLookDirection.x = -0.6f;
92 //vLookDirection.z = 1.0f;
93 //vLookDirection.y = 0.5f;
94 //vLookDirection.Negate();
95 //vLookDirection.Normalise();
96
97 //auto& rvTranslation = m_pCurrentCamera->GetMatrix().GetTranslation();
101 //rvTranslation.x = 32.78f;
102 //rvTranslation.y = -9.41f;
103 //rvTranslation.z = -31.17f;
104
105 //m_pCurrentCamera->LookAtDirection( vLookDirection );
106
107 return TTRUE;
108}
109
110// $Barnyard: FUNCTION 0045c0f0
112{
113 // Detach split screen camera helpers
114 for ( TINT i = 0; i < SPLITSCREEN_MAX_CAMERAS; i++ )
115 {
117 {
120 }
121 }
122
123 // Detach currently attached camera helper
124 if ( m_pCurrentHelper && m_pCurrentHelper != a_pHelper )
125 {
126 m_pCurrentHelper->OnDetach();
128 }
129
130 m_pCurrentHelper = a_pHelper;
131
132 if ( m_pCurrentHelper )
133 {
134 m_pCurrentHelper->OnCreate();
135 m_pCurrentHelper->OnAttach();
136 }
137
140}
141
142// $Barnyard: FUNCTION 0045c240
144{
145 if ( m_pCurrentHelper )
146 m_pCurrentHelper->OnDetach();
147
149
150 for ( TINT i = 0; i < SPLITSCREEN_MAX_CAMERAS; i++ )
151 {
153 {
156 }
157 }
158}
159
160ACamera* ACameraManager::GetCamera( TUINT a_uiCameraIndex ) const
161{
162 TASSERT( a_uiCameraIndex < SPLITSCREEN_MAX_CAMERAS );
163 return m_apCameras[ a_uiCameraIndex ];
164}
165
167{
168 TASSERT( a_eCameraHelper < CAMERAHELPER_NUM_OF );
169 return m_apCameraHelpers[ a_eCameraHelper ];
170}
171
176
177// $Barnyard: FUNCTION 0045c0d0
182
183// $Barnyard: FUNCTION 0045b820
185{
186 if ( !m_bIsPosLerping )
187 return;
188
190 m_fLerpDuration = 0.0f;
191
192 if ( m_pCurrentHelper )
193 {
195 m_pCurrentHelper->OnUpdate( a_flDeltaTime );
196 }
197}
#define TIMPLEMENT()
Definition Defines.h:136
#define TASSERT(X,...)
Definition Defines.h:138
#define TOSHI_NAMESPACE_USING
Definition Defines.h:46
#define TTODO(DESC)
Definition Defines.h:134
#define TDEFINE_CLASS(...)
Definition TObject.h:120
unsigned int TUINT
Definition Typedefs.h:8
float TFLOAT
Definition Typedefs.h:4
#define TNULL
Definition Typedefs.h:23
int TINT
Definition Typedefs.h:7
#define TFALSE
Definition Typedefs.h:24
#define TTRUE
Definition Typedefs.h:25
bool TBOOL
Definition Typedefs.h:6
virtual TBOOL OnUpdate(TFLOAT a_fDeltaTime) override
@ SPLITSCREEN_CAMERAHELPER_NUM_OF
void StopPositionLerp(TFLOAT a_flDeltaTime)
ACamera * GetCurrentCamera() const
Toshi::TVector4 m_vInitialLookDirection
ACamera * GetCamera(TUINT a_uiCameraIndex) const
ACamera * m_pCurrentCamera
ACamera * m_apCameras[SPLITSCREEN_MAX_CAMERAS]
ACameraHelper * m_pCurrentHelper
ACameraHelper * m_apSplitscreenCameraHelpers[SPLITSCREEN_CAMERAHELPER_NUM_OF]
static constexpr TUINT SPLITSCREEN_MAX_CAMERAS
ACameraHelper * m_pPreviousCameraHelper
void SetCameraHelper(ACameraHelper *a_pHelper)
ACameraHelper * m_apCurrentSplitscreenCameraHelpers[SPLITSCREEN_MAX_CAMERAS]
ACameraHelper * m_apCameraHelpers[CAMERAHELPER_NUM_OF]
ACameraHelper * GetCurrentCameraHelper() const
ACameraHelper * GetCameraHelper(CAMERAHELPER a_eCameraHelper) const