summaryrefslogtreecommitdiffstats
path: root/src/core/Streaming.cpp
diff options
context:
space:
mode:
authorSergeanur <s.anureev@yandex.ua>2020-05-05 17:04:18 +0200
committerSergeanur <s.anureev@yandex.ua>2020-05-05 17:04:18 +0200
commit9960c411933f9a804eb5f6840d75ad00fd255252 (patch)
tree19886c3263958d5c77664518270d252ad5554602 /src/core/Streaming.cpp
parentMerge pull request #512 from Nick007J/master (diff)
downloadre3-9960c411933f9a804eb5f6840d75ad00fd255252.tar
re3-9960c411933f9a804eb5f6840d75ad00fd255252.tar.gz
re3-9960c411933f9a804eb5f6840d75ad00fd255252.tar.bz2
re3-9960c411933f9a804eb5f6840d75ad00fd255252.tar.lz
re3-9960c411933f9a804eb5f6840d75ad00fd255252.tar.xz
re3-9960c411933f9a804eb5f6840d75ad00fd255252.tar.zst
re3-9960c411933f9a804eb5f6840d75ad00fd255252.zip
Diffstat (limited to 'src/core/Streaming.cpp')
-rw-r--r--src/core/Streaming.cpp275
1 files changed, 0 insertions, 275 deletions
diff --git a/src/core/Streaming.cpp b/src/core/Streaming.cpp
index d212dd05..978e0bb8 100644
--- a/src/core/Streaming.cpp
+++ b/src/core/Streaming.cpp
@@ -32,10 +32,6 @@
#include "Replay.h"
#endif
#include "main.h"
-#ifdef MIAMI
-#include "ColStore.h"
-#include "DMAudio.h"
-#endif
bool CStreaming::ms_disableStreaming;
bool CStreaming::ms_bLoadingBigModel;
@@ -57,9 +53,7 @@ int32 CStreaming::ms_vehiclesLoaded[MAXVEHICLESLOADED];
int32 CStreaming::ms_lastVehicleDeleted;
CDirectory *CStreaming::ms_pExtraObjectsDir;
int32 CStreaming::ms_numPriorityRequests;
-#ifndef MIAMI
bool CStreaming::ms_hasLoadedLODs;
-#endif
int32 CStreaming::ms_currentPedGrp;
int32 CStreaming::ms_currentPedLoading;
int32 CStreaming::ms_lastCullZone;
@@ -190,9 +184,7 @@ CStreaming::Init2(void)
ms_pExtraObjectsDir = new CDirectory(EXTRADIRSIZE);
ms_numPriorityRequests = 0;
-#ifndef MIAMI
ms_hasLoadedLODs = true;
-#endif
ms_currentPedGrp = -1;
ms_lastCullZone = -1; // unused because RemoveModelsNotVisibleFromCullzone is gone
ms_loadedGangs = 0;
@@ -239,7 +231,6 @@ CStreaming::Init2(void)
CModelInfo::GetModelInfo("IslandLODsubIND", &islandLODsubInd);
CModelInfo::GetModelInfo("IslandLODsubCOM", &islandLODsubCom);
-#ifndef MIAMI
for(i = CPools::GetBuildingPool()->GetSize()-1; i >= 0; i--){
CBuilding *building = CPools::GetBuildingPool()->GetSlot(i);
if(building == nil)
@@ -250,7 +241,6 @@ CStreaming::Init2(void)
if(building->GetModelIndex() == islandLODsubInd) pIslandLODsubIndEntity = building;
if(building->GetModelIndex() == islandLODsubCom) pIslandLODsubComEntity = building;
}
-#endif
}
void
@@ -302,35 +292,21 @@ CStreaming::Update(void)
if(CTimer::GetIsPaused())
return;
-#ifndef MIAMI
train = FindPlayerTrain();
if(train && train->GetPosition().z < 0.0f){
RequestSubway();
requestedSubway = true;
}else if(!ms_disableStreaming)
AddModelsToRequestList(TheCamera.GetPosition());
-#else
- LoadBigBuildingsWhenNeeded();
- if(!ms_disableStreaming && TheCamera.GetPosition().z < 55.0f)
- AddModelsToRequestList(TheCamera.GetPosition());
-#endif
DeleteFarAwayRwObjects(TheCamera.GetPosition());
if(!ms_disableStreaming &&
-#ifndef MIAMI
!CCutsceneMgr::IsRunning() &&
!requestedSubway &&
!CGame::playingIntro &&
-#else
- !CCutsceneMgr::IsCutsceneProcessing() &&
-#endif
ms_numModelsRequested < 5 &&
!CRenderer::m_loadingPriority
-#ifdef MIAMI
- && CGame::currArea == 0
- // replay is also MIAMI
-#endif
#ifdef FIX_BUGS
&& !CReplay::IsPlayingBack()
#endif
@@ -341,16 +317,6 @@ CStreaming::Update(void)
LoadRequestedModels();
-#ifdef MIAMI
- if(CWorld::Players[0].m_pRemoteVehicle){
- CColStore::AddCollisionNeededAtPosn(FindPlayerCoors());
- CColStore::LoadCollision(CWorld::Players[0].m_pRemoteVehicle->GetPosition());
- CColStore::EnsureCollisionIsInMemory(CWorld::Players[0].m_pRemoteVehicle->GetPosition());
- }else{
- CColStore::LoadCollision(FindPlayerCoors());
- CColStore::EnsureCollisionIsInMemory(FindPlayerCoors());
- }
-#endif
for(si = ms_endRequestedList.m_prev; si != &ms_startRequestedList; si = prev){
prev = si->m_prev;
@@ -409,7 +375,6 @@ CStreaming::LoadCdDirectory(const char *dirname, int n)
imgSelector = n<<24;
assert(sizeof(direntry) == 32);
while(CFileMgr::Read(fd, (char*)&direntry, sizeof(direntry))){
-#ifndef MIAMI
dot = strchr(direntry.name, '.');
if(dot) *dot = '\0';
if(direntry.size > (uint32)ms_streamingBufferSize)
@@ -452,64 +417,6 @@ CStreaming::LoadCdDirectory(const char *dirname, int n)
}
}else
lastID = -1;
-#else
- bool bAddToStreaming = false;
-
- if(direntry.size > (uint32)ms_streamingBufferSize)
- ms_streamingBufferSize = direntry.size;
- direntry.name[23] = '\0';
- dot = strchr(direntry.name, '.');
- if(dot == nil || dot-direntry.name > 20){
- debug("%s is too long\n", direntry.name);
- lastID = -1;
- continue;
- }
-
- *dot = '\0';
-
- if(!CGeneral::faststricmp(dot+1, "DFF")){
- if(CModelInfo::GetModelInfo(direntry.name, &modelId)){
- bAddToStreaming = true;
- }else{
-#ifdef FIX_BUGS
- // remember which cdimage this came from
- ms_pExtraObjectsDir->AddItem(direntry, n);
-#else
- ms_pExtraObjectsDir->AddItem(direntry);
-#endif
- lastID = -1;
- }
- }else if(!CGeneral::faststricmp(dot+1, "TXD")){
- modelId = CTxdStore::FindTxdSlot(direntry.name);
- if(modelId == -1)
- modelId = CTxdStore::AddTxdSlot(direntry.name);
- modelId += STREAM_OFFSET_TXD;
- bAddToStreaming = true;
- }else if(!CGeneral::faststricmp(dot+1, "COL")){
- modelId = CColStore::FindColSlot(direntry.name);
- if(modelId == -1)
- modelId = CColStore::AddColSlot(direntry.name);
- modelId += STREAM_OFFSET_COL;
- bAddToStreaming = true;
- // TODO: IFP
- }else{
- *dot = '.';
- lastID = -1;
- }
-
- if(bAddToStreaming){
- if(ms_aInfoForModel[modelId].GetCdSize()){
- debug("%s.%s appears more than once in %s\n", direntry.name, dot+1, dirname);
- lastID = -1;
- }else{
- direntry.offset |= imgSelector;
- ms_aInfoForModel[modelId].SetCdPosnAndSize(direntry.offset, direntry.size);
- if(lastID != -1)
- ms_aInfoForModel[lastID].m_nextID = modelId;
- lastID = modelId;
- }
- }
-#endif
}
CFileMgr::CloseFile(fd);
@@ -533,7 +440,6 @@ CStreaming::ConvertBufferToObject(int8 *buf, int32 streamId)
stream = RwStreamOpen(rwSTREAMMEMORY, rwSTREAMREAD, &mem);
if(streamId < STREAM_OFFSET_TXD){
-//--MIAMI: also check animation
// Model
mi = CModelInfo::GetModelInfo(streamId);
@@ -575,11 +481,7 @@ CStreaming::ConvertBufferToObject(int8 *buf, int32 streamId)
RwStreamClose(stream, &mem);
return false;
}
-#ifndef MIAMI
}else{
-#else
- }else if(streamId >= STREAM_OFFSET_TXD && streamId < STREAM_OFFSET_COL){
-#endif
// Txd
assert(streamId < NUMSTREAMINFO);
if((ms_aInfoForModel[streamId].m_flags & STREAMFLAGS_KEEP_IN_MEMORY) == 0 &&
@@ -604,22 +506,10 @@ CStreaming::ConvertBufferToObject(int8 *buf, int32 streamId)
RwStreamClose(stream, &mem);
return false;
}
-#ifdef MIAMI
- }else if(streamId >= STREAM_OFFSET_COL && streamId < NUMSTREAMINFO){
- if(!CColStore::LoadCol(streamId-STREAM_OFFSET_COL, mem.start, mem.length)){
- debug("Failed to load %s.col\n", CColStore::GetColName(streamId - STREAM_OFFSET_COL));
- RemoveModel(streamId);
- ReRequestModel(streamId);
- RwStreamClose(stream, &mem);
- return false;
- }
- // TODO: IFPs
-#endif
}
RwStreamClose(stream, &mem);
-#ifndef MIAMI
// We shouldn't even end up here unless load was successful
if(!success){
ReRequestModel(streamId);
@@ -629,7 +519,6 @@ CStreaming::ConvertBufferToObject(int8 *buf, int32 streamId)
debug("Failed to load %s.txd\n", CTxdStore::GetTxdName(streamId - STREAM_OFFSET_TXD));
return false;
}
-#endif
if(streamId < STREAM_OFFSET_TXD){
// Model
@@ -648,11 +537,7 @@ CStreaming::ConvertBufferToObject(int8 *buf, int32 streamId)
if((ms_aInfoForModel[streamId].m_flags & STREAMFLAGS_CANT_REMOVE) == 0)
ms_aInfoForModel[streamId].AddToList(&ms_startLoadedList);
}
-#ifndef MIAMI
}else{
-#else
- }else if(streamId >= STREAM_OFFSET_TXD && streamId < STREAM_OFFSET_COL){ // TODO: animations
-#endif
// Txd
if((ms_aInfoForModel[streamId].m_flags & STREAMFLAGS_CANT_REMOVE) == 0)
ms_aInfoForModel[streamId].AddToList(&ms_startLoadedList);
@@ -667,23 +552,10 @@ CStreaming::ConvertBufferToObject(int8 *buf, int32 streamId)
endTime = CTimer::GetCurrentTimeInCycles() / CTimer::GetCyclesPerMillisecond();
timeDiff = endTime - startTime;
if(timeDiff > 5){
-#ifndef MIAMI
if(streamId < STREAM_OFFSET_TXD)
debug("model %s took %d ms\n", CModelInfo::GetModelInfo(streamId)->GetName(), timeDiff);
else
debug("txd %s took %d ms\n", CTxdStore::GetTxdName(streamId - STREAM_OFFSET_TXD), timeDiff);
-#else
- // TODO: is this inlined?
- static char objname[32];
- if(streamId < STREAM_OFFSET_TXD)
- sprintf(objname, "%s.dff", CModelInfo::GetModelInfo(streamId)->GetName());
- else if(streamId >= STREAM_OFFSET_TXD && streamId < STREAM_OFFSET_COL)
- sprintf(objname, "%s.txd", CTxdStore::GetTxdName(streamId-STREAM_OFFSET_TXD));
- else if(streamId >= STREAM_OFFSET_COL && streamId < NUMSTREAMINFO)
- sprintf(objname, "%s.col", CColStore::GetColName(streamId-STREAM_OFFSET_COL));
- // TODO: IFP
- debug("%s took %d ms\n", objname, timeDiff);
-#endif
}
return true;
@@ -841,11 +713,7 @@ CStreaming::RequestSubway(void)
}
}
-#ifndef MIAMI
#define BIGBUILDINGFLAGS STREAMFLAGS_DONT_REMOVE|STREAMFLAGS_PRIORITY
-#else
-#define BIGBUILDINGFLAGS STREAMFLAGS_DONT_REMOVE
-#endif
void
CStreaming::RequestBigBuildings(eLevelName level)
@@ -857,54 +725,12 @@ CStreaming::RequestBigBuildings(eLevelName level)
for(i = n; i >= 0; i--){
b = CPools::GetBuildingPool()->GetSlot(i);
if(b && b->bIsBIGBuilding && b->m_level == level)
-#ifdef MIAMI
- if(!b->bStreamBIGBuilding)
-#endif
RequestModel(b->GetModelIndex(), BIGBUILDINGFLAGS);
}
RequestIslands(level);
-#ifndef MIAMI
ms_hasLoadedLODs = false;
-#endif
}
-#ifdef MIAMI
-void
-CStreaming::RequestBigBuildings(eLevelName level, const CVector &pos)
-{
- int i, n;
- CBuilding *b;
-
- n = CPools::GetBuildingPool()->GetSize()-1;
- for(i = n; i >= 0; i--){
- b = CPools::GetBuildingPool()->GetSlot(i);
- if(b && b->bIsBIGBuilding && b->m_level == level)
- if(b->bStreamBIGBuilding){
- if(CRenderer::ShouldModelBeStreamed(b))
- RequestModel(b->GetModelIndex(), 0);
- }else
- RequestModel(b->GetModelIndex(), BIGBUILDINGFLAGS);
- }
- RequestIslands(level);
-}
-
-void
-CStreaming::InstanceBigBuildings(eLevelName level, const CVector &pos)
-{
- int i, n;
- CBuilding *b;
-
- n = CPools::GetBuildingPool()->GetSize()-1;
- for(i = n; i >= 0; i--){
- b = CPools::GetBuildingPool()->GetSlot(i);
- if(b && b->bIsBIGBuilding && b->m_level == level &&
- b->bStreamBIGBuilding && b->m_rwObject == nil)
- if(CRenderer::ShouldModelBeStreamed(b))
- b->CreateRwObject();
- }
-}
-#endif
-
void
CStreaming::RequestIslands(eLevelName level)
{
@@ -1002,20 +828,10 @@ CStreaming::RemoveModel(int32 id)
return;
if(ms_aInfoForModel[id].m_loadState == STREAMSTATE_LOADED){
-#ifndef MIAMI
if(id < STREAM_OFFSET_TXD)
CModelInfo::GetModelInfo(id)->DeleteRwObject();
else
CTxdStore::RemoveTxd(id - STREAM_OFFSET_TXD);
-#else
- if(id < STREAM_OFFSET_TXD)
- CModelInfo::GetModelInfo(id)->DeleteRwObject();
- else if(id >= STREAM_OFFSET_TXD && id < STREAM_OFFSET_COL)
- CTxdStore::RemoveTxd(id - STREAM_OFFSET_TXD);
- else if(id >= STREAM_OFFSET_COL && id < NUMSTREAMINFO)
- CColStore::RemoveCol(id - STREAM_OFFSET_COL);
- // TODO: IFP
-#endif
ms_memoryUsed -= ms_aInfoForModel[id].GetCdSize()*CDSTREAM_SECTOR_SIZE;
}
@@ -1034,26 +850,15 @@ CStreaming::RemoveModel(int32 id)
}
if(ms_aInfoForModel[id].m_loadState == STREAMSTATE_STARTED){
-#ifndef MIAMI
if(id < STREAM_OFFSET_TXD)
RpClumpGtaCancelStream();
else
CTxdStore::RemoveTxd(id - STREAM_OFFSET_TXD);
-#else
- if(id < STREAM_OFFSET_TXD)
- RpClumpGtaCancelStream();
- else if(id >= STREAM_OFFSET_TXD && id < STREAM_OFFSET_COL)
- CTxdStore::RemoveTxd(id - STREAM_OFFSET_TXD);
- else if(id >= STREAM_OFFSET_COL && id < NUMSTREAMINFO)
- CColStore::RemoveCol(id - STREAM_OFFSET_COL);
- // TODO: IFP
-#endif
}
ms_aInfoForModel[id].m_loadState = STREAMSTATE_NOTLOADED;
}
-//--MIAMI: change islands
void
CStreaming::RemoveUnusedBuildings(eLevelName level)
{
@@ -1065,7 +870,6 @@ CStreaming::RemoveUnusedBuildings(eLevelName level)
RemoveBuildings(LEVEL_SUBURBAN);
}
-//--MIAMI: done
void
CStreaming::RemoveBuildings(eLevelName level)
{
@@ -1126,7 +930,6 @@ CStreaming::RemoveBuildings(eLevelName level)
}
}
-//--MIAMI: change islands
void
CStreaming::RemoveUnusedBigBuildings(eLevelName level)
{
@@ -1155,21 +958,6 @@ DeleteIsland(CEntity *island)
void
CStreaming::RemoveIslandsNotUsed(eLevelName level)
{
-#ifdef MIAMI
- int i;
- if(pIslandLODindustEntity == nil)
- for(i = CPools::GetBuildingPool()->GetSize()-1; i >= 0; i--){
- CBuilding *building = CPools::GetBuildingPool()->GetSlot(i);
- if(building == nil)
- continue;
- if(building->GetModelIndex() == islandLODindust) pIslandLODindustEntity = building;
- if(building->GetModelIndex() == islandLODcomInd) pIslandLODcomIndEntity = building;
- if(building->GetModelIndex() == islandLODcomSub) pIslandLODcomSubEntity = building;
- if(building->GetModelIndex() == islandLODsubInd) pIslandLODsubIndEntity = building;
- if(building->GetModelIndex() == islandLODsubCom) pIslandLODsubComEntity = building;
- }
-#endif
-
switch(level){
case LEVEL_INDUSTRIAL:
DeleteIsland(pIslandLODindustEntity);
@@ -1196,7 +984,6 @@ CStreaming::RemoveIslandsNotUsed(eLevelName level)
}
}
-//--MIAMI: done
void
CStreaming::RemoveBigBuildings(eLevelName level)
{
@@ -1400,7 +1187,6 @@ CStreaming::IsObjectInCdImage(int32 id)
return ms_aInfoForModel[id].GetCdPosnAndSize(posn, size);
}
-#ifndef MIAMI
void
CStreaming::HaveAllBigBuildingsLoaded(eLevelName level)
{
@@ -1435,7 +1221,6 @@ CStreaming::HaveAllBigBuildingsLoaded(eLevelName level)
RemoveUnusedBigBuildings(level);
ms_hasLoadedLODs = true;
}
-#endif
void
CStreaming::SetModelIsDeletable(int32 id)
@@ -1669,44 +1454,6 @@ CStreaming::RemoveCurrentZonesModels(void)
ms_loadedGangCars = 0;
}
-#ifdef MIAMI
-void
-CStreaming::LoadBigBuildingsWhenNeeded(void)
-{
- // Very much like CCollision::Update and CCollision::LoadCollisionWhenINeedIt
- if(CCutsceneMgr::IsCutsceneProcessing())
- return;
-
- if(CTheZones::m_CurrLevel == LEVEL_NONE ||
- CTheZones::m_CurrLevel == CGame::currLevel)
- return;
-
- CTimer::Suspend();
- CGame::currLevel = CTheZones::m_CurrLevel;
- DMAudio.SetEffectsFadeVol(0);
- CPad::StopPadsShaking();
- CCollision::LoadCollisionScreen(CGame::currLevel);
- DMAudio.Service();
-
- // CPopulation::DealWithZoneChange is unused in VC
- RemoveUnusedBigBuildings(CGame::currLevel);
- RemoveUnusedBuildings(CGame::currLevel);
- RemoveUnusedModelsInLoadedList();
- CGame::TidyUpMemory(true, true);
-
- CReplay::EmptyReplayBuffer();
- if(CGame::currLevel != LEVEL_NONE)
- LoadSplash(GetLevelSplashScreen(CGame::currLevel));
-
- CStreaming::RequestBigBuildings(CGame::currLevel, TheCamera.GetPosition());
- CStreaming::LoadAllRequestedModels(true);
-
- CGame::TidyUpMemory(true, true);
- CTimer::Resume();
- DMAudio.SetEffectsFadeVol(127);
-}
-#endif
-
// Find starting offset of the cdimage we next want to read
// Not useful at all on PC...
@@ -2691,33 +2438,11 @@ CStreaming::LoadScene(const CVector &pos)
CCullZones::ForceCullZoneCoors(pos);
#endif
DeleteAllRwObjects();
-#ifndef MIAMI
AddModelsToRequestList(pos);
CRadar::StreamRadarSections(pos);
RemoveUnusedBigBuildings(level);
RequestBigBuildings(level);
LoadAllRequestedModels(false);
-#else
- if(level == LEVEL_NONE)
- level = CGame::currLevel;
- CGame::currLevel = level;
- RemoveUnusedBigBuildings(level);
- RequestBigBuildings(level, pos);
- RequestBigBuildings(LEVEL_NONE, pos);
- RemoveIslandsNotUsed(level);
- LoadAllRequestedModels(false);
- InstanceBigBuildings(level, pos);
- InstanceBigBuildings(LEVEL_NONE, pos);
- AddModelsToRequestList(pos);
- CRadar::StreamRadarSections(pos);
-
- // TODO: stream zone vehicles
- LoadAllRequestedModels(false);
- // TODO: InstanceLoadedModels
-
- for(int i = 0; i < NUMSTREAMINFO; i++)
- ms_aInfoForModel[i].m_flags &= ~STREAMFLAGS_20;
-#endif
debug("End load scene\n");
}