Skip to content

Commit 222bfe9

Browse files
committed
No longer using global variables in animation hooks
1 parent d9027b5 commit 222bfe9

File tree

1 file changed

+83
-57
lines changed

1 file changed

+83
-57
lines changed

Client/multiplayer_sa/CMultiplayerSA.cpp

Lines changed: 83 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -5449,113 +5449,139 @@ void _declspec(naked) HOOK_CAnimBlendAssocGroup_CopyAnimation ()
54495449
}
54505450
}
54515451

5452-
CAnimBlendAssocGroupSAInterface * pAnimAssocGroupInterface = nullptr;
5453-
5454-
RpClump * animationClump = NULL;
5455-
AssocGroupId animationGroup = 0;
5456-
AnimationId animationID = 0;
5457-
CAnimBlendAssociationSAInterface * pAnimAssociation = nullptr;
54585452
void _declspec(naked) HOOK_CAnimManager_AddAnimation ()
54595453
{
54605454
_asm
5461-
{
5462-
mov eax, [esp+4]
5463-
mov animationClump, eax
5464-
mov eax, [esp+8]
5465-
mov animationGroup, eax
5466-
mov eax, [esp+12]
5467-
mov animationID, eax
5455+
{
54685456
pushad
54695457
}
5470-
5471-
animationID = OnCAnimBlendAssocGroupCopyAnimation ( animationGroup, animationID );
54725458

5473-
if ( m_pAddAnimationHandler )
5459+
if ( m_pAddAnimationHandler )
54745460
{
5475-
pAnimAssociation = m_pAddAnimationHandler ( animationClump, animationGroup, animationID );
5461+
_asm
5462+
{
5463+
popad
5464+
mov ecx, [esp+4] // animationClump
5465+
mov edx, [esp+8] // animationGroup
5466+
mov eax, [esp+12] // animationID
5467+
push eax
5468+
push edx
5469+
call OnCAnimBlendAssocGroupCopyAnimation
5470+
add esp, 8
5471+
mov [esp+12], eax // replace animationID
5472+
5473+
// call our handler function
5474+
push eax
5475+
push edx
5476+
mov ecx, [esp+12] // animationClump
5477+
push ecx
5478+
call m_pAddAnimationHandler
5479+
add esp, 0Ch
5480+
pushad
5481+
jmp NORMAL_FLOW_AddAnimation
5482+
}
54765483
}
54775484

54785485
_asm
54795486
{
5487+
NORMAL_FLOW_AddAnimation:
54805488
popad
5481-
mov eax,dword ptr [esp+0Ch]
5482-
mov edx,dword ptr ds:[0B4EA34h]
5489+
mov eax, dword ptr [esp+0Ch]
5490+
mov edx, dword ptr ds:[0B4EA34h]
54835491
push esi
54845492
push edi
5485-
mov eax, animationID
54865493
push eax
5487-
mov eax, [esp+14h]
5488-
mov edi, animationClump
5494+
mov eax, dword ptr [esp+14h] // animationGroup
5495+
mov edi, dword ptr [esp+10h] // animationClump
54895496
jmp RETURN_CAnimManager_AddAnimation
5490-
}
5497+
}
54915498
}
54925499

