diff options
Diffstat (limited to 'src/entities')
-rw-r--r-- | src/entities/Entity.cpp | 17 | ||||
-rw-r--r-- | src/entities/Entity.h | 3 |
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 ¢er, 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; } |