Skip to content

Commit 5966687

Browse files
committed
Moved raw memory access to Game SA
1 parent a7b1011 commit 5966687

File tree

10 files changed

+101
-88
lines changed

10 files changed

+101
-88
lines changed

Client/game_sa/CAnimBlendSequenceSA.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,8 @@ void CAnimBlendSequenceSA::SetKeyFrames ( size_t cKeyFrames, bool bRoot, bool bC
5858
call dwFunc
5959
}
6060
}
61+
62+
void * CAnimBlendSequenceSA::GetKeyFrame ( size_t iFrame, uint32_t u32FrameSizeInBytes )
63+
{
64+
return ( m_pInterface->pKeyFrames + u32FrameSizeInBytes * iFrame );
65+
}

Client/game_sa/CAnimBlendSequenceSA.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class CAnimBlendSequenceSAInterface
2929
};
3030
unsigned short sFlags;
3131
unsigned short sNumKeyFrames;
32-
void * pKeyFrames;
32+
BYTE * pKeyFrames;
3333
};
3434

3535
class CAnimBlendSequenceSA : public CAnimBlendSequence
@@ -40,9 +40,10 @@ class CAnimBlendSequenceSA : public CAnimBlendSequence
4040
void SetName ( const char * szName );
4141
void SetBoneTag ( int32_t i32BoneID );
4242
void SetKeyFrames ( size_t cKeyFrames, bool bRoot, bool bCompressed, void * pKeyFrames );
43+
void * GetKeyFrame ( size_t iFrame, uint32_t u32FrameSizeInBytes );
4344
uint32_t GetHash ( void ) { return m_pInterface->m_hash; }
4445
uint16_t GetBoneTag ( void ) { return m_pInterface->m_boneId; }
45-
void * GetKeyFrames ( void ) { return m_pInterface->pKeyFrames; }
46+
BYTE * GetKeyFrames ( void ) { return m_pInterface->pKeyFrames; }
4647
unsigned short GetKeyFramesCount ( void ) { return m_pInterface->sNumKeyFrames; }
4748
bool IsBigChunkForAllSequences ( void ) { return ( ( m_pInterface->sFlags >> 3) & 1 ); }
4849
CAnimBlendSequenceSAInterface * GetInterface ( void ) { return m_pInterface; }

Client/game_sa/CAnimBlockSA.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,14 @@ void CAnimBlockSA::Request ( EModelRequestType requestType, bool bAllowBlockingF
4545
AddRef ();
4646
}
4747
}
48+
49+
CAnimBlendHierarchySAInterface * CAnimBlockSA::GetAnimationHierarchyInterface ( size_t iAnimation )
50+
{
51+
if ( !IsLoaded ( ) )
52+
return nullptr;
53+
54+
iAnimation += m_pInterface->idOffset;
55+
BYTE * arrAnimations = reinterpret_cast < BYTE * > ( ARRAY_CAnimManager_Animations );
56+
return reinterpret_cast < CAnimBlendHierarchySAInterface * > ( arrAnimations + sizeof ( CAnimBlendHierarchySAInterface ) * iAnimation );
57+
}
58+

