summaryrefslogtreecommitdiffstats
path: root/src/entities
diff options
context:
space:
mode:
authorSergeanur <s.anureev@yandex.ua>2020-05-05 17:34:46 +0200
committerSergeanur <s.anureev@yandex.ua>2020-05-05 17:34:46 +0200
commit22e8b0e419ad811c977c67ea2f2c06d53ea3be5e (patch)
tree655dc6cff470ac28d19678c392a0aebb49cea937 /src/entities
parentMerge branch 'master' into miami (diff)
downloadre3-22e8b0e419ad811c977c67ea2f2c06d53ea3be5e.tar
re3-22e8b0e419ad811c977c67ea2f2c06d53ea3be5e.tar.gz
re3-22e8b0e419ad811c977c67ea2f2c06d53ea3be5e.tar.bz2
re3-22e8b0e419ad811c977c67ea2f2c06d53ea3be5e.tar.lz
re3-22e8b0e419ad811c977c67ea2f2c06d53ea3be5e.tar.xz
re3-22e8b0e419ad811c977c67ea2f2c06d53ea3be5e.tar.zst
re3-22e8b0e419ad811c977c67ea2f2c06d53ea3be5e.zip
Diffstat (limited to 'src/entities')
-rw-r--r--src/entities/Entity.cpp17
-rw-r--r--src/entities/Entity.h3
2 files changed, 20 insertions, 0 deletions
diff --git a/src/entities/Entity.cpp b/src/entities/Entity.cpp
index 1f85015e..955f32a8 100644
--- a/src/entities/Entity.cpp
+++ b/src/entities/Entity.cpp
@@ -63,8 +63,10 @@ CEntity::CEntity(void)
bMeleeProof = false;
bOnlyDamagedByPlayer = false;
bStreamingDontDelete = false;
+#ifdef GTA_ZONECULL
bZoneCulled = false;
bZoneCulled2 = false;
+#endif
bRemoveFromWorld = false;
bHasHitWall = false;
@@ -151,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)
{
@@ -962,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);
@@ -1015,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);
diff --git a/src/entities/Entity.h b/src/entities/Entity.h
index ffafa705..49c6932c 100644
--- a/src/entities/Entity.h
+++ b/src/entities/Entity.h
@@ -71,8 +71,10 @@ public:
uint32 bMeleeProof : 1;
uint32 bOnlyDamagedByPlayer : 1;
uint32 bStreamingDontDelete : 1; // Dont let the streaming remove this
+#ifdef GTA_ZONECULL
uint32 bZoneCulled : 1;
uint32 bZoneCulled2 : 1; // only treadables+10m
+#endif
// flagsD
uint32 bRemoveFromWorld : 1; // remove this entity next time it should be processed
@@ -154,6 +156,7 @@ public:
bool GetIsTouching(CVector const &center, float r);
bool GetIsOnScreen(void);
bool GetIsOnScreenComplex(void);
+ bool GetIsOnScreenAndNotCulled(void);
bool IsVisible(void) { return m_rwObject && bIsVisible && GetIsOnScreen(); }
bool IsVisibleComplex(void) { return m_rwObject && bIsVisible && GetIsOnScreenComplex(); }
int16 GetModelIndex(void) const { return m_modelIndex; }