[saco] Implement/match CAutomobile__ProcessEntityCollision_Hook

This commit is contained in:
ricardoofnl
2026-08-30 12:54:07 +07:00
parent cc08b9adcf
commit baa36a9b59
+47 -1
View File
@@ -1195,9 +1195,55 @@ NUDE CWorld__CameraToIgnoreThisObject_Hook()
//-----------------------------------------------------------
// shared by the four ProcessEntityCollision hooks below
DWORD dwCollisionThis;
DWORD dwCollisionEntity;
DWORD dwCollisionRetAddr;
NUDE CAutomobile__ProcessEntityCollision_Hook()
{
// TODO: CAutomobile__ProcessEntityCollision_Hook
__asm
{
mov dwCollisionThis, ecx
mov edx, [esp]
mov dwCollisionRetAddr, edx
mov edx, [esp+4]
mov dwCollisionEntity, edx
pushad
cmp pNetGame, 0
jz process_collision
mov eax, pNetGame
movzx ecx, byte ptr [eax+0x232] // pNetGame->field_232
test ecx, ecx
jz process_collision
cmp dwCollisionThis, 0
jz process_collision
cmp dwCollisionEntity, 0
jz process_collision
mov edx, dwCollisionEntity
movzx eax, word ptr [edx+0x22] // entity.nModelIndex
cmp eax, 400
jl process_collision
mov ecx, dwCollisionEntity
movzx edx, word ptr [ecx+0x22]
cmp edx, 611 // only vehicle models pass
jg process_collision
mov eax, dwCollisionThis
cmp dword ptr [eax+0x460], 0 // pVehicle->pDriver
jz process_collision
mov ecx, dwCollisionEntity
cmp dword ptr [ecx+0x460], 0
jz process_collision
popad
// both vehicles are being driven, so don't collide them
mov eax, 0
retn 8
process_collision:
popad
mov edx, 0x6ACE70 // CAutomobile::ProcessEntityCollision
jmp edx
}
}
//-----------------------------------------------------------