Client/game_sa/CAnimBlockSA.h

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,18 @@ class CAnimBlockSA : public CAnimBlock
3636
{
3737
friend class CAnimBlendAssocGroupSA;
3838
public:
39-
CAnimBlockSA ( CAnimBlockSAInterface * pInterface ) { m_pInterface = pInterface; }
40-
41-
CAnimBlockSAInterface * GetInterface ( void ) { return m_pInterface; }
42-
char * GetName ( void ) { return m_pInterface->szName; }
43-
int GetIndex ( void ) { return m_pInterface->GetIndex (); }
44-
void AddRef ( void ) { m_pInterface->usRefs++; }
45-
unsigned short GetRefs ( void ) { return m_pInterface->usRefs; }
46-
void Request ( EModelRequestType requestType, bool bAllowBlockingFail = false );
47-
bool IsLoaded ( void ) { return m_pInterface->bLoaded; }
39+
CAnimBlockSA ( CAnimBlockSAInterface * pInterface ) { m_pInterface = pInterface; }
40+
41+
CAnimBlockSAInterface * GetInterface ( void ) { return m_pInterface; }
42+
char * GetName ( void ) { return m_pInterface->szName; }
43+
int GetIndex ( void ) { return m_pInterface->GetIndex (); }
44+
void AddRef ( void ) { m_pInterface->usRefs++; }
45+
unsigned short GetRefs ( void ) { return m_pInterface->usRefs; }
46+
bool IsLoaded ( void ) { return m_pInterface->bLoaded; }
47+
int GetIDOffset ( void ) { return m_pInterface->idOffset; }
48+
size_t GetAnimationCount ( void ) { return m_pInterface->nAnimations;}
49+
void Request ( EModelRequestType requestType, bool bAllowBlockingFail = false );
50+
CAnimBlendHierarchySAInterface * GetAnimationHierarchyInterface ( size_t iAnimation );
4851

4952
protected:
5053
CAnimBlockSAInterface * m_pInterface;

Client/game_sa/CAnimManagerSA.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,8 @@ class CAnimManagerSA : public CAnimManager
155155
CAnimBlendHierarchy * GetAnimBlendHierarchy ( CAnimBlendHierarchySAInterface * pInterface );
156156

157157
// MTA members, but use this strictly for custom animations only
158-
std::unique_ptr < CAnimBlendHierarchy > GetCustomAnimBlendHierarchy ( CAnimBlendHierarchySAInterface * pInterface );
159-
std::unique_ptr < CAnimBlendSequence > GetCustomAnimBlendSequence ( CAnimBlendSequenceSAInterface * pInterface );
158+
std::unique_ptr < CAnimBlendHierarchy > GetCustomAnimBlendHierarchy ( CAnimBlendHierarchySAInterface * pInterface );
159+
std::unique_ptr < CAnimBlendSequence > GetCustomAnimBlendSequence ( CAnimBlendSequenceSAInterface * pInterface );
160160

161161
bool isGateWayAnimationHierarchy ( CAnimBlendHierarchySAInterface * pInterface );
162162
const SString & GetGateWayBlockName ( void );

Client/mods/deathmatch/logic/CClientIFP.cpp

Lines changed: 39 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ CClientIFP::CClientIFP ( class CClientManager* pManager, ElementID ID ) : CClien
99
m_pIFPAnimations = std::make_shared < CIFPAnimations > ();
1010
m_pAnimManager = g_pGame->GetAnimManager ( );
1111
m_bVersion1 = false;
12+
m_u32Hashkey = 0;
1213
}
1314

1415
CClientIFP::~CClientIFP ( void )
@@ -24,6 +25,7 @@ bool CClientIFP::LoadIFP ( const char* szFilePath, const SString & strBlockName
2425

2526
if ( LoadIFPFile ( szFilePath ) )
2627
{
28+
m_u32Hashkey = g_pGame->GetKeyGen()->GetUppercaseKey ( strBlockName );
2729
return true;
2830
}
2931
return false;
@@ -246,7 +248,6 @@ void CClientIFP::ReadSequenceVersion2 ( Object & ObjectNode )
246248
if ( strCorrectBoneName.size ( ) == 0 )
247249
{
248250
strCorrectBoneName = GetCorrectBoneNameFromName ( BoneName );
249-
printf("yes, size is zero\n");
250251
}
251252
}
252253

@@ -260,7 +261,7 @@ bool CClientIFP::ReadSequenceKeyFrames ( std::unique_ptr < CAnimBlendSequence >
260261
{
261262
BYTE * pKeyFrames = m_pAnimManager->AllocateKeyFramesMemory ( iCompressedFrameSize * iFrames );
262263
pAnimationSequence->SetKeyFrames ( iFrames, IsKeyFramesTypeRoot ( iFrameType ), m_kbAllKeyFramesCompressed, pKeyFrames );
263-
ReadKeyFramesAsCompressed ( iFrameType, pKeyFrames, iFrames );
264+
ReadKeyFramesAsCompressed ( pAnimationSequence, iFrameType, iFrames );
264265
return true;
265266
}
266267
return false;
@@ -313,112 +314,97 @@ void CClientIFP::ReadAnimationHeaderVersion2 ( Animation & AnimationNode, bool b
313314
}
314315
}
315316

