diff --git a/README.md b/README.md
index 2affcc96..cffdbd1d 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# re3
-[![Build status](https://ci.appveyor.com/api/projects/status/hyiwgegks122h8jg?svg=true)](https://ci.appveyor.com/project/aap/re3/branch/master)
+[![Build status](https://ci.appveyor.com/api/projects/status/hyiwgegks122h8jg/branch/master?svg=true)](https://ci.appveyor.com/project/aap/re3/branch/master)
| Platform | Debug | Release |
|------------------|-------------|-------------|
diff --git a/premake5.lua b/premake5.lua
index cfba8e01..f8e3af81 100644
--- a/premake5.lua
+++ b/premake5.lua
@@ -103,6 +103,10 @@ project "librw"
filter {}
end
+local function addSrcFiles( prefix )
+ return prefix .. "/*cpp", prefix .. "/*.h", prefix .. "/*.c", prefix .. "/*.ico", prefix .. "/*.aps", prefix .. "/*.rc"
+end
+
project "re3"
kind "WindowedApp"
targetname "re3"
@@ -112,27 +116,29 @@ project "re3"
linkoptions "/SAFESEH:NO"
- files { "src/*.*" }
- files { "src/animation/*.*" }
- files { "src/audio/*.*" }
- files { "src/control/*.*" }
- files { "src/core/*.*" }
- files { "src/entities/*.*" }
- files { "src/math/*.*" }
- files { "src/modelinfo/*.*" }
- files { "src/objects/*.*" }
- files { "src/peds/*.*" }
- files { "src/render/*.*" }
- files { "src/rw/*.*" }
- files { "src/save/*.*" }
- files { "src/skel/*.*" }
- files { "src/skel/win/*.*" }
- files { "src/skel/glfw/*.*" }
- files { "src/text/*.*" }
- files { "src/vehicles/*.*" }
- files { "src/weapons/*.*" }
- files { "src/extras/*.*" }
- files { "eax/*.*" }
+ files { addSrcFiles("src") }
+ files { addSrcFiles("src/animation") }
+ files { addSrcFiles("src/audio") }
+ --files { addSrcFiles("src/audio/miles") }
+ --files { addSrcFiles("src/audio/openal") }
+ files { addSrcFiles("src/control") }
+ files { addSrcFiles("src/core") }
+ files { addSrcFiles("src/entities") }
+ files { addSrcFiles("src/math") }
+ files { addSrcFiles("src/modelinfo") }
+ files { addSrcFiles("src/objects") }
+ files { addSrcFiles("src/peds") }
+ files { addSrcFiles("src/render") }
+ files { addSrcFiles("src/rw") }
+ files { addSrcFiles("src/save") }
+ files { addSrcFiles("src/skel") }
+ files { addSrcFiles("src/skel/win") }
+ files { addSrcFiles("src/skel/glfw") }
+ files { addSrcFiles("src/text") }
+ files { addSrcFiles("src/vehicles") }
+ files { addSrcFiles("src/weapons") }
+ files { addSrcFiles("src/extras") }
+ files { addSrcFiles("eax") }
includedirs { "src" }
includedirs { "src/animation" }
@@ -173,7 +179,7 @@ project "re3"
filter "platforms:*librw*"
defines { "LIBRW" }
- files { "src/fakerw/*.*" }
+ files { addSrcFiles("src/fakerw") }
includedirs { "src/fakerw" }
includedirs { Librw }
if(_OPTIONS["with-librw"]) then
diff --git a/src/control/Bridge.cpp b/src/control/Bridge.cpp
index 1e63cf30..e873062b 100644
--- a/src/control/Bridge.cpp
+++ b/src/control/Bridge.cpp
@@ -23,7 +23,6 @@ uint32 CBridge::TimeOfBridgeBecomingOperational;
void CBridge::Init()
{
-#ifdef GTA_BRIDGE
FindBridgeEntities();
OldLift = -1.0f;
if (pLiftPart && pWeight)
@@ -36,12 +35,10 @@ void CBridge::Init()
ThePaths.SetLinksBridgeLights(-330.0, -230.0, -700.0, -588.0, true);
}
-#endif
}
void CBridge::Update()
{
-#ifdef GTA_BRIDGE
if (!pLiftPart || !pWeight)
return;
@@ -116,21 +113,15 @@ void CBridge::Update()
ThePaths.SetLinksBridgeLights(-330.0, -230.0, -700.0, -588.0, true);
else if (State == STATE_LIFT_PART_IS_DOWN && OldState == STATE_LIFT_PART_MOVING_DOWN)
ThePaths.SetLinksBridgeLights(-330.0, -230.0, -700.0, -588.0, false);
-#endif
}
bool CBridge::ShouldLightsBeFlashing()
{
-#ifdef GTA_BRIDGE
return State != STATE_LIFT_PART_IS_DOWN;
-#else
- return false;
-#endif
}
void CBridge::FindBridgeEntities()
{
-#ifdef GTA_BRIDGE
pWeight = nil;
pLiftRoad = nil;
pLiftPart = nil;
@@ -147,17 +138,12 @@ void CBridge::FindBridgeEntities()
pWeight = entry;
}
}
-#endif
}
bool CBridge::ThisIsABridgeObjectMovingUp(int index)
{
-#ifdef GTA_BRIDGE
if (index != MI_BRIDGEROADSEGMENT && index != MI_BRIDGELIFT)
return false;
return State == STATE_LIFT_PART_ABOUT_TO_MOVE_UP || State == STATE_LIFT_PART_MOVING_UP;
-#else
- return false;
-#endif
}
diff --git a/src/control/CarCtrl.cpp b/src/control/CarCtrl.cpp
index db6139b9..9b2bd4f0 100644
--- a/src/control/CarCtrl.cpp
+++ b/src/control/CarCtrl.cpp
@@ -696,7 +696,7 @@ CCarCtrl::PossiblyRemoveVehicle(CVehicle* pVehicle)
if (pVehicle->bExtendedRange)
threshold *= 1.5f;
if (distanceToPlayer > threshold && !CGarages::IsPointWithinHideOutGarage(pVehicle->GetPosition())){
- if (pVehicle->GetIsOnScreenAndNotCulled()){
+ if (pVehicle->GetIsOnScreen() && CRenderer::IsEntityCullZoneVisible(pVehicle)) {
pVehicle->bFadeOut = true;
}else{
CWorld::Remove(pVehicle);
@@ -722,7 +722,7 @@ CCarCtrl::PossiblyRemoveVehicle(CVehicle* pVehicle)
if (pVehicle->GetStatus() != STATUS_WRECKED || pVehicle->m_nTimeOfDeath == 0)
return;
if (CTimer::GetTimeInMilliseconds() > pVehicle->m_nTimeOfDeath + 60000 &&
- !pVehicle->GetIsOnScreenAndNotCulled()){
+ !(pVehicle->GetIsOnScreen() && CRenderer::IsEntityCullZoneVisible(pVehicle)) ){
if ((pVehicle->GetPosition() - vecPlayerPos).MagnitudeSqr() > SQR(7.5f)){
if (!CGarages::IsPointWithinHideOutGarage(pVehicle->GetPosition())){
CWorld::Remove(pVehicle);
@@ -2741,11 +2741,7 @@ bool CCarCtrl::ThisRoadObjectCouldMove(int16 mi)
bool CCarCtrl::MapCouldMoveInThisArea(float x, float y)
{
-#ifdef GTA_BRIDGE // actually they forgot that in VC...
// bridge moves up and down
return x > -342.0f && x < -219.0f &&
y > -677.0f && y < -580.0f;
-#else
- return false;
-#endif
}
diff --git a/src/control/PathFind.cpp b/src/control/PathFind.cpp
index c278cf35..ee15b82f 100644
--- a/src/control/PathFind.cpp
+++ b/src/control/PathFind.cpp
@@ -975,7 +975,6 @@ CPathFind::RemoveBadStartNode(CVector pos, CPathNode **nodes, int16 *n)
}
}
-#ifdef GTA_BRIDGE
void
CPathFind::SetLinksBridgeLights(float x1, float x2, float y1, float y2, bool enable)
{
@@ -987,7 +986,6 @@ CPathFind::SetLinksBridgeLights(float x1, float x2, float y1, float y2, bool ena
m_carPathLinks[i].bBridgeLights = enable;
}
}
-#endif
void
CPathFind::SwitchOffNodeAndNeighbours(int32 nodeId, bool disable)
diff --git a/src/control/TrafficLights.cpp b/src/control/TrafficLights.cpp
index f2dd6814..b2f0900e 100644
--- a/src/control/TrafficLights.cpp
+++ b/src/control/TrafficLights.cpp
@@ -273,12 +273,8 @@ CTrafficLights::ShouldCarStopForLight(CVehicle *vehicle, bool alwaysStop)
bool
CTrafficLights::ShouldCarStopForBridge(CVehicle *vehicle)
{
-#ifdef GTA_BRIDGE
return ThePaths.m_carPathLinks[vehicle->AutoPilot.m_nNextPathNodeInfo].bBridgeLights &&
!ThePaths.m_carPathLinks[vehicle->AutoPilot.m_nCurrentPathNodeInfo].bBridgeLights;
-#else
- return false;
-#endif
}
int
diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp
index 3f4684e7..9b178f35 100644
--- a/src/core/Camera.cpp
+++ b/src/core/Camera.cpp
@@ -633,11 +633,7 @@ CCamera::CamControl(void)
m_bInitialNodeFound = false;
m_bInitialNoNodeStaticsSet = false;
}
-#ifdef GTA_TRAIN
Process_Train_Camera_Control();
-#else
- assert(0 && "this can't happen");
-#endif
}else{
if(((CVehicle*)pTargetEntity)->IsBoat())
boatTarget = true;
@@ -2711,7 +2707,6 @@ CCamera::DontProcessObbeCinemaCamera(void)
bDidWeProcessAnyCinemaCam = false;
}
-#ifdef GTA_TRAIN
void
CCamera::LoadTrainCamNodes(char const *name)
{
@@ -2889,7 +2884,6 @@ CCamera::Process_Train_Camera_Control(void)
}
}
}
-#endif
void
diff --git a/src/core/ColStore.cpp b/src/core/ColStore.cpp
deleted file mode 100644
index 0c3356c5..00000000
--- a/src/core/ColStore.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-#include "common.h"
-#ifdef MIAMI
-
-#include "templates.h"
-#include "General.h"
-#include "ModelInfo.h"
-#include "Streaming.h"
-#include "FileLoader.h"
-#include "Script.h"
-#include "Timer.h"
-#include "Camera.h"
-#include "Frontend.h"
-#include "ColStore.h"
-
-CPool *CColStore::ms_pColPool;
-
-void
-CColStore::Initialise(void)
-{
- if(ms_pColPool == nil)
- ms_pColPool = new CPool(COLSTORESIZE, "CollisionFiles");
- AddColSlot("generic"); // slot 0. not streamed
-}
-
-void
-CColStore::Shutdown(void)
-{
- int i;
- for(i = 0; i < COLSTORESIZE; i++)
- RemoveColSlot(i);
- if(ms_pColPool)
- delete ms_pColPool;
- ms_pColPool = nil;
-}
-
-int
-CColStore::AddColSlot(const char *name)
-{
- ColDef *def = ms_pColPool->New();
- assert(def);
- def->isLoaded = false;
- def->a = 0;
- def->bounds.left = 1000000.0f;
- def->bounds.top = 1000000.0f;
- def->bounds.right = -1000000.0f;
- def->bounds.bottom = -1000000.0f;
- def->minIndex = INT16_MAX;
- def->maxIndex = INT16_MIN;
- strcpy(def->name, name);
- return ms_pColPool->GetJustIndex(def);
-}
-
-void
-CColStore::RemoveColSlot(int slot)
-{
- if(GetSlot(slot)){
- if(GetSlot(slot)->isLoaded)
- RemoveCol(slot);
- ms_pColPool->Delete(GetSlot(slot));
- }
-}
-
-int
-CColStore::FindColSlot(const char *name)
-{
- ColDef *def;
- int size = ms_pColPool->GetSize();
- for(int i = 0; i < size; i++){
- def = GetSlot(i);
- if(def && !CGeneral::faststricmp(def->name, name))
- return i;
- }
- return -1;
-}
-
-char*
-CColStore::GetColName(int32 slot)
-{
- return GetSlot(slot)->name;
-}
-
-CRect&
-CColStore::GetBoundingBox(int32 slot)
-{
- return GetSlot(slot)->bounds;
-}
-
-void
-CColStore::IncludeModelIndex(int32 slot, int32 modelIndex)
-{
- ColDef *def = GetSlot(slot);
- if(modelIndex < def->minIndex)
- def->minIndex = modelIndex;
- if(modelIndex > def->maxIndex)
- def->maxIndex = modelIndex;
-}
-
-bool
-CColStore::LoadCol(int32 slot, uint8 *buffer, int32 bufsize)
-{
- bool success;
- ColDef *def = GetSlot(slot);
- if(def->minIndex > def->maxIndex)
- success = CFileLoader::LoadCollisionFileFirstTime(buffer, bufsize, slot);
- else
- success = CFileLoader::LoadCollisionFile(buffer, bufsize, slot);
- if(success)
- def->isLoaded = true;
- else
- debug("Failed to load Collision\n");
- return success;
-}
-
-void
-CColStore::RemoveCol(int32 slot)
-{
- int id;
- GetSlot(slot)->isLoaded = false;
- for(id = 0; id < MODELINFOSIZE; id++){
- CBaseModelInfo *mi = CModelInfo::GetModelInfo(id);
- if(mi){
- CColModel *col = mi->GetColModel();
- if(col && col->level == slot)
- col->RemoveCollisionVolumes();
- }
- }
-}
-
-void
-CColStore::LoadAllCollision(void)
-{
- int i;
- for(i = 1; i < COLSTORESIZE; i++)
- if(GetSlot(i))
- CStreaming::RequestCol(i, 0);
- CStreaming::LoadAllRequestedModels(false);
-}
-
-void
-CColStore::RemoveAllCollision(void)
-{
- int i;
- for(i = 1; i < COLSTORESIZE; i++)
- if(GetSlot(i))
- if(CStreaming::CanRemoveCol(i))
- CStreaming::RemoveCol(i);
-}
-
-static bool bLoadAtSecondPosition;
-static CVector2D secondPosition;
-
-void
-CColStore::AddCollisionNeededAtPosn(const CVector2D &pos)
-{
- bLoadAtSecondPosition = true;
- secondPosition = pos;
-}
-
-void
-CColStore::LoadCollision(const CVector2D &pos)
-{
- int i;
-
- if(CStreaming::ms_disableStreaming)
- return;
-
- for(i = 1; i < COLSTORESIZE; i++){
- if(GetSlot(i) == nil)
- continue;
-
- bool wantThisOne = false;
-
- if(GetBoundingBox(i).IsPointInside(pos) ||
- bLoadAtSecondPosition && GetBoundingBox(i).IsPointInside(secondPosition, -119.0f) ||
- CGeneral::faststrcmp(GetColName(i), "yacht") == 0){
- wantThisOne = true;
- }else{
- // TODO: check mission cleanup list
- }
-
- if(wantThisOne)
- CStreaming::RequestCol(i, STREAMFLAGS_PRIORITY);
- else
- CStreaming::RemoveCol(i);
- }
- bLoadAtSecondPosition = false;
-}
-
-void
-CColStore::RequestCollision(const CVector2D &pos)
-{
- int i;
-
- for(i = 1; i < COLSTORESIZE; i++)
- if(GetSlot(i) && GetBoundingBox(i).IsPointInside(pos, -115.0f))
- CStreaming::RequestCol(i, STREAMFLAGS_PRIORITY);
-}
-
-void
-CColStore::EnsureCollisionIsInMemory(const CVector2D &pos)
-{
- int i;
-
- if(CStreaming::ms_disableStreaming)
- return;
-
- for(i = 1; i < COLSTORESIZE; i++)
- if(GetSlot(i) && GetBoundingBox(i).IsPointInside(pos, -110.0f) &&
- !CStreaming::HasColLoaded(i)){
- CStreaming::RequestCol(i, 0);
- if(TheCamera.GetScreenFadeStatus() == FADE_0)
- FrontEndMenuManager.MessageScreen("LOADCOL", false);
- CTimer::Suspend();
- CStreaming::LoadAllRequestedModels(false);
- CTimer::Resume();
- }
-}
-
-bool
-CColStore::HasCollisionLoaded(const CVector2D &pos)
-{
- int i;
-
- for(i = 1; i < COLSTORESIZE; i++)
- if(GetSlot(i) && GetBoundingBox(i).IsPointInside(pos, -110.0f) &&
- !GetSlot(i)->isLoaded)
- return false;
- return true;
-}
-
-#endif
diff --git a/src/core/ColStore.h b/src/core/ColStore.h
deleted file mode 100644
index 0d686ffd..00000000
--- a/src/core/ColStore.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#pragma once
-
-#include "templates.h"
-
-struct ColDef { // made up name
- int32 a;
- bool isLoaded;
- CRect bounds;
- char name[20];
- int16 minIndex;
- int16 maxIndex;
-};
-
-class CColStore
-{
- static CPool *ms_pColPool;
-
-public:
- static void Initialise(void);
- static void Shutdown(void);
- static int AddColSlot(const char *name);
- static void RemoveColSlot(int32 slot);
- static int FindColSlot(const char *name);
- static char *GetColName(int32 slot);
- static CRect &GetBoundingBox(int32 slot);
- static void IncludeModelIndex(int32 slot, int32 modelIndex);
- static bool LoadCol(int32 storeID, uint8 *buffer, int32 bufsize);
- static void RemoveCol(int32 slot);
- static void AddCollisionNeededAtPosn(const CVector2D &pos);
- static void LoadAllCollision(void);
- static void RemoveAllCollision(void);
- static void LoadCollision(const CVector2D &pos);
- static void RequestCollision(const CVector2D &pos);
- static void EnsureCollisionIsInMemory(const CVector2D &pos);
- static bool HasCollisionLoaded(const CVector2D &pos);
-
- static ColDef *GetSlot(int slot) {
- assert(slot >= 0);
- assert(ms_pColPool);
- assert(slot < ms_pColPool->GetSize());
- return ms_pColPool->GetSlot(slot);
- }
-};
diff --git a/src/core/Game.cpp b/src/core/Game.cpp
index 27731f8a..d0f412d8 100644
--- a/src/core/Game.cpp
+++ b/src/core/Game.cpp
@@ -370,9 +370,7 @@ 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();
@@ -489,9 +487,7 @@ void CGame::ReInitGameObjectVariables(void)
CSpecialFX::Init();
CWaterCannons::Init();
CParticle::ReloadConfig();
-#ifdef GTA_ZONECULL
CCullZones::ResolveVisibilities();
-#endif
if ( !FrontEndMenuManager.m_bWantToLoad )
{
@@ -524,9 +520,7 @@ 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/Streaming.cpp b/src/core/Streaming.cpp
index 978e0bb8..da9e7d33 100644
--- a/src/core/Streaming.cpp
+++ b/src/core/Streaming.cpp
@@ -1982,9 +1982,7 @@ CStreaming::ProcessEntitiesInSectorList(CPtrList &list, float x, float y, float
if(xmin < pos.x && pos.x < xmax &&
ymin < pos.y && pos.y < ymax &&
(CVector2D(x, y) - pos).MagnitudeSqr() < lodDistSq)
-#ifdef GTA_ZONECULL
if(CRenderer::IsEntityCullZoneVisible(e))
-#endif
RequestModel(e->GetModelIndex(), 0);
}
}
@@ -2008,9 +2006,7 @@ CStreaming::ProcessEntitiesInSectorList(CPtrList &list)
(!e->IsObject() || ((CObject*)e)->ObjectCreatedBy != TEMP_OBJECT)){
CTimeModelInfo *mi = (CTimeModelInfo*)CModelInfo::GetModelInfo(e->GetModelIndex());
if (mi->GetModelType() != MITYPE_TIME || CClock::GetIsTimeInRange(mi->GetTimeOn(), mi->GetTimeOff()))
-#ifdef GTA_ZONECULL
if(CRenderer::IsEntityCullZoneVisible(e))
-#endif
RequestModel(e->GetModelIndex(), 0);
}
}
@@ -2434,9 +2430,7 @@ CStreaming::LoadScene(const CVector &pos)
RemoveModel(si - ms_aInfoForModel);
}
CRenderer::m_loadingPriority = false;
-#ifdef GTA_ZONECULL
CCullZones::ForceCullZoneCoors(pos);
-#endif
DeleteAllRwObjects();
AddModelsToRequestList(pos);
CRadar::StreamRadarSections(pos);
diff --git a/src/core/ZoneCull.cpp b/src/core/ZoneCull.cpp
index 1e9c00f0..780c180e 100644
--- a/src/core/ZoneCull.cpp
+++ b/src/core/ZoneCull.cpp
@@ -38,7 +38,6 @@ CCullZones::Init(void)
CurrentFlags_Camera = 0;
CurrentFlags_Player = 0;
bCurrentSubwayIsInvisible = false;
-#ifdef GTA_ZONECULL
NumCullZones = 0;
OldCullZone = -1;
EntityIndicesUsed = 0;
@@ -47,10 +46,8 @@ CCullZones::Init(void)
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;
@@ -216,7 +213,6 @@ CCullZones::DoVisibilityTestCullZone(int zoneId, bool doIt)
}
}
}
-#endif
void
CCullZones::Update(void)
@@ -229,10 +225,8 @@ CCullZones::Update(void)
switch(CTimer::GetFrameCounter() & 7){
case 0:
case 4:
-#ifdef GTA_ZONECULL
/* Update Cull zone */
ForceCullZoneCoors(TheCamera.GetGameCamPosition());
-#endif
break;
case 2:
@@ -256,7 +250,6 @@ CCullZones::Update(void)
void
CCullZones::ForceCullZoneCoors(CVector coors)
{
-#ifdef GTA_ZONECULL
int32 z;
z = FindCullZoneForCoors(coors);
if(z != OldCullZone){
@@ -266,10 +259,8 @@ CCullZones::ForceCullZoneCoors(CVector coors)
aZones[z].DoStuffEnteringZone();
OldCullZone = z;
}
-#endif
}
-#ifdef GTA_ZONECULL
int32
CCullZones::FindCullZoneForCoors(CVector coors)
{
@@ -282,7 +273,6 @@ CCullZones::FindCullZoneForCoors(CVector coors)
return i;
return -1;
}
-#endif
int32
CCullZones::FindAttributesForCoors(CVector coors, int32 *wantedLevel)
@@ -360,7 +350,6 @@ CCullZones::AddCullZone(CVector const &position,
CAttributeZone *attrib;
CVector v;
-#ifdef GTA_ZONECULL
if((flag & ATTRZONE_NOTCULLZONE) == 0){
cull = &aZones[NumCullZones++];
v = position;
@@ -383,7 +372,6 @@ 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;
@@ -398,7 +386,6 @@ CCullZones::AddCullZone(CVector const &position,
}
-#ifdef GTA_ZONECULL
void
CCullZone::DoStuffLeavingZone(void)
{
@@ -573,5 +560,4 @@ CCullZones::DoWeHaveMoreThanXOccurencesOfSet(int32 count, uint16 *set)
}
}
return false;
-}
-#endif
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/core/config.h b/src/core/config.h
index 0bbc883e..7c1fab5b 100644
--- a/src/core/config.h
+++ b/src/core/config.h
@@ -143,12 +143,6 @@ enum Config {
//#define GTA_PS2
//#define GTA_XBOX
-#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
#define GTA_PS2_STUFF
diff --git a/src/entities/Entity.cpp b/src/entities/Entity.cpp
index 7bacd421..e2b91552 100644
--- a/src/entities/Entity.cpp
+++ b/src/entities/Entity.cpp
@@ -60,10 +60,8 @@ CEntity::CEntity(void)
bMeleeProof = false;
bOnlyDamagedByPlayer = false;
bStreamingDontDelete = false;
-#ifdef GTA_ZONECULL
bZoneCulled = false;
bZoneCulled2 = false;
-#endif
bRemoveFromWorld = false;
bHasHitWall = false;
@@ -150,17 +148,6 @@ 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)
{
@@ -967,10 +954,8 @@ 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(buf, tmp);
@@ -1022,10 +1007,8 @@ 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(buf);
diff --git a/src/entities/Entity.h b/src/entities/Entity.h
index 17353f97..7b1d4c07 100644
--- a/src/entities/Entity.h
+++ b/src/entities/Entity.h
@@ -68,10 +68,8 @@ 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
@@ -148,7 +146,6 @@ 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; }
diff --git a/src/peds/CopPed.cpp b/src/peds/CopPed.cpp
index 72c89df2..99e8c1ae 100644
--- a/src/peds/CopPed.cpp
+++ b/src/peds/CopPed.cpp
@@ -709,7 +709,7 @@ CCopPed::ProcessControl(void)
return;
bool dontShoot = false;
- if (GetIsOnScreenAndNotCulled()) {
+ if (GetIsOnScreen() && CRenderer::IsEntityCullZoneVisible(this)) {
if (((CTimer::GetFrameCounter() + m_randomSeed) & 0x1F) == 17) {
CEntity *foundBuilding = nil;
CColPoint foundCol;
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 107a4235..0c5e8fae 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -972,9 +972,7 @@ CRenderer::ScanSectorList(CPtrList *lists)
continue; // already seen
ent->m_scanCode = CWorld::GetCurrentScanCode();
-#ifdef GTA_ZONECULL
if(IsEntityCullZoneVisible(ent))
-#endif
switch(SetupEntityVisibility(ent)){
case VIS_VISIBLE:
ms_aVisibleEntityPtrs[ms_nNoOfVisibleEntities++] = ent;
@@ -997,14 +995,12 @@ CRenderer::ScanSectorList(CPtrList *lists)
CStreaming::RequestModel(ent->GetModelIndex(), 0);
break;
}
-#ifdef GTA_ZONECULL
else if(ent->IsBuilding() && ((CBuilding*)ent)->GetIsATreadable()){
if(!CStreaming::ms_disableStreaming)
if(SetupEntityVisibility(ent) == VIS_STREAMME)
if(!m_loadingPriority || CStreaming::ms_numModelsRequested < 10)
CStreaming::RequestModel(ent->GetModelIndex(), 0);
}
-#endif
}
}
}
@@ -1026,9 +1022,7 @@ CRenderer::ScanSectorList_Priority(CPtrList *lists)
continue; // already seen
ent->m_scanCode = CWorld::GetCurrentScanCode();
-#ifdef GTA_ZONECULL
if(IsEntityCullZoneVisible(ent))
-#endif
switch(SetupEntityVisibility(ent)){
case VIS_VISIBLE:
ms_aVisibleEntityPtrs[ms_nNoOfVisibleEntities++] = ent;
@@ -1053,13 +1047,11 @@ CRenderer::ScanSectorList_Priority(CPtrList *lists)
}
break;
}
-#ifdef GTA_ZONECULL
else if(ent->IsBuilding() && ((CBuilding*)ent)->GetIsATreadable()){
if(!CStreaming::ms_disableStreaming)
if(SetupEntityVisibility(ent) == VIS_STREAMME)
CStreaming::RequestModel(ent->GetModelIndex(), 0);
}
-#endif
}
}
}
@@ -1112,9 +1104,7 @@ CRenderer::ScanSectorList_RequestModels(CPtrList *lists)
if(ent->m_scanCode == CWorld::GetCurrentScanCode())
continue; // already seen
ent->m_scanCode = CWorld::GetCurrentScanCode();
-#ifdef GTA_ZONECULL
if(IsEntityCullZoneVisible(ent))
-#endif
if(ShouldModelBeStreamed(ent))
CStreaming::RequestModel(ent->GetModelIndex(), 0);
}
@@ -1160,7 +1150,6 @@ CRenderer::ShouldModelBeStreamed(CEntity *ent)
return dist - FADE_DISTANCE - STREAM_DISTANCE < mi->GetLargestLodDistance();
}
-#ifdef GTA_ZONECULL
bool
CRenderer::IsEntityCullZoneVisible(CEntity *ent)
{
@@ -1203,7 +1192,6 @@ CRenderer::IsVehicleCullZoneVisible(CEntity *ent)
return !(v->m_pCurGroundEntity && v->m_pCurGroundEntity->bZoneCulled2);
return true;
}
-#endif
void
CRenderer::RemoveVehiclePedLights(CEntity *ent, bool reset)
diff --git a/src/render/Renderer.h b/src/render/Renderer.h
index e28995c3..362741e3 100644
--- a/src/render/Renderer.h
+++ b/src/render/Renderer.h
@@ -64,10 +64,8 @@ public:
static void SortBIGBuildingsForSectorList(CPtrList *list);
static bool ShouldModelBeStreamed(CEntity *ent);
-#ifdef GTA_ZONECULL
static bool IsEntityCullZoneVisible(CEntity *ent);
static bool IsVehicleCullZoneVisible(CEntity *ent);
-#endif
static void RemoveVehiclePedLights(CEntity *ent, bool reset);
};
diff --git a/src/vehicles/Train.cpp b/src/vehicles/Train.cpp
index fef712e6..7831a0c8 100644
--- a/src/vehicles/Train.cpp
+++ b/src/vehicles/Train.cpp
@@ -38,7 +38,6 @@ CVector CTrain::aStationCoors_S[4];
CTrain::CTrain(int32 id, uint8 CreatedBy)
: CVehicle(CreatedBy)
{
-#ifdef GTA_TRAIN
CVehicleModelInfo *mi = (CVehicleModelInfo*)CModelInfo::GetModelInfo(id);
m_vehType = VEHICLE_TYPE_TRAIN;
pHandling = mod_HandlingManager.GetHandlingData((eHandlingId)mi->m_handlingId);
@@ -61,28 +60,22 @@ CTrain::CTrain(int32 id, uint8 CreatedBy)
bUsesCollision = true;
SetStatus(STATUS_TRAIN_MOVING);
-#else
- assert(0 && "No trains in this game");
-#endif
}
void
CTrain::SetModelIndex(uint32 id)
{
-#ifdef GTA_TRAIN
int i;
CVehicle::SetModelIndex(id);
for(i = 0; i < NUM_TRAIN_NODES; i++)
m_aTrainNodes[i] = nil;
CClumpModelInfo::FillFrameArray(GetClump(), m_aTrainNodes);
-#endif
}
void
CTrain::ProcessControl(void)
{
-#ifdef GTA_TRAIN
if(gbModelViewer || m_isFarAway && (CTimer::GetFrameCounter() + m_nWagonId) & 0xF)
return;
@@ -285,13 +278,11 @@ CTrain::ProcessControl(void)
TrainHitStuff(s->m_lists[ENTITYLIST_PEDS_OVERLAP]);
}
}
-#endif GTA_TRAIN
}
void
CTrain::PreRender(void)
{
-#ifdef GTA_TRAIN
CVehicleModelInfo *mi = (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex());
if(m_bIsFirstWagon){
@@ -351,21 +342,17 @@ CTrain::PreRender(void)
CCoronas::TYPE_NORMAL, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON,
CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, 0.0f);
}
-#endif
}
void
CTrain::Render(void)
{
-#ifdef GTA_TRAIN
CEntity::Render();
-#endif
}
void
CTrain::TrainHitStuff(CPtrList &list)
{
-#ifdef GTA_TRAIN
CPtrNode *node;
CPhysical *phys;
@@ -374,13 +361,11 @@ CTrain::TrainHitStuff(CPtrList &list)
if(phys != this && Abs(this->GetPosition().z - phys->GetPosition().z) < 1.5f)
phys->bHitByTrain = true;
}
-#endif
}
void
CTrain::AddPassenger(CPed *ped)
{
-#ifdef GTA_TRAIN
int i = ped->m_vehEnterType;
if((i == TRAIN_POS_LEFT_ENTRY || i == TRAIN_POS_MID_ENTRY || i == TRAIN_POS_RIGHT_ENTRY) && pPassengers[i] == nil){
pPassengers[i] = ped;
@@ -393,13 +378,11 @@ CTrain::AddPassenger(CPed *ped)
return;
}
}
-#endif
}
void
CTrain::OpenTrainDoor(float ratio)
{
-#ifdef GTA_TRAIN
if(m_rwObject == nil)
return;
@@ -424,7 +407,6 @@ CTrain::OpenTrainDoor(float ratio)
doorL.UpdateRW();
doorR.UpdateRW();
-#endif
}
@@ -432,7 +414,6 @@ CTrain::OpenTrainDoor(float ratio)
void
CTrain::InitTrains(void)
{
-#ifdef GTA_TRAIN
int i, j;
CTrain *train;
@@ -499,25 +480,21 @@ CTrain::InitTrains(void)
for(j = 0; pTrackNodes_S[j].t < StationDist_S[i]; j++);
aStationCoors_S[i] = pTrackNodes_S[j].p;
}
-#endif
}
void
CTrain::Shutdown(void)
{
-#ifdef GTA_TRAIN
delete[] pTrackNodes;
delete[] pTrackNodes_S;
pTrackNodes = nil;
pTrackNodes_S = nil;
-#endif
}
void
CTrain::ReadAndInterpretTrackFile(char *filename, CTrainNode **nodes, int16 *numNodes, int32 numStations, float *stationDists,
float *totalLength, float *totalDuration, CTrainInterpolationLine *interpLines, bool rightRail)
{
-#ifdef GTA_TRAIN
bool readingFile = false;
int bp, lp;
int i, tmp;
@@ -639,7 +616,6 @@ CTrain::ReadAndInterpretTrackFile(char *filename, CTrainNode **nodes, int16 *num
// end
interpLines[j].time = *totalDuration;
-#endif
}
void
@@ -651,7 +627,6 @@ ProcessTrainAnnouncements(void)
void
CTrain::UpdateTrains(void)
{
-#ifdef GTA_TRAIN
int i, j;
uint32 time;
float t, deltaT;
@@ -715,5 +690,4 @@ CTrain::UpdateTrains(void)
// time offset for each train
time += 0x40000/4;
}
-#endif
}