diff options
author | eray orçunus <erayorcunus@gmail.com> | 2019-07-07 00:36:39 +0200 |
---|---|---|
committer | eray orçunus <erayorcunus@gmail.com> | 2019-07-07 00:39:58 +0200 |
commit | ee8e16376b4d0fcb199762274946c16b8f42c04f (patch) | |
tree | 0aec680fb9460225c18231d26d78b75f522c2592 /src/References.cpp | |
parent | General fixes (diff) | |
parent | some work on vehicles (diff) | |
download | re3-ee8e16376b4d0fcb199762274946c16b8f42c04f.tar re3-ee8e16376b4d0fcb199762274946c16b8f42c04f.tar.gz re3-ee8e16376b4d0fcb199762274946c16b8f42c04f.tar.bz2 re3-ee8e16376b4d0fcb199762274946c16b8f42c04f.tar.lz re3-ee8e16376b4d0fcb199762274946c16b8f42c04f.tar.xz re3-ee8e16376b4d0fcb199762274946c16b8f42c04f.tar.zst re3-ee8e16376b4d0fcb199762274946c16b8f42c04f.zip |
Diffstat (limited to 'src/References.cpp')
-rw-r--r-- | src/References.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/References.cpp b/src/References.cpp index 187f4ffa..e87f0fd5 100644 --- a/src/References.cpp +++ b/src/References.cpp @@ -1,5 +1,9 @@ #include "common.h" #include "patcher.h" +#include "World.h" +#include "Vehicle.h" +#include "PlayerPed.h" +#include "Pools.h" #include "References.h" CReference *CReferences::aRefs = (CReference*)0x70BBE0; //[NUMREFERENCES]; @@ -17,6 +21,45 @@ CReferences::Init(void) aRefs[NUMREFERENCES-1].next = nil; } +void +CReferences::RemoveReferencesToPlayer(void) +{ + if(FindPlayerVehicle()) + FindPlayerVehicle()->ResolveReferences(); + if(FindPlayerPed()) + FindPlayerPed()->ResolveReferences(); +} + +void +CReferences::PruneAllReferencesInWorld(void) +{ + int i; + CEntity *e; + + i = CPools::GetPedPool()->GetSize(); + while(--i >= 0){ + e = CPools::GetPedPool()->GetSlot(i); + if(e) + e->PruneReferences(); + } + + i = CPools::GetVehiclePool()->GetSize(); + while(--i >= 0){ + e = CPools::GetVehiclePool()->GetSlot(i); + if(e) + e->PruneReferences(); + } + + i = CPools::GetObjectPool()->GetSize(); + while(--i >= 0){ + e = CPools::GetObjectPool()->GetSlot(i); + if(e) + e->PruneReferences(); + } +} + STARTPATCHES InjectHook(0x4A7350, CReferences::Init, PATCH_JUMP); + InjectHook(0x4A7570, CReferences::RemoveReferencesToPlayer, PATCH_JUMP); + InjectHook(0x4A75A0, CReferences::PruneAllReferencesInWorld, PATCH_JUMP); ENDPATCHES |