OpenBarnyard
 
Loading...
Searching...
No Matches
ACameraManager Class Reference

#include <ACameraManager.h>

Inheritance diagram for ACameraManager:

Public Types

enum  CAMERAHELPER_ : CAMERAHELPER {
  CAMERAHELPER_BIKE , CAMERAHELPER_GOLF , CAMERAHELPER_VICTORY , CAMERAHELPER_FOLLOW ,
  CAMERAHELPER_CONVERSATION , CAMERAHELPER_SSEQ , CAMERAHELPER_BONEATTACH , CAMERAHELPER_GTA ,
  CAMERAHELPER_LERP , CAMERAHELPER_POOL , CAMERAHELPER_SPEECH , CAMERAHELPER_TRACKING ,
  CAMERAHELPER_MULTICAMERA , CAMERAHELPER_PROJECTILE_FIRE , CAMERAHELPER_NUM_OF
}
 
enum  SPLITSCREEN_CAMERAHELPER_ : SPLITSCREEN_CAMERAHELPER {
  SPLITSCREEN_CAMERAHELPER_PROJECTILE_1 , SPLITSCREEN_CAMERAHELPER_PROJECTILE_2 , SPLITSCREEN_CAMERAHELPER_PROJECTILE_3 , SPLITSCREEN_CAMERAHELPER_PROJECTILE_4 ,
  SPLITSCREEN_CAMERAHELPER_GTA_1 , SPLITSCREEN_CAMERAHELPER_GTA_2 , SPLITSCREEN_CAMERAHELPER_GTA_3 , SPLITSCREEN_CAMERAHELPER_GTA_4 ,
  SPLITSCREEN_CAMERAHELPER_CAR_CHASE_1 , SPLITSCREEN_CAMERAHELPER_CAR_CHASE_2 , SPLITSCREEN_CAMERAHELPER_CAR_CHASE_3 , SPLITSCREEN_CAMERAHELPER_CAR_CHASE_4 ,
  SPLITSCREEN_CAMERAHELPER_NUM_OF
}
 
using ThisClass = ACameraManager
 
using BaseClass = Toshi::TTask
 
using CAMERAHELPER = TUINT32
 
using SPLITSCREEN_CAMERAHELPER = TUINT32
 

Public Member Functions

virtual Toshi::TClass * GetClass () override
 
 ACameraManager ()
 
 ~ACameraManager ()
 
virtual TBOOL OnUpdate (TFLOAT a_fDeltaTime) override
 
void SetCameraHelper (ACameraHelper *a_pHelper)
 
void DetachCameraHelpers ()
 
ACameraGetCamera (TUINT a_uiCameraIndex) const
 
ACameraHelperGetCameraHelper (CAMERAHELPER a_eCameraHelper) const
 
ACameraHelperGetCurrentCameraHelper () const
 
ACameraGetCurrentCamera () const
 
void StopPositionLerp (TFLOAT a_flDeltaTime)
 

Static Public Member Functions

static Toshi::TObject * CreateTObject ()
 
static Toshi::TObject * CreateTObjectInPlace (void *a_pPtr)
 
static void InitialiseClass ()
 
static void DeinitialiseClass ()
 
static TFORCEINLINE Toshi::TClass * GetClassStatic ()
 

Public Attributes

ACameraHelperm_apCameraHelpers [CAMERAHELPER_NUM_OF]
 
ACameraHelperm_apSplitscreenCameraHelpers [SPLITSCREEN_CAMERAHELPER_NUM_OF]
 
ACameram_pCurrentCamera
 
ACameram_apCameras [SPLITSCREEN_MAX_CAMERAS]
 
ACameraHelperm_pCurrentHelper
 
ACameraHelperm_apCurrentSplitscreenCameraHelpers [SPLITSCREEN_MAX_CAMERAS]
 
ACameraHelperm_pPreviousCameraHelper
 
Toshi::TVector4 m_vLerpPosFrom
 
Toshi::TVector4 m_vInitialLookDirection
 
TFLOAT m_fLerpDuration
 
TFLOAT m_fLerpTime
 
TBOOL m_bIsPosLerping
 

Static Public Attributes

static constexpr Toshi::TClass * PARENTCLASS = & Toshi::TTask::ms_oClass
 
static Toshi::TClass ms_oClass = Toshi::TClass( "ACameraManager", ACameraManager::PARENTCLASS, ACameraManager::CreateTObject, ACameraManager::CreateTObjectInPlace, ACameraManager::InitialiseClass, ACameraManager::DeinitialiseClass, 0, 1, sizeof( ACameraManager ), alignof( ACameraManager ) )
 
static constexpr TUINT SPLITSCREEN_MAX_CAMERAS = 4
 

Detailed Description

Definition at line 6 of file ACameraManager.h.

Member Typedef Documentation

◆ BaseClass

using ACameraManager::BaseClass = Toshi::TTask

Definition at line 10 of file ACameraManager.h.

◆ CAMERAHELPER