5493-
CAnimBlendAssociationSAInterface * pAnimAssociationToSyncWith = nullptr;
54945500
void _declspec(naked) HOOK_CAnimManager_AddAnimationAndSync ()
54955501
{
54965502
_asm
5497-
{
5498-
mov eax, [esp+4]
5499-
mov animationClump, eax
5500-
mov eax, [esp+8]
5501-
mov pAnimAssociationToSyncWith, eax
5502-
mov eax, [esp+12]
5503-
mov animationGroup, eax
5504-
mov eax, [esp+16]
5505-
mov animationID, eax
5503+
{
55065504
pushad
55075505
}
5508-
5509-
animationID = OnCAnimBlendAssocGroupCopyAnimation ( animationGroup, animationID );
55105506

5511-
if ( m_pAddAnimationAndSyncHandler )
5507+
if ( m_pAddAnimationAndSyncHandler )
55125508
{
5513-
pAnimAssociation = m_pAddAnimationAndSyncHandler ( animationClump, pAnimAssociationToSyncWith, animationGroup, animationID );
5509+
_asm
5510+
{
5511+
popad
5512+
mov ecx, [esp+4] // animationClump
5513+
mov ebx, [esp+8] // pAnimAssociationToSyncWith
5514+
mov edx, [esp+12] // animationGroup
5515+
mov eax, [esp+16] // animationID
5516+
push eax
5517+
push edx
5518+
call OnCAnimBlendAssocGroupCopyAnimation
5519+
add esp, 8
5520+
mov [esp+16], eax // replace animationID
5521+
5522+
// call our handler function
5523+
push eax
5524+
push edx
5525+
push ebx
5526+
mov ecx, [esp+16] // animationClump
5527+
push ecx
5528+
call m_pAddAnimationAndSyncHandler
5529+
add esp, 10h
5530+
pushad
5531+
jmp NORMAL_FLOW_AddAnimationAndSync
5532+
}
55145533
}
55155534

55165535
_asm
55175536
{
5537+
NORMAL_FLOW_AddAnimationAndSync:
55185538
popad
5519-
mov eax,dword ptr [esp+10h]
5520-
mov edx,dword ptr ds:[0B4EA34h]
5539+
mov eax, dword ptr [esp+10h]
5540+
mov edx, dword ptr ds:[0B4EA34h]
55215541
push esi
55225542
push edi
5523-
mov eax, animationID
55245543
push eax
5525-
mov eax, [esp+18h]
5526-
mov edi, animationClump
5544+
mov eax, dword ptr [esp+18h] // animationGroup
5545+
mov edi, dword ptr [esp+10h] // animationClump
55275546
jmp RETURN_CAnimManager_AddAnimationAndSync
55285547
}
55295548
}
55305549

5531-
CAnimBlendHierarchySAInterface * pAnimHierarchy = nullptr;
5532-
int flags = 0;
5533-
float animationBlendDelta = 0.0f;
55345550
void _declspec(naked) HOOK_CAnimManager_BlendAnimation_Hierarchy ()
55355551
{
55365552
_asm
5537-
{
5538-
mov eax, [esp+4]
5539-
mov animationClump, eax
5540-
mov eax, [esp+8]
5541-
mov pAnimHierarchy, eax
5542-
mov eax, [esp+12]
5543-
mov flags, eax
5544-
mov eax, [esp+16]
5545-
mov animationBlendDelta, eax
5553+
{
55465554
pushad
55475555
}
55485556

55495557
if ( m_pBlendAnimationHierarchyHandler )
55505558
{
5551-
pAnimHierarchy = m_pBlendAnimationHierarchyHandler ( animationClump, pAnimHierarchy, flags, animationBlendDelta );
5559+
_asm
5560+
{
5561+
popad
5562+
//mov edx, [esp+4] // animationClump
5563+
mov eax, [esp+8] // pAnimHierarchy
5564+
mov ecx, [esp+12] // flags
5565+
mov edx, [esp+16] // animationBlendDelta
5566+
5567+
// call our handler function
5568+
push edx
5569+
mov edx, [esp+8] // animationClump
5570+
push ecx
5571+
push eax
5572+
push edx
5573+
call m_pBlendAnimationHierarchyHandler
5574+
add esp, 10h
5575+
mov [esp+8], eax // replace pAnimHierarchy
5576+
pushad
5577+
jmp NORMAL_FLOW_BlendAnimation_Hierarchy
5578+
}
55525579
}
55535580

55545581
_asm
55555582
{
5583+
NORMAL_FLOW_BlendAnimation_Hierarchy:
55565584
popad
5557-
mov eax, pAnimHierarchy
5558-
mov [esp+8], eax
55595585
push 0FFFFFFFFh
55605586
push 04D4410h
55615587
jmp RETURN_CAnimManager_BlendAnimation_Hierarchy

0 commit comments

Comments
 (0)