316-
void CClientIFP::ReadKeyFramesAsCompressed ( IFP_FrameType iFrameType, BYTE * pKeyFrames, int32_t iFrames )
317+
void CClientIFP::ReadKeyFramesAsCompressed ( std::unique_ptr < CAnimBlendSequence > & pAnimationSequence, IFP_FrameType iFrameType, int32_t iFrames )
317318
{
318319
switch ( iFrameType )
319320
{
320321
case IFP_FrameType::KRTS:
321322
{
322-
ReadKrtsFramesAsCompressed ( pKeyFrames, iFrames );
323+
ReadKrtsFramesAsCompressed ( pAnimationSequence, iFrames );
323324
break;
324325
}
325326
case IFP_FrameType::KRT0:
326327
{
327-
ReadKrt0FramesAsCompressed ( pKeyFrames, iFrames );
328+
ReadKrt0FramesAsCompressed ( pAnimationSequence, iFrames );
328329
break;
329330
}
330331
case IFP_FrameType::KR00:
331332
{
332-
ReadKr00FramesAsCompressed ( pKeyFrames, iFrames );
333+
ReadKr00FramesAsCompressed ( pAnimationSequence, iFrames );
333334
break;
334335
}
335336
case IFP_FrameType::KR00_COMPRESSED:
336337
{
337-
ReadKr00CompressedFrames ( pKeyFrames, iFrames );
338+
ReadCompressedFrames < IFP_Compressed_KR00 > ( pAnimationSequence, iFrames );
338339
break;
339340
}
340341
case IFP_FrameType::KRT0_COMPRESSED:
341342
{
342-
ReadKrt0CompressedFrames ( pKeyFrames, iFrames );
343+
ReadCompressedFrames < IFP_Compressed_KRT0 > ( pAnimationSequence, iFrames );
343344
break;
344345
}
345346
}
346347
}
347348

348-
void CClientIFP::ReadKrtsFramesAsCompressed ( BYTE * pKeyFrames, int32_t TotalFrames )
349+
void CClientIFP::ReadKrtsFramesAsCompressed ( std::unique_ptr < CAnimBlendSequence > & pAnimationSequence, int32_t TotalFrames )
349350
{
350-
for (int32_t FrameIndex = 0; FrameIndex < TotalFrames; FrameIndex++)
351+
for ( int32_t FrameIndex = 0; FrameIndex < TotalFrames; FrameIndex++ )
351352
{
352-
IFP_Compressed_KRT0 * CompressedKrt0 = (IFP_Compressed_KRT0 *)((BYTE*)pKeyFrames + sizeof(IFP_Compressed_KRT0) * FrameIndex);
353-
353+
IFP_Compressed_KRT0 * CompressedKrt0 = static_cast < IFP_Compressed_KRT0 * > ( pAnimationSequence->GetKeyFrame ( FrameIndex, sizeof ( IFP_Compressed_KRT0 ) ) );
354354
IFP_KRTS Krts;
355-
ReadBuffer < IFP_KRTS >(&Krts);
355+
ReadBuffer < IFP_KRTS > ( &Krts );
356356

357-
CompressedKrt0->Rotation.X = static_cast < int16_t > ( ((-Krts.Rotation.X) * 4096.0f) );
358-
CompressedKrt0->Rotation.Y = static_cast < int16_t > ( ((-Krts.Rotation.Y) * 4096.0f) );
359-
CompressedKrt0->Rotation.Z = static_cast < int16_t > ( ((-Krts.Rotation.Z) * 4096.0f) );
360-
CompressedKrt0->Rotation.W = static_cast < int16_t > ( (Krts.Rotation.W * 4096.0f) );
357+
CompressedKrt0->Rotation.X = static_cast < int16_t > ( ( ( -Krts.Rotation.X ) * 4096.0f ) );
358+
CompressedKrt0->Rotation.Y = static_cast < int16_t > ( ( ( -Krts.Rotation.Y ) * 4096.0f ) );
359+
CompressedKrt0->Rotation.Z = static_cast < int16_t > ( ( ( -Krts.Rotation.Z ) * 4096.0f ) );
360+
CompressedKrt0->Rotation.W = static_cast < int16_t > ( ( Krts.Rotation.W * 4096.0f ) );
361361

362-
CompressedKrt0->Time = static_cast < int16_t > ( (Krts.Time * 60.0f + 0.5f) );
362+
CompressedKrt0->Time = static_cast < int16_t > ( ( Krts.Time * 60.0f + 0.5f ) );
363363

364-
CompressedKrt0->Translation.X = static_cast < int16_t > ( (Krts.Translation.X * 1024.0f) );
365-
CompressedKrt0->Translation.Y = static_cast < int16_t > ( (Krts.Translation.Y * 1024.0f) );
366-
CompressedKrt0->Translation.Z = static_cast < int16_t > ( (Krts.Translation.Z * 1024.0f) );
364+
CompressedKrt0->Translation.X = static_cast < int16_t > ( ( Krts.Translation.X * 1024.0f ) );
365+
CompressedKrt0->Translation.Y = static_cast < int16_t > ( ( Krts.Translation.Y * 1024.0f ) );
366+
CompressedKrt0->Translation.Z = static_cast < int16_t > ( ( Krts.Translation.Z * 1024.0f ) );
367367
}
368368
}
369369

