@@ -378,6 +378,7 @@ PreFxRenderHandler * m_pPreFxRenderHandler = NULL;
378
378
PreHudRenderHandler * m_pPreHudRenderHandler = NULL ;
379
379
AddAnimationHandler* m_pAddAnimationHandler = NULL ;
380
380
AddAnimationAndSyncHandler* m_pAddAnimationAndSyncHandler = nullptr ;
381
+ AssocGroupCopyAnimationHandler* m_pAssocGroupCopyAnimationHandler = nullptr ;
381
382
BlendAnimationHierarchyHandler* m_pBlendAnimationHierarchyHandler = NULL ;
382
383
ProcessCollisionHandler* m_pProcessCollisionHandler = NULL ;
383
384
VehicleCollisionHandler* m_pVehicleCollisionHandler = NULL ;
@@ -390,6 +391,8 @@ DrivebyAnimationHandler* m_pDrivebyAnimationHandler = NULL;
390
391
CEntitySAInterface * dwSavedPlayerPointer = 0 ;
391
392
CEntitySAInterface * activeEntityForStreaming = 0 ; // the entity that the streaming system considers active
392
393
394
+ int _cdecl OnCAnimBlendAssocGroupCopyAnimation ( AssocGroupId animGroup, int iAnimId );
395
+
393
396
void HOOK_FindPlayerCoors ();
394
397
void HOOK_FindPlayerCentreOfWorld ();
395
398
void HOOK_FindPlayerHeading ();
@@ -2242,6 +2245,11 @@ void CMultiplayerSA::SetAddAnimationAndSyncHandler ( AddAnimationAndSyncHandler
2242
2245
m_pAddAnimationAndSyncHandler = pHandler;
2243
2246
}
2244
2247
2248
+ void CMultiplayerSA::SetAssocGroupCopyAnimationHandler ( AssocGroupCopyAnimationHandler * pHandler )
2249
+ {
2250
+ m_pAssocGroupCopyAnimationHandler = pHandler;
2251
+ }
2252
+
2245
2253
void CMultiplayerSA::SetBlendAnimationHierarchyHandler ( BlendAnimationHierarchyHandler * pHandler )
2246
2254
{
2247
2255
m_pBlendAnimationHierarchyHandler = pHandler;
@@ -5351,15 +5359,6 @@ void _declspec(naked) HOOK_CEventHandler_ComputeKnockOffBikeResponse ()
5351
5359
}
5352
5360
}
5353
5361
5354
- void CreateAnimStaticAssociation ( CAnimBlendStaticAssociationSAInterface * pAnimStaticAssoc, CAnimBlendAssocGroupSAInterface * pAnimAssocGroup, DWORD AnimID )
5355
- {
5356
- DWORD * pdwAnimAssocGroup = reinterpret_cast < DWORD * > ( pAnimAssocGroup );
5357
- auto pOriginalAnimStaticAssoc = (CAnimBlendStaticAssociationSAInterface *)( pdwAnimAssocGroup[1 ] + 20 * (AnimID - pdwAnimAssocGroup[3 ]) );
5358
- // auto pAnimStaticAssoc = (CAnimBlendStaticAssociationSAInterface *)malloc ( sizeof(CAnimBlendStaticAssociationSAInterface));
5359
-
5360
- *pAnimStaticAssoc = *pOriginalAnimStaticAssoc;
5361
- }
5362
-
5363
5362
CAnimBlendAssocGroupSAInterface * pAnimAssocGroup = nullptr ;
5364
5363
CAnimBlendStaticAssociationSAInterface AnimStaticAssoc;
5365
5364
CAnimBlendStaticAssociationSAInterface * pAnimStaticAssoc = nullptr ;
@@ -5375,9 +5374,11 @@ void _declspec(naked) HOOK_CAnimBlendAssocGroup_CopyAnimation ()
5375
5374
pushad
5376
5375
}
5377
5376
5378
- CreateAnimStaticAssociation ( &AnimStaticAssoc, pAnimAssocGroup, AnimID );
5379
- pAnimStaticAssoc = &AnimStaticAssoc;
5380
-
5377
+ if ( m_pAssocGroupCopyAnimationHandler )
5378
+ {
5379
+ m_pAssocGroupCopyAnimationHandler ( &AnimStaticAssoc, pClump, pAnimAssocGroup, AnimID );
5380
+ pAnimStaticAssoc = &AnimStaticAssoc;
5381
+ }
5381
5382
_asm
5382
5383
{
5383
5384
popad
@@ -5408,14 +5409,6 @@ void _declspec(naked) HOOK_CAnimBlendAssocGroup_CopyAnimation ()
5408
5409
}
5409
5410
}
5410
5411
5411
- int _cdecl OnCAnimBlendAssocGroupCopyAnimation ( CAnimBlendAssocGroupSAInterface* pGroup, int iAnimId );
5412
-
5413
- CAnimBlendAssocGroupSAInterface * getAnimAssocGroupInterface ( AssocGroupId animGroup )
5414
- {
5415
- DWORD * pAnimAssocGroupsArray = reinterpret_cast < DWORD * > ( *(DWORD*)0xb4ea34 );
5416
- return reinterpret_cast < CAnimBlendAssocGroupSAInterface * > ( pAnimAssocGroupsArray + 5 * animGroup );
5417
- }
5418
-
5419
5412
CAnimBlendAssocGroupSAInterface * pAnimAssocGroupInterface = nullptr ;
5420
5413
5421
5414
RpClump * animationClump = NULL ;
@@ -5435,8 +5428,7 @@ void _declspec(naked) HOOK_CAnimManager_AddAnimation ()
5435
5428
pushad
5436
5429
}
5437
5430
5438
- pAnimAssocGroupInterface = getAnimAssocGroupInterface ( animationGroup );
5439
- animationID = OnCAnimBlendAssocGroupCopyAnimation ( pAnimAssocGroupInterface, animationID );
5431
+ animationID = OnCAnimBlendAssocGroupCopyAnimation ( animationGroup, animationID );
5440
5432
5441
5433
if ( m_pAddAnimationHandler )
5442
5434
{
@@ -5474,8 +5466,7 @@ void _declspec(naked) HOOK_CAnimManager_AddAnimationAndSync ()
5474
5466
pushad
5475
5467
}
5476
5468
5477
- pAnimAssocGroupInterface = getAnimAssocGroupInterface ( animationGroup );
5478
- animationID = OnCAnimBlendAssocGroupCopyAnimation ( pAnimAssocGroupInterface, animationID );
5469
+ animationID = OnCAnimBlendAssocGroupCopyAnimation ( animationGroup, animationID );
5479
5470
5480
5471
if ( m_pAddAnimationAndSyncHandler )
5481
5472
{
0 commit comments