summaryrefslogtreecommitdiffstats
path: root/src/entities
diff options
context:
space:
mode:
Diffstat (limited to 'src/entities')
-rw-r--r--src/entities/Building.cpp1
-rw-r--r--src/entities/Building.h2
-rw-r--r--src/entities/Entity.cpp5
-rw-r--r--src/entities/Entity.h1
4 files changed, 7 insertions, 2 deletions
diff --git a/src/entities/Building.cpp b/src/entities/Building.cpp
index 9e56b3a2..d69a65fe 100644
--- a/src/entities/Building.cpp
+++ b/src/entities/Building.cpp
@@ -22,5 +22,6 @@ CBuilding::ReplaceWithNewModel(int32 id)
}
STARTPATCHES
+ InjectHook(0x4057D0, &CBuilding::ctor, PATCH_JUMP);
InjectHook(0x405850, &CBuilding::ReplaceWithNewModel, PATCH_JUMP);
ENDPATCHES
diff --git a/src/entities/Building.h b/src/entities/Building.h
index 7b837f46..b1f96bae 100644
--- a/src/entities/Building.h
+++ b/src/entities/Building.h
@@ -15,5 +15,7 @@ public:
void ReplaceWithNewModel(int32 id);
virtual bool GetIsATreadable(void) { return false; }
+
+ CBuilding *ctor(void) { return ::new (this) CBuilding(); }
};
static_assert(sizeof(CBuilding) == 0x64, "CBuilding: error");
diff --git a/src/entities/Entity.cpp b/src/entities/Entity.cpp
index d2b2577d..294518c8 100644
--- a/src/entities/Entity.cpp
+++ b/src/entities/Entity.cpp
@@ -339,9 +339,9 @@ CEntity::GetBoundRect(void)
return rect;
}
-void
+WRAPPER void
CEntity::PreRender(void)
-{
+{ EAXJMP(0x474350);
}
void
@@ -448,6 +448,7 @@ CEntity::PruneReferences(void)
}
STARTPATCHES
+ InjectHook(0x473C30, &CEntity::ctor, PATCH_JUMP);
InjectHook(0x4742C0, (void (CEntity::*)(CVector&))&CEntity::GetBoundCentre, PATCH_JUMP);
InjectHook(0x474310, &CEntity::GetBoundRadius, PATCH_JUMP);
InjectHook(0x474C10, &CEntity::GetIsTouching, PATCH_JUMP);
diff --git a/src/entities/Entity.h b/src/entities/Entity.h
index 0ce47428..8816e206 100644
--- a/src/entities/Entity.h
+++ b/src/entities/Entity.h
@@ -155,6 +155,7 @@ public:
// to make patching virtual functions possible
+ CEntity *ctor(void) { return ::new (this) CEntity(); }
void Add_(void) { CEntity::Add(); }
void Remove_(void) { CEntity::Remove(); }
void CreateRwObject_(void) { CEntity::CreateRwObject(); }