added CPool<cAudioScriptObject, cAudioScriptObject>

This commit is contained in:
Nikolay Korolev 2019-07-20 18:00:57 +03:00
parent ebe04adc7a
commit a951996943
5 changed files with 18 additions and 1 deletions

1
.gitignore vendored
View File

@ -348,3 +348,4 @@ healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017 # Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/ MigrationBackup/
/src/skel/win

View File

@ -13,6 +13,7 @@
#include "Physical.h" #include "Physical.h"
#include "Plane.h" #include "Plane.h"
#include "PlayerPed.h" #include "PlayerPed.h"
#include "Pools.h"
#include "SampleManager.h" #include "SampleManager.h"
#include "Stats.h" #include "Stats.h"
#include "Vehicle.h" #include "Vehicle.h"
@ -94,6 +95,11 @@ enum eVehicleModel {
CAR159, CAR159,
}; };
void *cAudioScriptObject::operator new(size_t sz) { return CPools::GetAudioScriptObjectPool()->New(); }
void *cAudioScriptObject::operator new(size_t sz, int handle) { return CPools::GetAudioScriptObjectPool()->New(handle); }
void cAudioScriptObject::operator delete(void *p, size_t sz) { CPools::GetAudioScriptObjectPool()->Delete((cAudioScriptObject*)p); }
void cAudioScriptObject::operator delete(void *p, int handle) { CPools::GetAudioScriptObjectPool()->Delete((cAudioScriptObject*)p); }
cAudioManager &AudioManager = *(cAudioManager *)0x880FC0; cAudioManager &AudioManager = *(cAudioManager *)0x880FC0;
constexpr int totalAudioEntitiesSlots = 200; constexpr int totalAudioEntitiesSlots = 200;

View File

@ -178,6 +178,11 @@ struct cAudioScriptObject {
char gap_2[2]; char gap_2[2];
CVector m_vecPos; CVector m_vecPos;
int m_nAudioEntityId; int m_nAudioEntityId;
static void *operator new(size_t);
static void *operator new(size_t, int);
static void operator delete(void*, size_t);
static void operator delete(void*, int);
}; };
static_assert(sizeof(cAudioScriptObject) == 0x14, "cAudioScriptObject: error"); static_assert(sizeof(cAudioScriptObject) == 0x14, "cAudioScriptObject: error");

View File

@ -9,6 +9,7 @@ CBuildingPool *&CPools::ms_pBuildingPool = *(CBuildingPool**)0x8F2C04;
CTreadablePool *&CPools::ms_pTreadablePool = *(CTreadablePool**)0x8F2568; CTreadablePool *&CPools::ms_pTreadablePool = *(CTreadablePool**)0x8F2568;
CObjectPool *&CPools::ms_pObjectPool = *(CObjectPool**)0x880E28; CObjectPool *&CPools::ms_pObjectPool = *(CObjectPool**)0x880E28;
CDummyPool *&CPools::ms_pDummyPool = *(CDummyPool**)0x8F2C18; CDummyPool *&CPools::ms_pDummyPool = *(CDummyPool**)0x8F2C18;
CAudioScriptObjectPool *&CPools::ms_pAudioScriptObjectPool = *(CAudioScriptObjectPool**)0x8F1B6C;
void void
CPools::Initialise(void) CPools::Initialise(void)
@ -23,6 +24,7 @@ CPools::Initialise(void)
ms_pTreadablePool = new CTreadablePool(NUMTREADABLES); ms_pTreadablePool = new CTreadablePool(NUMTREADABLES);
ms_pObjectPool = new CObjectPool(NUMOBJECTS); ms_pObjectPool = new CObjectPool(NUMOBJECTS);
ms_pDummyPool = new CDummyPool(NUMDUMMIES); ms_pDummyPool = new CDummyPool(NUMDUMMIES);
ms_pAudioScriptObjectPool = new CAudioScriptObjectPool(NUMAUDIOSCRIPTOBJECTS);
} }
int32 CPools::GetPedRef(CPed *ped) { return ms_pPedPool->GetIndex(ped); } int32 CPools::GetPedRef(CPed *ped) { return ms_pPedPool->GetIndex(ped); }

View File

@ -8,6 +8,7 @@
#include "PlayerPed.h" #include "PlayerPed.h"
#include "Automobile.h" #include "Automobile.h"
#include "DummyPed.h" #include "DummyPed.h"
#include "AudioManager.h"
typedef CPool<CPtrNode> CCPtrNodePool; typedef CPool<CPtrNode> CCPtrNodePool;
typedef CPool<CEntryInfoNode> CEntryInfoNodePool; typedef CPool<CEntryInfoNode> CEntryInfoNodePool;
@ -17,6 +18,7 @@ typedef CPool<CBuilding> CBuildingPool;
typedef CPool<CTreadable> CTreadablePool; typedef CPool<CTreadable> CTreadablePool;
typedef CPool<CObject, CCutsceneHead> CObjectPool; typedef CPool<CObject, CCutsceneHead> CObjectPool;
typedef CPool<CDummy, CDummyPed> CDummyPool; typedef CPool<CDummy, CDummyPed> CDummyPool;
typedef CPool<cAudioScriptObject, cAudioScriptObject> CAudioScriptObjectPool;
class CPools class CPools
{ {
@ -28,7 +30,7 @@ class CPools
static CTreadablePool *&ms_pTreadablePool; static CTreadablePool *&ms_pTreadablePool;
static CObjectPool *&ms_pObjectPool; static CObjectPool *&ms_pObjectPool;
static CDummyPool *&ms_pDummyPool; static CDummyPool *&ms_pDummyPool;
// ms_pAudioScriptObjectPool static CAudioScriptObjectPool *&ms_pAudioScriptObjectPool;
public: public:
static CCPtrNodePool *GetPtrNodePool(void) { return ms_pPtrNodePool; } static CCPtrNodePool *GetPtrNodePool(void) { return ms_pPtrNodePool; }
static CEntryInfoNodePool *GetEntryInfoNodePool(void) { return ms_pEntryInfoNodePool; } static CEntryInfoNodePool *GetEntryInfoNodePool(void) { return ms_pEntryInfoNodePool; }
@ -38,6 +40,7 @@ public:
static CTreadablePool *GetTreadablePool(void) { return ms_pTreadablePool; } static CTreadablePool *GetTreadablePool(void) { return ms_pTreadablePool; }
static CObjectPool *GetObjectPool(void) { return ms_pObjectPool; } static CObjectPool *GetObjectPool(void) { return ms_pObjectPool; }
static CDummyPool *GetDummyPool(void) { return ms_pDummyPool; } static CDummyPool *GetDummyPool(void) { return ms_pDummyPool; }
static CAudioScriptObjectPool *GetAudioScriptObjectPool(void) { return ms_pAudioScriptObjectPool; }
static void Initialise(void); static void Initialise(void);
static int32 GetPedRef(CPed *ped); static int32 GetPedRef(CPed *ped);