summaryrefslogtreecommitdiffstats
path: root/src/entities/Entity.cpp
diff options
context:
space:
mode:
authoraap <aap@papnet.eu>2020-05-05 13:02:42 +0200
committeraap <aap@papnet.eu>2020-05-05 13:02:42 +0200
commitb44df26d3ea5fcdaf6d954016303f358d2c64b79 (patch)
tree2921c2c0e2883117f4ce9cec73865c1701f32cec /src/entities/Entity.cpp
parentSetPosition, final part (diff)
downloadre3-b44df26d3ea5fcdaf6d954016303f358d2c64b79.tar
re3-b44df26d3ea5fcdaf6d954016303f358d2c64b79.tar.gz
re3-b44df26d3ea5fcdaf6d954016303f358d2c64b79.tar.bz2
re3-b44df26d3ea5fcdaf6d954016303f358d2c64b79.tar.lz
re3-b44df26d3ea5fcdaf6d954016303f358d2c64b79.tar.xz
re3-b44df26d3ea5fcdaf6d954016303f358d2c64b79.tar.zst
re3-b44df26d3ea5fcdaf6d954016303f358d2c64b79.zip
Diffstat (limited to 'src/entities/Entity.cpp')
-rw-r--r--src/entities/Entity.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/entities/Entity.cpp b/src/entities/Entity.cpp
index 2a6211d6..8014a47a 100644
--- a/src/entities/Entity.cpp
+++ b/src/entities/Entity.cpp
@@ -27,6 +27,7 @@
#include "Zones.h"
#include "Bones.h"
#include "Debug.h"
+#include "Renderer.h"
int gBuildings;
@@ -51,6 +52,9 @@ CEntity::CEntity(void)
bRenderScorched = false;
bHasBlip = false;
bIsBIGBuilding = false;
+#ifdef MIAMI
+ bStreamBIGBuilding = false;
+#endif
bRenderDamaged = false;
bBulletProof = false;
@@ -59,8 +63,10 @@ CEntity::CEntity(void)
bMeleeProof = false;
bOnlyDamagedByPlayer = false;
bStreamingDontDelete = false;
+#ifdef GTA_ZONECULL
bZoneCulled = false;
bZoneCulled2 = false;
+#endif
bRemoveFromWorld = false;
bHasHitWall = false;
@@ -147,6 +153,17 @@ CEntity::GetIsOnScreenComplex(void)
return TheCamera.IsBoxVisible(boundBox, &TheCamera.GetCameraMatrix());
}
+bool
+CEntity::GetIsOnScreenAndNotCulled(void)
+{
+#ifdef GTA_ZONECULL
+ return GetIsOnScreen() && CRenderer::IsEntityCullZoneVisible(this);
+#else
+ return GetIsOnScreen();
+#endif
+}
+
+
void
CEntity::Add(void)
{
@@ -331,6 +348,11 @@ CEntity::SetupBigBuilding(void)
bStreamingDontDelete = true;
bUsesCollision = false;
m_level = CTheZones::GetLevelFromPosition(GetPosition());
+#ifdef MIAMI
+ if(mi->m_lodDistances[0] <= 2000.0f)
+ bStreamBIGBuilding = true;
+ // TODO: the stuff down there isn't right yet
+#endif
if(m_level == LEVEL_NONE){
if(mi->GetTxdSlot() != CTxdStore::FindTxdSlot("generic")){
mi->SetTexDictionary("generic");
@@ -953,8 +975,10 @@ CEntity::SaveEntityFlags(uint8*& buf)
if (bMeleeProof) tmp |= BIT(27);
if (bOnlyDamagedByPlayer) tmp |= BIT(28);
if (bStreamingDontDelete) tmp |= BIT(29);
+#ifdef GTA_ZONECULL
if (bZoneCulled) tmp |= BIT(30);
if (bZoneCulled2) tmp |= BIT(31);
+#endif
WriteSaveBuf<uint32>(buf, tmp);
@@ -1006,8 +1030,10 @@ CEntity::LoadEntityFlags(uint8*& buf)
bMeleeProof = !!(tmp & BIT(27));
bOnlyDamagedByPlayer = !!(tmp & BIT(28));
bStreamingDontDelete = !!(tmp & BIT(29));
+#ifdef GTA_ZONECULL
bZoneCulled = !!(tmp & BIT(30));
bZoneCulled2 = !!(tmp & BIT(31));
+#endif
tmp = ReadSaveBuf<uint32>(buf);