@@ -378,6 +378,7 @@ PreFxRenderHandler * m_pPreFxRenderHandler = NULL;
378378PreHudRenderHandler * m_pPreHudRenderHandler = NULL ;
379379AddAnimationHandler* m_pAddAnimationHandler = NULL ;
380380AddAnimationAndSyncHandler* m_pAddAnimationAndSyncHandler = nullptr ;
381+ AssocGroupCopyAnimationHandler* m_pAssocGroupCopyAnimationHandler = nullptr ;
381382BlendAnimationHierarchyHandler* m_pBlendAnimationHierarchyHandler = NULL ;
382383ProcessCollisionHandler* m_pProcessCollisionHandler = NULL ;
383384VehicleCollisionHandler* m_pVehicleCollisionHandler = NULL ;
@@ -390,6 +391,8 @@ DrivebyAnimationHandler* m_pDrivebyAnimationHandler = NULL;
390391CEntitySAInterface * dwSavedPlayerPointer = 0 ;
391392CEntitySAInterface * activeEntityForStreaming = 0 ; // the entity that the streaming system considers active
392393
394+ int _cdecl OnCAnimBlendAssocGroupCopyAnimation ( AssocGroupId animGroup, int iAnimId );
395+
393396void HOOK_FindPlayerCoors ();
394397void HOOK_FindPlayerCentreOfWorld ();
395398void HOOK_FindPlayerHeading ();
@@ -2242,6 +2245,11 @@ void CMultiplayerSA::SetAddAnimationAndSyncHandler ( AddAnimationAndSyncHandler
22422245 m_pAddAnimationAndSyncHandler = pHandler;
22432246}
22442247
2248+ void CMultiplayerSA::SetAssocGroupCopyAnimationHandler ( AssocGroupCopyAnimationHandler * pHandler )
2249+ {
2250+ m_pAssocGroupCopyAnimationHandler = pHandler;
2251+ }
2252+
22452253void CMultiplayerSA::SetBlendAnimationHierarchyHandler ( BlendAnimationHierarchyHandler * pHandler )
22462254{
22472255 m_pBlendAnimationHierarchyHandler = pHandler;
@@ -5351,15 +5359,6 @@ void _declspec(naked) HOOK_CEventHandler_ComputeKnockOffBikeResponse ()
53515359 }
53525360}
53535361
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-
53635362CAnimBlendAssocGroupSAInterface * pAnimAssocGroup = nullptr ;
53645363CAnimBlendStaticAssociationSAInterface AnimStaticAssoc;
53655364CAnimBlendStaticAssociationSAInterface * pAnimStaticAssoc = nullptr ;
@@ -5375,9 +5374,11 @@ void _declspec(naked) HOOK_CAnimBlendAssocGroup_CopyAnimation ()
53755374 pushad
53765375 }
53775376
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+ }
53815382 _asm
53825383 {
53835384 popad
@@ -5408,14 +5409,6 @@ void _declspec(naked) HOOK_CAnimBlendAssocGroup_CopyAnimation ()
54085409 }
54095410}
54105411
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-
54195412CAnimBlendAssocGroupSAInterface * pAnimAssocGroupInterface = nullptr ;
54205413
54215414RpClump * animationClump = NULL ;
@@ -5435,8 +5428,7 @@ void _declspec(naked) HOOK_CAnimManager_AddAnimation ()
54355428 pushad
54365429 }
54375430
5438- pAnimAssocGroupInterface = getAnimAssocGroupInterface ( animationGroup );
5439- animationID = OnCAnimBlendAssocGroupCopyAnimation ( pAnimAssocGroupInterface, animationID );
5431+ animationID = OnCAnimBlendAssocGroupCopyAnimation ( animationGroup, animationID );
54405432
54415433 if ( m_pAddAnimationHandler )
54425434 {
@@ -5474,8 +5466,7 @@ void _declspec(naked) HOOK_CAnimManager_AddAnimationAndSync ()
54745466 pushad
54755467 }
54765468
5477- pAnimAssocGroupInterface = getAnimAssocGroupInterface ( animationGroup );
5478- animationID = OnCAnimBlendAssocGroupCopyAnimation ( pAnimAssocGroupInterface, animationID );
5469+ animationID = OnCAnimBlendAssocGroupCopyAnimation ( animationGroup, animationID );
54795470
54805471 if ( m_pAddAnimationAndSyncHandler )
54815472 {
0 commit comments