21 : m_pAnimation(
TNULL )
22 , m_pAModelInstance(
TNULL )
23 , m_pSceneObject(
TNULL )
24 , m_pSkeletonInstance(
TNULL )
26 , m_pAnimatableObject(
TNULL )
34 ThisClass::OnDetach();
44 m_pSkeletonInstance->GetBoneTransformCurrent( m_iBoneId, matBoneTransform );
45 m_pSceneObject->GetTransform().GetLocalMatrixImp( m_oTransform );
47 m_oTransform.
Multiply( matBoneTransform );
51 vecDirection.
x = -vecDirection.
x;
52 vecDirection.
y = -vecDirection.
y;
53 vecDirection.
z = -vecDirection.
z;
54 vecDirection.
w = 1.0f;
56 m_pCamera->GetMatrix().SetTranslation( m_oTransform.GetTranslation() );
57 m_pCamera->LookAtDirection( vecDirection );
80 AAnimatableObjectManager::GetSingleton()->DestroyAnimatableObject( m_pAnimatableObject );
81 m_pAnimatableObject =
TNULL;
91 m_oAnimStartListener.Disconnect();
93 if ( m_pSkeletonInstance )
95 m_pSkeletonInstance->RemoveAllAnimations();
101 m_pAnimation =
TNULL;
104 if ( m_pAModelInstance )
106 TPString8 strModelName = m_pAModelInstance->GetModelName();
108 AModelRepos::GetSingleton()->DestroyModelInstance( m_pAModelInstance );
109 AModelRepos::GetSingleton()->UnloadModel( strModelName,
TFALSE );
110 AModelRepos::GetSingleton()->UnloadUnusedModels();
112 m_pSceneObject =
TNULL;
113 m_pSkeletonInstance =
TNULL;
114 m_pAModelInstance =
TNULL;
125 AModelRepos* pModelRepos = AModelRepos::GetSingleton();
136 m_pAModelInstance = pInstance;
139 m_pSceneObject = m_pAModelInstance->GetSceneObject();
140 m_pSkeletonInstance = m_pSceneObject->GetSkeletonInstance();
142 TString8 strBoneName = a_szBoneName;
143 m_iBoneId = m_pSkeletonInstance->GetSkeleton()->GetBoneID( strBoneName, strBoneName.
Length() );
146 m_oAnimStartListener.Connect(
147 ARenderer::GetSingleton()->GetAnimationUpdateStartEmitter(),
149 &AnimationStartEventHandler,
159 m_pSkeletonInstance->RemoveAnimation( m_pAnimation, 0.0f );
160 m_pAnimation =
TNULL;
163 TINT iSeqId = m_pSkeletonInstance->GetSkeleton()->GetSequenceID( a_szSeqName );
166 m_pAnimation = m_pSkeletonInstance->AddAnimation( iSeqId, 1.0f, 0.0f );
175 a_pCaller->m_pSkeletonInstance->UpdateState(
TTRUE );
#define TOSHI_NAMESPACE_USING
#define TDEFINE_CLASS(...)
TSystemManager g_oSystemManager
void Multiply(const TMatrix44 &a_rLeft, const TMatrix44 &a_rRight)
TFLOAT GetCurrentDeltaTime() const
Toshi::TTransformObject & GetTransform() const
void LoadModel(const Toshi::TPString8 &a_rcName, Toshi::TTRB *a_pTRB)
AModelInstance * InstantiateModel(AModel *a_pModel)
AModel * GetModel(const Toshi::TPString8 &a_rcName)
virtual TBOOL OnUpdate(TFLOAT a_fDeltaTime) OVERRIDE
virtual void OnCreate() OVERRIDE
virtual TBOOL Unk2(void *) OVERRIDE
virtual void OnDestroy() OVERRIDE
virtual void OnDetach() OVERRIDE
virtual TBOOL Unk3(void *, void *) OVERRIDE
virtual void OnAttach() OVERRIDE
void SetAnimation(const TCHAR *a_szSeqName)
ABoneAttachCameraHelper()
virtual void BoneHelper_Unknown()
void SetModel(const Toshi::TPString8 &a_strModelName, const TCHAR *a_szBoneName)
~ABoneAttachCameraHelper()