370-
void CClientIFP::ReadKrt0FramesAsCompressed ( BYTE * pKeyFrames, int32_t TotalFrames )
370+
void CClientIFP::ReadKrt0FramesAsCompressed ( std::unique_ptr < CAnimBlendSequence > & pAnimationSequence, int32_t TotalFrames )
371371
{
372-
for (int32_t FrameIndex = 0; FrameIndex < TotalFrames; FrameIndex++)
372+
for ( int32_t FrameIndex = 0; FrameIndex < TotalFrames; FrameIndex++ )
373373
{
374-
IFP_Compressed_KRT0 * CompressedKrt0 = (IFP_Compressed_KRT0 *)((BYTE*)pKeyFrames + sizeof(IFP_Compressed_KRT0) * FrameIndex);
375-
374+
IFP_Compressed_KRT0 * CompressedKrt0 = static_cast < IFP_Compressed_KRT0 * > ( pAnimationSequence->GetKeyFrame ( FrameIndex, sizeof ( IFP_Compressed_KRT0 ) ) );
376375
IFP_KRT0 Krt0;
377376
ReadBuffer < IFP_KRT0 > ( &Krt0 );
378377

379-
CompressedKrt0->Rotation.X = static_cast < int16_t > ( ((-Krt0.Rotation.X) * 4096.0f) );
380-
CompressedKrt0->Rotation.Y = static_cast < int16_t > ( ((-Krt0.Rotation.Y) * 4096.0f) );
381-
CompressedKrt0->Rotation.Z = static_cast < int16_t > ( ((-Krt0.Rotation.Z) * 4096.0f) );
382-
CompressedKrt0->Rotation.W = static_cast < int16_t > ( (Krt0.Rotation.W * 4096.0f) );
378+
CompressedKrt0->Rotation.X = static_cast < int16_t > ( ( ( -Krt0.Rotation.X ) * 4096.0f ) );
379+
CompressedKrt0->Rotation.Y = static_cast < int16_t > ( ( ( -Krt0.Rotation.Y ) * 4096.0f ) );
380+
CompressedKrt0->Rotation.Z = static_cast < int16_t > ( ( ( -Krt0.Rotation.Z ) * 4096.0f ) );
381+
CompressedKrt0->Rotation.W = static_cast < int16_t > ( ( Krt0.Rotation.W * 4096.0f ) );
383382

384-
CompressedKrt0->Time = static_cast < int16_t > ( (Krt0.Time * 60.0f + 0.5f) );
383+
CompressedKrt0->Time = static_cast < int16_t > ( ( Krt0.Time * 60.0f + 0.5f ) );
385384

386-
CompressedKrt0->Translation.X = static_cast < int16_t > ( (Krt0.Translation.X * 1024.0f) );
387-
CompressedKrt0->Translation.Y = static_cast < int16_t > ( (Krt0.Translation.Y * 1024.0f) );
388-
CompressedKrt0->Translation.Z = static_cast < int16_t > ( (Krt0.Translation.Z * 1024.0f) );
385+
CompressedKrt0->Translation.X = static_cast < int16_t > ( ( Krt0.Translation.X * 1024.0f ) );
386+
CompressedKrt0->Translation.Y = static_cast < int16_t > ( ( Krt0.Translation.Y * 1024.0f ) );
387+
CompressedKrt0->Translation.Z = static_cast < int16_t > ( ( Krt0.Translation.Z * 1024.0f ) );
389388
}
390389
}
391390

