mirror of
https://github.com/halpz/re3.git
synced 2025-07-20 19:09:48 +00:00
cleaned up patching of virtual functions; started CAutomobile
This commit is contained in:
@ -109,10 +109,19 @@ CCutsceneHead::PlayAnimation(const char *animName)
|
||||
}
|
||||
}
|
||||
|
||||
class CCutsceneHead_ : public CCutsceneHead
|
||||
{
|
||||
public:
|
||||
void CreateRwObject_(void) { CCutsceneHead::CreateRwObject(); }
|
||||
void DeleteRwObject_(void) { CCutsceneHead::DeleteRwObject(); }
|
||||
void ProcessControl_(void) { CCutsceneHead::ProcessControl(); }
|
||||
void Render_(void) { CCutsceneHead::Render(); }
|
||||
};
|
||||
|
||||
STARTPATCHES
|
||||
InjectHook(0x4BA650, &CCutsceneHead::CreateRwObject_, PATCH_JUMP);
|
||||
InjectHook(0x4BA690, &CCutsceneHead::DeleteRwObject_, PATCH_JUMP);
|
||||
InjectHook(0x4BA760, &CCutsceneHead::ProcessControl_, PATCH_JUMP);
|
||||
InjectHook(0x4BA800, &CCutsceneHead::Render_, PATCH_JUMP);
|
||||
InjectHook(0x4BA650, &CCutsceneHead_::CreateRwObject_, PATCH_JUMP);
|
||||
InjectHook(0x4BA690, &CCutsceneHead_::DeleteRwObject_, PATCH_JUMP);
|
||||
InjectHook(0x4BA760, &CCutsceneHead_::ProcessControl_, PATCH_JUMP);
|
||||
InjectHook(0x4BA800, &CCutsceneHead_::Render_, PATCH_JUMP);
|
||||
InjectHook(0x4BA6A0, &CCutsceneHead::PlayAnimation, PATCH_JUMP);
|
||||
ENDPATCHES
|
||||
|
@ -15,10 +15,5 @@ public:
|
||||
void Render(void);
|
||||
|
||||
void PlayAnimation(const char *animName);
|
||||
|
||||
void CreateRwObject_(void) { CCutsceneHead::CreateRwObject(); }
|
||||
void DeleteRwObject_(void) { CCutsceneHead::DeleteRwObject(); }
|
||||
void ProcessControl_(void) { CCutsceneHead::ProcessControl(); }
|
||||
void Render_(void) { CCutsceneHead::Render(); }
|
||||
};
|
||||
static_assert(sizeof(CCutsceneHead) == 0x19C, "CCutsceneHead: error");
|
||||
|
@ -89,12 +89,24 @@ CCutsceneObject::RemoveLighting(bool reset)
|
||||
CRenderer::RemoveVehiclePedLights(this, reset);
|
||||
}
|
||||
|
||||
class CCutsceneObject_ : public CCutsceneObject
|
||||
{
|
||||
public:
|
||||
void dtor(void) { this->CCutsceneObject::~CCutsceneObject(); }
|
||||
void SetModelIndex_(uint32 id) { CCutsceneObject::SetModelIndex(id); }
|
||||
void ProcessControl_(void) { CCutsceneObject::ProcessControl(); }
|
||||
void PreRender_(void) { CCutsceneObject::PreRender(); }
|
||||
void Render_(void) { CCutsceneObject::Render(); }
|
||||
bool SetupLighting_(void) { return CCutsceneObject::SetupLighting(); }
|
||||
void RemoveLighting_(bool reset) { CCutsceneObject::RemoveLighting(reset); }
|
||||
};
|
||||
|
||||
STARTPATCHES
|
||||
InjectHook(0x4BA960, &CCutsceneObject::dtor, PATCH_JUMP);
|
||||
InjectHook(0x4BA980, &CCutsceneObject::SetModelIndex_, PATCH_JUMP);
|
||||
InjectHook(0x4BA9C0, &CCutsceneObject::ProcessControl_, PATCH_JUMP);
|
||||
InjectHook(0x4BAA40, &CCutsceneObject::PreRender_, PATCH_JUMP);
|
||||
InjectHook(0x4BAAA0, &CCutsceneObject::Render_, PATCH_JUMP);
|
||||
InjectHook(0x4A7E70, &CCutsceneObject::SetupLighting_, PATCH_JUMP);
|
||||
InjectHook(0x4A7F00, &CCutsceneObject::RemoveLighting_, PATCH_JUMP);
|
||||
InjectHook(0x4BA960, &CCutsceneObject_::dtor, PATCH_JUMP);
|
||||
InjectHook(0x4BA980, &CCutsceneObject_::SetModelIndex_, PATCH_JUMP);
|
||||
InjectHook(0x4BA9C0, &CCutsceneObject_::ProcessControl_, PATCH_JUMP);
|
||||
InjectHook(0x4BAA40, &CCutsceneObject_::PreRender_, PATCH_JUMP);
|
||||
InjectHook(0x4BAAA0, &CCutsceneObject_::Render_, PATCH_JUMP);
|
||||
InjectHook(0x4A7E70, &CCutsceneObject_::SetupLighting_, PATCH_JUMP);
|
||||
InjectHook(0x4A7F00, &CCutsceneObject_::RemoveLighting_, PATCH_JUMP);
|
||||
ENDPATCHES
|
||||
|
@ -7,19 +7,11 @@ class CCutsceneObject : public CObject
|
||||
public:
|
||||
CCutsceneObject(void);
|
||||
|
||||
virtual void SetModelIndex(uint32 id);
|
||||
virtual void ProcessControl(void);
|
||||
virtual void PreRender(void);
|
||||
virtual void Render(void);
|
||||
virtual bool SetupLighting(void);
|
||||
virtual void RemoveLighting(bool reset);
|
||||
|
||||
void dtor(void) { this->CCutsceneObject::~CCutsceneObject(); }
|
||||
void SetModelIndex_(uint32 id) { CCutsceneObject::SetModelIndex(id); }
|
||||
void ProcessControl_(void) { CCutsceneObject::ProcessControl(); }
|
||||
void PreRender_(void) { CCutsceneObject::PreRender(); }
|
||||
void Render_(void) { CCutsceneObject::Render(); }
|
||||
bool SetupLighting_(void) { return CCutsceneObject::SetupLighting(); }
|
||||
void RemoveLighting_(bool reset) { CCutsceneObject::RemoveLighting(reset); }
|
||||
void SetModelIndex(uint32 id);
|
||||
void ProcessControl(void);
|
||||
void PreRender(void);
|
||||
void Render(void);
|
||||
bool SetupLighting(void);
|
||||
void RemoveLighting(bool reset);
|
||||
};
|
||||
static_assert(sizeof(CCutsceneObject) == 0x198, "CCutsceneObject: error");
|
||||
|
@ -12,6 +12,12 @@ CDummyObject::CDummyObject(CObject *obj)
|
||||
m_level = obj->m_level;
|
||||
}
|
||||
|
||||
class CDummyObject_ : public CDummyObject
|
||||
{
|
||||
public:
|
||||
void dtor(void) { CDummyObject::~CDummyObject(); }
|
||||
};
|
||||
|
||||
STARTPATCHES
|
||||
InjectHook(0x4BAB70, &CDummyObject::dtor, PATCH_JUMP);
|
||||
ENDPATCHES
|
||||
InjectHook(0x4BAB70, &CDummyObject_::dtor, PATCH_JUMP);
|
||||
ENDPATCHES
|
||||
|
@ -9,6 +9,5 @@ class CDummyObject : public CDummy
|
||||
public:
|
||||
CDummyObject(void) {}
|
||||
CDummyObject(CObject *obj);
|
||||
void dtor(void) { this->CDummyObject::~CDummyObject(); }
|
||||
};
|
||||
static_assert(sizeof(CDummyObject) == 0x68, "CDummyObject: error");
|
||||
|
@ -87,7 +87,14 @@ CObject::RemoveLighting(bool reset)
|
||||
|
||||
WRAPPER void CObject::DeleteAllTempObjectInArea(CVector, float) { EAXJMP(0x4BBED0); }
|
||||
|
||||
class CObject_ : public CObject
|
||||
{
|
||||
public:
|
||||
void dtor(void) { this->CObject::~CObject(); }
|
||||
void Render_(void) { CObject::Render(); }
|
||||
};
|
||||
|
||||
STARTPATCHES
|
||||
InjectHook(0x4BAE00, &CObject::dtor, PATCH_JUMP);
|
||||
InjectHook(0x4BB1E0, &CObject::Render_, PATCH_JUMP);
|
||||
InjectHook(0x4BAE00, &CObject_::dtor, PATCH_JUMP);
|
||||
InjectHook(0x4BB1E0, &CObject_::Render_, PATCH_JUMP);
|
||||
ENDPATCHES
|
||||
|
@ -74,8 +74,5 @@ public:
|
||||
void ObjectDamage(float amount);
|
||||
|
||||
static void DeleteAllTempObjectInArea(CVector, float);
|
||||
|
||||
void dtor(void) { this->CObject::~CObject(); }
|
||||
void Render_(void) { CObject::Render(); }
|
||||
};
|
||||
static_assert(sizeof(CObject) == 0x198, "CObject: error");
|
||||
|
@ -18,6 +18,12 @@ void CParticleObject::UpdateAll()
|
||||
((void (__cdecl *)())0x4BCA30)();
|
||||
}
|
||||
|
||||
class CParticleObject_ : public CParticleObject
|
||||
{
|
||||
public:
|
||||
void dtor() { CParticleObject::~CParticleObject(); }
|
||||
};
|
||||
|
||||
STARTPATCHES
|
||||
InjectHook(0x4BC420, &CParticleObject::dtor, PATCH_JUMP);
|
||||
ENDPATCHES
|
||||
InjectHook(0x4BC420, &CParticleObject_::dtor, PATCH_JUMP);
|
||||
ENDPATCHES
|
||||
|
@ -34,6 +34,4 @@ public:
|
||||
static void AddObject(uint16 type, const CVector &pos, const CVector &dir, float size, bool remove);
|
||||
static void Initialise();
|
||||
static void UpdateAll();
|
||||
|
||||
void dtor() { this->CParticleObject::~CParticleObject(); }
|
||||
};
|
||||
|
@ -2,6 +2,12 @@
|
||||
#include "patcher.h"
|
||||
#include "Projectile.h"
|
||||
|
||||
class CProjectile_ : public CProjectile
|
||||
{
|
||||
public:
|
||||
void dtor(void) { CProjectile::~CProjectile(); }
|
||||
};
|
||||
|
||||
STARTPATCHES
|
||||
InjectHook(0x4BFED0, &CProjectile::dtor, PATCH_JUMP);
|
||||
ENDPATCHES
|
||||
InjectHook(0x4BFED0, &CProjectile_::dtor, PATCH_JUMP);
|
||||
ENDPATCHES
|
||||
|
@ -7,5 +7,4 @@
|
||||
class CProjectile : public CObject
|
||||
{
|
||||
public:
|
||||
void dtor(void) { this->CProjectile::~CProjectile(); }
|
||||
};
|
||||
|
Reference in New Issue
Block a user