Definition at line 13 of file ACameraManager.h.

◆ SPLITSCREEN_CAMERAHELPER

◆ ThisClass

Definition at line 10 of file ACameraManager.h.

Member Enumeration Documentation

◆ CAMERAHELPER_

Enumerator
CAMERAHELPER_BIKE 
CAMERAHELPER_GOLF 
CAMERAHELPER_VICTORY 
CAMERAHELPER_FOLLOW 
CAMERAHELPER_CONVERSATION 
CAMERAHELPER_SSEQ 
CAMERAHELPER_BONEATTACH 
CAMERAHELPER_GTA 
CAMERAHELPER_LERP 
CAMERAHELPER_POOL 
CAMERAHELPER_SPEECH 
CAMERAHELPER_TRACKING 
CAMERAHELPER_MULTICAMERA 
CAMERAHELPER_PROJECTILE_FIRE 
CAMERAHELPER_NUM_OF 

Definition at line 14 of file ACameraManager.h.

15 {
31 };

◆ SPLITSCREEN_CAMERAHELPER_

Enumerator
SPLITSCREEN_CAMERAHELPER_PROJECTILE_1 
SPLITSCREEN_CAMERAHELPER_PROJECTILE_2 
SPLITSCREEN_CAMERAHELPER_PROJECTILE_3 
SPLITSCREEN_CAMERAHELPER_PROJECTILE_4 
SPLITSCREEN_CAMERAHELPER_GTA_1 
SPLITSCREEN_CAMERAHELPER_GTA_2 
SPLITSCREEN_CAMERAHELPER_GTA_3 
SPLITSCREEN_CAMERAHELPER_GTA_4 
SPLITSCREEN_CAMERAHELPER_CAR_CHASE_1 
SPLITSCREEN_CAMERAHELPER_CAR_CHASE_2 
SPLITSCREEN_CAMERAHELPER_CAR_CHASE_3 
SPLITSCREEN_CAMERAHELPER_CAR_CHASE_4 
SPLITSCREEN_CAMERAHELPER_NUM_OF 

Definition at line 34 of file ACameraManager.h.

35 {
49 };
@ SPLITSCREEN_CAMERAHELPER_PROJECTILE_2
@ SPLITSCREEN_CAMERAHELPER_PROJECTILE_3
@ SPLITSCREEN_CAMERAHELPER_CAR_CHASE_1
@ SPLITSCREEN_CAMERAHELPER_NUM_OF
@ SPLITSCREEN_CAMERAHELPER_CAR_CHASE_2
@ SPLITSCREEN_CAMERAHELPER_CAR_CHASE_3
@ SPLITSCREEN_CAMERAHELPER_CAR_CHASE_4
@ SPLITSCREEN_CAMERAHELPER_PROJECTILE_1
@ SPLITSCREEN_CAMERAHELPER_PROJECTILE_4

Constructor & Destructor Documentation

◆ ACameraManager()

ACameraManager::ACameraManager ( )

Definition at line 16 of file ACameraManager.cpp.

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" );
38 m_apCameraHelpers[ CAMERAHELPER_BONEATTACH ] = new ABoneAttachCameraHelper();
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}
#define TTODO(DESC)
Definition Defines.h:134
unsigned int TUINT
Definition Typedefs.h:8
#define TNULL
Definition Typedefs.h:23
int TINT
Definition Typedefs.h:7
#define TFALSE
Definition Typedefs.h:24
static const Toshi::TVector4 sm_vInitialLookDirection
Definition ACamera.h:16
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
ACameraHelper * m_apCurrentSplitscreenCameraHelpers[SPLITSCREEN_MAX_CAMERAS]
ACameraHelper * m_apCameraHelpers[CAMERAHELPER_NUM_OF]

◆ ~ACameraManager()

ACameraManager::~ACameraManager ( )

Definition at line 59 of file ACameraManager.cpp.

60{
61}

Member Function Documentation

◆ CreateTObject()

Toshi::TObject * ACameraManager::CreateTObject ( )
static

Definition at line 14 of file ACameraManager.cpp.

◆ CreateTObjectInPlace()

Toshi::TObject * ACameraManager::CreateTObjectInPlace ( void * a_pPtr)
static

Definition at line 14 of file ACameraManager.cpp.

◆ DeinitialiseClass()

void ACameraManager::DeinitialiseClass ( )
static

Definition at line 14 of file ACameraManager.cpp.

◆ DetachCameraHelpers()

void ACameraManager::DetachCameraHelpers ( )

Definition at line 143 of file ACameraManager.cpp.

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}

◆ GetCamera()

ACamera * ACameraManager::GetCamera ( TUINT a_uiCameraIndex) const

Definition at line 160 of file ACameraManager.cpp.

161{
162 TASSERT( a_uiCameraIndex < SPLITSCREEN_MAX_CAMERAS );
163 return m_apCameras[ a_uiCameraIndex ];
164}
#define TASSERT(X,...)
Definition Defines.h:138

◆ GetCameraHelper()