392-
void CClientIFP::ReadKr00FramesAsCompressed ( BYTE * pKeyFrames, int32_t TotalFrames )
391+
void CClientIFP::ReadKr00FramesAsCompressed ( std::unique_ptr < CAnimBlendSequence > & pAnimationSequence, int32_t TotalFrames )
393392
{
394-
for (int32_t FrameIndex = 0; FrameIndex < TotalFrames; FrameIndex++)
393+
for ( int32_t FrameIndex = 0; FrameIndex < TotalFrames; FrameIndex++ )
395394
{
396-
IFP_Compressed_KR00 * CompressedKr00 = (IFP_Compressed_KR00 *)((BYTE*)pKeyFrames + sizeof(IFP_Compressed_KR00) * FrameIndex);
397-
395+
IFP_Compressed_KR00 * CompressedKr00 = static_cast < IFP_Compressed_KR00 * > ( pAnimationSequence->GetKeyFrame ( FrameIndex, sizeof ( IFP_Compressed_KR00 ) ) );
398396
IFP_KR00 Kr00;
399397
ReadBuffer < IFP_KR00 > ( &Kr00 );
400398

401-
CompressedKr00->Rotation.X = static_cast < int16_t > ( ((-Kr00.Rotation.X) * 4096.0f) );
402-
CompressedKr00->Rotation.Y = static_cast < int16_t > ( ((-Kr00.Rotation.Y) * 4096.0f) );
403-
CompressedKr00->Rotation.Z = static_cast < int16_t > ( ((-Kr00.Rotation.Z) * 4096.0f) );
404-
CompressedKr00->Rotation.W = static_cast < int16_t > ( (Kr00.Rotation.W * 4096.0f) );
399+
CompressedKr00->Rotation.X = static_cast < int16_t > ( ( ( -Kr00.Rotation.X ) * 4096.0f ) );
400+
CompressedKr00->Rotation.Y = static_cast < int16_t > ( ( ( -Kr00.Rotation.Y ) * 4096.0f ) );
401+
CompressedKr00->Rotation.Z = static_cast < int16_t > ( ( ( -Kr00.Rotation.Z ) * 4096.0f ) );
402+
CompressedKr00->Rotation.W = static_cast < int16_t > ( ( Kr00.Rotation.W * 4096.0f ) );
405403

406404
CompressedKr00->Time = static_cast < int16_t > ( (Kr00.Time * 60.0f + 0.5f) );
407405
}
408406
}
409407

