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

#include <ABoneAttachCameraHelper.h>

Inheritance diagram for ABoneAttachCameraHelper:
ACameraHelper

Public Member Functions

 TDECLARE_CLASS (ABoneAttachCameraHelper, ACameraHelper)
 
 ABoneAttachCameraHelper ()
 
 ~ABoneAttachCameraHelper ()
 
virtual TBOOL OnUpdate (TFLOAT a_fDeltaTime) OVERRIDE
 
virtual TBOOL Unk2 (void *) OVERRIDE
 
virtual TBOOL Unk3 (void *, void *) OVERRIDE
 
virtual void OnCreate () OVERRIDE
 
virtual void OnDestroy () OVERRIDE
 
virtual void OnAttach () OVERRIDE
 
virtual void OnDetach () OVERRIDE
 
virtual void BoneHelper_Unknown ()
 
void SetModel (const Toshi::TPString8 &a_strModelName, const TCHAR *a_szBoneName)
 
void SetAnimation (const TCHAR *a_szSeqName)
 
- Public Member Functions inherited from ACameraHelper
 TDECLARE_CLASS (ACameraHelper, Toshi::TObject)
 
 ACameraHelper ()
 
 ~ACameraHelper ()
 
virtual void UpdateCurrentCamera ()
 
virtual void GetCameraRotation (Toshi::TVector4 &a_rOutRotation) const
 
virtual void Unk7 (void *)
 
virtual TFLOAT GetFOV () const
 
ACameraGetCamera ()
 
void SetCamera (ACamera *a_pCamera)
 

Additional Inherited Members

- Protected Attributes inherited from ACameraHelper
ACameram_pCamera
 

Detailed Description

Definition at line 14 of file ABoneAttachCameraHelper.h.

Constructor & Destructor Documentation

◆ ABoneAttachCameraHelper()

ABoneAttachCameraHelper::ABoneAttachCameraHelper ( )

Definition at line 20 of file ABoneAttachCameraHelper.cpp.

21 : m_pAnimation( TNULL )
22 , m_pAModelInstance( TNULL )
23 , m_pSceneObject( TNULL )
24 , m_pSkeletonInstance( TNULL )
25 , m_iBoneId( -1 )
26 , m_pAnimatableObject( TNULL )
27{
28}
#define TNULL
Definition Typedefs.h:23

◆ ~ABoneAttachCameraHelper()

ABoneAttachCameraHelper::~ABoneAttachCameraHelper ( )

Definition at line 32 of file ABoneAttachCameraHelper.cpp.

33{
34 ThisClass::OnDetach();
35}

Member Function Documentation

◆ BoneHelper_Unknown()

void ABoneAttachCameraHelper::BoneHelper_Unknown ( )
virtual

Definition at line 118 of file ABoneAttachCameraHelper.cpp.

119{
120}

◆ OnAttach()

void ABoneAttachCameraHelper::OnAttach ( )
virtual

Implements ACameraHelper.

Definition at line 84 of file ABoneAttachCameraHelper.cpp.

85{
86}

◆ OnCreate()

void ABoneAttachCameraHelper::OnCreate ( )
virtual

Implements ACameraHelper.

Definition at line 73 of file ABoneAttachCameraHelper.cpp.

74{
75}

◆ OnDestroy()

void ABoneAttachCameraHelper::OnDestroy ( )
virtual

Implements ACameraHelper.

Definition at line 78 of file ABoneAttachCameraHelper.cpp.

79{
80 AAnimatableObjectManager::GetSingleton()->DestroyAnimatableObject( m_pAnimatableObject );
81 m_pAnimatableObject = TNULL;
82}

◆ OnDetach()

void ABoneAttachCameraHelper::OnDetach ( )
virtual

Reimplemented from ACameraHelper.

Definition at line 89 of file ABoneAttachCameraHelper.cpp.

90{
91 m_oAnimStartListener.Disconnect();
92
93 if ( m_pSkeletonInstance )
94 {
95 m_pSkeletonInstance->RemoveAllAnimations();
96 }
97
98 if ( m_pAnimation )
99 {
100 m_iBoneId = -1;
101 m_pAnimation = TNULL;
102 }
103
104 if ( m_pAModelInstance )
105 {
106 TPString8 strModelName = m_pAModelInstance->GetModelName();
107
108 AModelRepos::GetSingleton()->DestroyModelInstance( m_pAModelInstance );
109 AModelRepos::GetSingleton()->UnloadModel( strModelName, TFALSE );
110 AModelRepos::GetSingleton()->UnloadUnusedModels();
111
112 m_pSceneObject = TNULL;
113 m_pSkeletonInstance = TNULL;
114 m_pAModelInstance = TNULL;
115 }
116}
#define TFALSE
Definition Typedefs.h:24

◆ OnUpdate()

TBOOL ABoneAttachCameraHelper::OnUpdate ( TFLOAT a_fDeltaTime)
virtual

Implements ACameraHelper.

Definition at line 38 of file ABoneAttachCameraHelper.cpp.

