@@ -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 ;
54585452void _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 ;
54945500void _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 ;
55345550void _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