410-
inline void CClientIFP::ReadKr00CompressedFrames ( BYTE * pKeyFrames, int32_t TotalFrames )
411-
{
412-
size_t iSizeInBytes = sizeof ( IFP_Compressed_KR00 ) * TotalFrames;
413-
ReadBytes ( pKeyFrames, iSizeInBytes );
414-
}
415-
416-
inline void CClientIFP::ReadKrt0CompressedFrames ( BYTE * pKeyFrames, int32_t TotalFrames )
417-
{
418-
size_t iSizeInBytes = sizeof ( IFP_Compressed_KRT0 ) * TotalFrames;
419-
ReadBytes ( pKeyFrames, iSizeInBytes );
420-
}
421-
422408
size_t CClientIFP::GetSizeOfCompressedFrame ( IFP_FrameType iFrameType )
423409
{
424410
switch ( iFrameType )

Client/mods/deathmatch/logic/CClientIFP.h

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -226,12 +226,18 @@ class CClientIFP: public CClientEntity, CFileReader
226226
void ReadAnimationHeaderVersion2 ( Animation & AnimationNode, bool bAnp3 );
227227

228228
bool ReadSequenceKeyFrames ( std::unique_ptr < CAnimBlendSequence > & pAnimationSequence, IFP_FrameType iFrameType, int32_t iFrames );
229-
void ReadKeyFramesAsCompressed ( IFP_FrameType iFrameType, BYTE * pKeyFrames, int32_t iFrames );
230-
void ReadKrtsFramesAsCompressed ( BYTE * pKeyFrames, int32_t TotalFrames );
231-
void ReadKrt0FramesAsCompressed ( BYTE * pKeyFrames, int32_t TotalFrames );
232-
void ReadKr00FramesAsCompressed ( BYTE * pKeyFrames, int32_t TotalFrames );
233-
inline void ReadKr00CompressedFrames ( BYTE * pKeyFrames, int32_t TotalFrames );
234-
inline void ReadKrt0CompressedFrames ( BYTE * pKeyFrames, int32_t TotalFrames );
229+
void ReadKeyFramesAsCompressed ( std::unique_ptr < CAnimBlendSequence > & pAnimationSequence, IFP_FrameType iFrameType, int32_t iFrames );
230+
void ReadKrtsFramesAsCompressed ( std::unique_ptr < CAnimBlendSequence > & pAnimationSequence, int32_t TotalFrames );
231+
void ReadKrt0FramesAsCompressed ( std::unique_ptr < CAnimBlendSequence > & pAnimationSequence, int32_t TotalFrames );
232+
void ReadKr00FramesAsCompressed ( std::unique_ptr < CAnimBlendSequence > & pAnimationSequence, int32_t TotalFrames );
233+
234+
template < class T >
235+
void ReadCompressedFrames ( std::unique_ptr < CAnimBlendSequence > & pAnimationSequence, int32_t TotalFrames )
236+
{
237+
BYTE * pKeyFrames = pAnimationSequence->GetKeyFrames ( );
238+
size_t iSizeInBytes = sizeof ( T ) * TotalFrames;
239+
ReadBytes ( pKeyFrames, iSizeInBytes );
240+
}
235241

236242
void InitializeAnimationHierarchy ( std::unique_ptr < CAnimBlendHierarchy > & pAnimationHierarchy, const char * szAnimationName, const int32_t iSequences );
237243
void InitializeAnimationSequence ( std::unique_ptr < CAnimBlendSequence > & pAnimationSequence, const char * szName, const int32_t iBoneID );
@@ -264,6 +270,7 @@ class CClientIFP: public CClientEntity, CFileReader
264270
private:
265271
std::shared_ptr < CIFPAnimations > m_pIFPAnimations;
266272
SString m_strBlockName;
273+
unsigned int m_u32Hashkey;
267274
std::vector < IFP_Animation > * m_pVecAnimations;
268275
bool m_bVersion1;
269276
CAnimManager * m_pAnimManager;

Client/mods/deathmatch/logic/CClientPed.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6216,18 +6216,13 @@ void CClientPed::RestoreAnimations ( const std::shared_ptr < CClientIFP > & IFP
62166216
}
62176217
}
62186218

6219-
#include "../game_sa/CAnimBlockSA.h" // REMOVE THIS LATER, USE FACTORY METHOD!!!!!!
6220-
62216219
void CClientPed::RestoreAnimations ( CAnimBlock & animationBlock )
62226220
{
6223-
const CAnimBlockSAInterface * pInternalBlockInterface = animationBlock.GetInterface ( );
6224-
DWORD iAnimationIndex = pInternalBlockInterface->idOffset;
6225-
DWORD dwARRAY_CAnimManager_Animations = 0xb4ea40;
6226-
for ( size_t i = 0; i < pInternalBlockInterface->nAnimations; i++ )
6221+
const size_t cAnimations = animationBlock.GetAnimationCount ( );
6222+
for ( size_t i = 0; i < cAnimations; i++)
62276223
{
6228-
auto pAnimHierarchyInterface = (CAnimBlendHierarchySAInterface*)((BYTE*)dwARRAY_CAnimManager_Animations + sizeof(CAnimBlendHierarchySAInterface) * iAnimationIndex);
6224+
auto pAnimHierarchyInterface = animationBlock.GetAnimationHierarchyInterface ( i );
62296225
m_mapOfReplacedAnimations.erase ( pAnimHierarchyInterface );
6230-
iAnimationIndex ++;
62316226
}
62326227
}
62336228

0 commit comments

Comments
 (0)