39{
40 if ( m_pSceneObject )
41 {
42 // Get bone transform transformed by the model transform
43 TMatrix44 matBoneTransform;
44 m_pSkeletonInstance->GetBoneTransformCurrent( m_iBoneId, matBoneTransform );
45 m_pSceneObject->GetTransform().GetLocalMatrixImp( m_oTransform );
46
47 m_oTransform.Multiply( matBoneTransform );
48
49 TVector4 vecDirection = m_oTransform.AsBasisVector4( BASISVECTOR_FORWARD );
50 vecDirection.Normalise();
51 vecDirection.x = -vecDirection.x;
52 vecDirection.y = -vecDirection.y;
53 vecDirection.z = -vecDirection.z;
54 vecDirection.w = 1.0f;
55
56 m_pCamera->GetMatrix().SetTranslation( m_oTransform.GetTranslation() );
57 m_pCamera->LookAtDirection( vecDirection );
58 }
59
60 return TTRUE;
61}
@ BASISVECTOR_FORWARD
Definition TMatrix44.h:27
#define TTRUE
Definition Typedefs.h:25
TFLOAT w
Definition TVector4.h:367
TFLOAT x
Definition TVector4.h:367
TFLOAT y
Definition TVector4.h:367
void Normalise()
Definition TVector4.cpp:36
TFLOAT z
Definition TVector4.h:367
ACamera * m_pCamera

◆ SetAnimation()

void ABoneAttachCameraHelper::SetAnimation ( const TCHAR * a_szSeqName)

Definition at line 155 of file ABoneAttachCameraHelper.cpp.

156{
157 if ( m_pAnimation )
158 {
159 m_pSkeletonInstance->RemoveAnimation( m_pAnimation, 0.0f );
160 m_pAnimation = TNULL;
161 }
162
163 TINT iSeqId = m_pSkeletonInstance->GetSkeleton()->GetSequenceID( a_szSeqName );
164 TASSERT( iSeqId != TSEQ_INVALID );
165
166 m_pAnimation = m_pSkeletonInstance->AddAnimation( iSeqId, 1.0f, 0.0f );
167}
#define TSEQ_INVALID
Definition TSkeleton.h:10
#define TASSERT(X,...)
Definition Defines.h:138
int TINT
Definition Typedefs.h:7

◆ SetModel()

void ABoneAttachCameraHelper::SetModel ( const Toshi::TPString8 & a_strModelName,
const TCHAR * a_szBoneName )

Definition at line 123 of file ABoneAttachCameraHelper.cpp.

124{
125 AModelRepos* pModelRepos = AModelRepos::GetSingleton();
126
127 // Make sure the model is loaded
128 pModelRepos->LoadModel( a_strModelName, TNULL );
129
130 AModel* pModel = pModelRepos->GetModel( a_strModelName );
131 TASSERT( TNULL != pModel );
132
133 AModelInstance* pInstance = pModelRepos->InstantiateModel( pModel );
134 TASSERT( TNULL != pInstance );
135
136 m_pAModelInstance = pInstance;
137 m_pAModelInstance->GetTransform().SetEuler( TVector3( TMath::HALF_PI, 0.0f, 0.0f ) );
138
139 m_pSceneObject = m_pAModelInstance->GetSceneObject();
140 m_pSkeletonInstance = m_pSceneObject->GetSkeletonInstance();
141
142 TString8 strBoneName = a_szBoneName;
143 m_iBoneId = m_pSkeletonInstance->GetSkeleton()->GetBoneID( strBoneName, strBoneName.Length() );
144 TASSERT( m_iBoneId != TBONE_INVALID );
145
146 m_oAnimStartListener.Connect(
147 ARenderer::GetSingleton()->GetAnimationUpdateStartEmitter(),
148 this,
149 &AnimationStartEventHandler,
150 0
151 );
152}
#define TBONE_INVALID
Definition TSkeleton.h:9
constexpr TFLOAT HALF_PI
Definition TMathInline.h:37
TINT Length() const
Definition TString8.h:93
Toshi::TTransformObject & GetTransform() const
Definition AModel.h:53
void LoadModel(const Toshi::TPString8 &a_rcName, Toshi::TTRB *a_pTRB)
AModelInstance * InstantiateModel(AModel *a_pModel)
AModel * GetModel(const Toshi::TPString8 &a_rcName)

◆ TDECLARE_CLASS()

ABoneAttachCameraHelper::TDECLARE_CLASS ( ABoneAttachCameraHelper ,
ACameraHelper  )

◆ Unk2()

TBOOL ABoneAttachCameraHelper::Unk2 ( void * )
virtual

Implements ACameraHelper.

Definition at line 63 of file ABoneAttachCameraHelper.cpp.

64{
65 return TTRUE;
66}

◆ Unk3()

TBOOL ABoneAttachCameraHelper::Unk3 ( void * ,
void *  )
virtual

Implements ACameraHelper.

Definition at line 68 of file ABoneAttachCameraHelper.cpp.

69{
70 return TTRUE;
71}

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