ACameraHelper * ACameraManager::GetCameraHelper ( CAMERAHELPER a_eCameraHelper) const

Definition at line 166 of file ACameraManager.cpp.

167{
168 TASSERT( a_eCameraHelper < CAMERAHELPER_NUM_OF );
169 return m_apCameraHelpers[ a_eCameraHelper ];
170}

◆ GetClass()

Toshi::TClass * ACameraManager::GetClass ( )
overridevirtual

Definition at line 14 of file ACameraManager.cpp.

◆ GetClassStatic()

static TFORCEINLINE Toshi::TClass * ACameraManager::GetClassStatic ( )
inlinestatic

Definition at line 10 of file ACameraManager.h.

◆ GetCurrentCamera()

ACamera * ACameraManager::GetCurrentCamera ( ) const

Definition at line 178 of file ACameraManager.cpp.

179{
180 return m_pCurrentCamera;
181}

◆ GetCurrentCameraHelper()

ACameraHelper * ACameraManager::GetCurrentCameraHelper ( ) const

Definition at line 172 of file ACameraManager.cpp.

173{
174 return m_pCurrentHelper;
175}

◆ InitialiseClass()

void ACameraManager::InitialiseClass ( )
static

Definition at line 14 of file ACameraManager.cpp.

◆ OnUpdate()

TBOOL ACameraManager::OnUpdate ( TFLOAT a_fDeltaTime)
overridevirtual

Definition at line 63 of file ACameraManager.cpp.

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}
#define TIMPLEMENT()
Definition Defines.h:136
#define TTRUE
Definition Typedefs.h:25

◆ SetCameraHelper()

void ACameraManager::SetCameraHelper ( ACameraHelper * a_pHelper)

Definition at line 111 of file ACameraManager.cpp.

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}

◆ StopPositionLerp()

void ACameraManager::StopPositionLerp ( TFLOAT a_flDeltaTime)

Definition at line 184 of file ACameraManager.cpp.

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}

Member Data Documentation

◆ m_apCameraHelpers

ACameraHelper* ACameraManager::m_apCameraHelpers[CAMERAHELPER_NUM_OF]

Definition at line 75 of file ACameraManager.h.

◆ m_apCameras

ACamera* ACameraManager::m_apCameras[SPLITSCREEN_MAX_CAMERAS]

Definition at line 78 of file ACameraManager.h.

◆ m_apCurrentSplitscreenCameraHelpers

ACameraHelper* ACameraManager::m_apCurrentSplitscreenCameraHelpers[SPLITSCREEN_MAX_CAMERAS]

Definition at line 80 of file ACameraManager.h.

◆ m_apSplitscreenCameraHelpers

ACameraHelper* ACameraManager::m_apSplitscreenCameraHelpers[SPLITSCREEN_CAMERAHELPER_NUM_OF]

Definition at line 76 of file ACameraManager.h.

◆ m_bIsPosLerping

TBOOL ACameraManager::m_bIsPosLerping

Definition at line 88 of file ACameraManager.h.

◆ m_fLerpDuration

TFLOAT ACameraManager::m_fLerpDuration

Definition at line 84 of file ACameraManager.h.

◆ m_fLerpTime

TFLOAT ACameraManager::m_fLerpTime

Definition at line 85 of file ACameraManager.h.

◆ m_pCurrentCamera

ACamera* ACameraManager::m_pCurrentCamera

Definition at line 77 of file ACameraManager.h.

◆ m_pCurrentHelper

ACameraHelper* ACameraManager::m_pCurrentHelper

Definition at line 79 of file ACameraManager.h.

◆ m_pPreviousCameraHelper

ACameraHelper* ACameraManager::m_pPreviousCameraHelper

Definition at line 81 of file ACameraManager.h.

◆ m_vInitialLookDirection

Toshi::TVector4 ACameraManager::m_vInitialLookDirection

Definition at line 83 of file ACameraManager.h.

◆ m_vLerpPosFrom

Toshi::TVector4 ACameraManager::m_vLerpPosFrom

Definition at line 82 of file ACameraManager.h.

◆ ms_oClass

Toshi::TClass ACameraManager::ms_oClass = Toshi::TClass( "ACameraManager", ACameraManager::PARENTCLASS, ACameraManager::CreateTObject, ACameraManager::CreateTObjectInPlace, ACameraManager::InitialiseClass, ACameraManager::DeinitialiseClass, 0, 1, sizeof( ACameraManager ), alignof( ACameraManager ) )
static

Definition at line 10 of file ACameraManager.h.

◆ PARENTCLASS

Toshi::TClass* ACameraManager::PARENTCLASS = & Toshi::TTask::ms_oClass
staticconstexpr

Definition at line 10 of file ACameraManager.h.

◆ SPLITSCREEN_MAX_CAMERAS

TUINT ACameraManager::SPLITSCREEN_MAX_CAMERAS = 4
staticconstexpr

Definition at line 12 of file ACameraManager.h.


The documentation for this class was generated from the following files: