diff --git a/src/core/Game.cpp b/src/core/Game.cpp index 3053c761..0e618c84 100644 --- a/src/core/Game.cpp +++ b/src/core/Game.cpp @@ -387,7 +387,9 @@ bool CGame::Initialise(const char* datFile) LoadingScreen("Loading the Game", "Position dynamic objects", nil); CWorld::RepositionCertainDynamicObjects(); LoadingScreen("Loading the Game", "Initialise vehicle paths", nil); +#ifdef GTA_ZONECULL CCullZones::ResolveVisibilities(); +#endif CTrain::InitTrains(); CPlane::InitPlanes(); CCredits::Init(); @@ -504,7 +506,9 @@ void CGame::ReInitGameObjectVariables(void) CSpecialFX::Init(); CWaterCannons::Init(); CParticle::ReloadConfig(); +#ifdef GTA_ZONECULL CCullZones::ResolveVisibilities(); +#endif if ( !FrontEndMenuManager.m_bWantToLoad ) { @@ -537,7 +541,9 @@ void CGame::ReloadIPLs(void) CCranes::InitCranes(); CGarages::Init(); CWorld::RepositionCertainDynamicObjects(); +#ifdef GTA_ZONECULL CCullZones::ResolveVisibilities(); +#endif CRenderer::SortBIGBuildings(); CTimer::Update(); } diff --git a/src/core/ZoneCull.cpp b/src/core/ZoneCull.cpp index 5ce18a4d..1e9c00f0 100644 --- a/src/core/ZoneCull.cpp +++ b/src/core/ZoneCull.cpp @@ -34,20 +34,23 @@ CCullZones::Init(void) int i; NumAttributeZones = 0; - NumCullZones = 0; CurrentWantedLevelDrop_Player = 0; CurrentFlags_Camera = 0; CurrentFlags_Player = 0; + bCurrentSubwayIsInvisible = false; +#ifdef GTA_ZONECULL + NumCullZones = 0; OldCullZone = -1; EntityIndicesUsed = 0; - bCurrentSubwayIsInvisible = false; for(i = 0; i < NUMBUILDINGS; i++) aPointersToBigBuildingsForBuildings[i] = -1; for(i = 0; i < NUMTREADABLES; i++) aPointersToBigBuildingsForTreadables[i] = -1; +#endif } +#ifdef GTA_ZONECULL bool CCullZone::TestLine(CVector vec1, CVector vec2) { CColPoint colPoint; @@ -213,6 +216,7 @@ CCullZones::DoVisibilityTestCullZone(int zoneId, bool doIt) } } } +#endif void CCullZones::Update(void) @@ -225,8 +229,10 @@ CCullZones::Update(void) switch(CTimer::GetFrameCounter() & 7){ case 0: case 4: +#ifdef GTA_ZONECULL /* Update Cull zone */ ForceCullZoneCoors(TheCamera.GetGameCamPosition()); +#endif break; case 2: @@ -250,6 +256,7 @@ CCullZones::Update(void) void CCullZones::ForceCullZoneCoors(CVector coors) { +#ifdef GTA_ZONECULL int32 z; z = FindCullZoneForCoors(coors); if(z != OldCullZone){ @@ -259,8 +266,10 @@ CCullZones::ForceCullZoneCoors(CVector coors) aZones[z].DoStuffEnteringZone(); OldCullZone = z; } +#endif } +#ifdef GTA_ZONECULL int32 CCullZones::FindCullZoneForCoors(CVector coors) { @@ -273,6 +282,7 @@ CCullZones::FindCullZoneForCoors(CVector coors) return i; return -1; } +#endif int32 CCullZones::FindAttributesForCoors(CVector coors, int32 *wantedLevel) @@ -350,6 +360,7 @@ CCullZones::AddCullZone(CVector const &position, CAttributeZone *attrib; CVector v; +#ifdef GTA_ZONECULL if((flag & ATTRZONE_NOTCULLZONE) == 0){ cull = &aZones[NumCullZones++]; v = position; @@ -372,6 +383,7 @@ CCullZones::AddCullZone(CVector const &position, cull->m_groupIndexCount[2] = 0; cull->m_indexStart = 0; } +#endif if(flag & ~ATTRZONE_NOTCULLZONE){ attrib = &aAttributeZones[NumAttributeZones++]; attrib->minx = minx; @@ -386,7 +398,7 @@ CCullZones::AddCullZone(CVector const &position, } - +#ifdef GTA_ZONECULL void CCullZone::DoStuffLeavingZone(void) { @@ -562,3 +574,4 @@ CCullZones::DoWeHaveMoreThanXOccurencesOfSet(int32 count, uint16 *set) } return false; } +#endif \ No newline at end of file diff --git a/src/core/config.h b/src/core/config.h index 1fc78eb8..f4f7205b 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -157,6 +157,7 @@ enum Config { #ifndef MIAMI #define GTA_TRAIN // This game has trains #define GTA_BRIDGE // This game has the bridge +#define GTA_ZONECULL // This game culls by zones #endif // This enables things from the PS2 version on PC