streaming fixes

This commit is contained in:
aap 2021-01-09 11:43:58 +01:00
parent 2ce925caba
commit 225b8953fd
3 changed files with 27 additions and 17 deletions

View file

@ -1151,12 +1151,9 @@ CStreaming::RemoveModel(int32 id)
void void
CStreaming::RemoveUnusedBuildings(eLevelName level) CStreaming::RemoveUnusedBuildings(eLevelName level)
{ {
if(level != LEVEL_INDUSTRIAL) for(int i = LEVEL_INDUSTRIAL; i < NUM_LEVELS; i++)
RemoveBuildings(LEVEL_INDUSTRIAL); if(level != i)
if(level != LEVEL_COMMERCIAL) RemoveBuildings((eLevelName)i);
RemoveBuildings(LEVEL_COMMERCIAL);
if(level != LEVEL_SUBURBAN)
RemoveBuildings(LEVEL_SUBURBAN);
} }
void void
@ -1279,12 +1276,9 @@ CStreaming::RemoveUnusedBigBuildings(eLevelName level)
{ {
ISLAND_LOADING_IS(LOW) ISLAND_LOADING_IS(LOW)
{ {
if(level != LEVEL_INDUSTRIAL) for(int i = LEVEL_INDUSTRIAL; i < NUM_LEVELS; i++)
RemoveBigBuildings(LEVEL_INDUSTRIAL); if(level != i)
if(level != LEVEL_COMMERCIAL) RemoveBuildings((eLevelName)i);
RemoveBigBuildings(LEVEL_COMMERCIAL);
if(level != LEVEL_SUBURBAN)
RemoveBigBuildings(LEVEL_SUBURBAN);
} }
RemoveIslandsNotUsed(level); RemoveIslandsNotUsed(level);
} }
@ -1324,8 +1318,11 @@ CStreaming::RemoveIslandsNotUsed(eLevelName level)
} }
#ifdef NO_ISLAND_LOADING #ifdef NO_ISLAND_LOADING
if(FrontEndMenuManager.m_PrefsIslandLoading == CMenuManager::ISLAND_LOADING_HIGH) { if(FrontEndMenuManager.m_PrefsIslandLoading == CMenuManager::ISLAND_LOADING_HIGH) {
DeleteIsland(pIslandLODmainlandEntity); DeleteIsland(pIslandLODindustEntity);
DeleteIsland(pIslandLODbeachEntity); DeleteIsland(pIslandLODcomIndEntity);
DeleteIsland(pIslandLODcomSubEntity);
DeleteIsland(pIslandLODsubIndEntity);
DeleteIsland(pIslandLODsubComEntity);
} else } else
#endif #endif
switch(level){ switch(level){

View file

@ -213,3 +213,10 @@ public:
static void PrintStreamingBufferState(); static void PrintStreamingBufferState();
}; };
// LCS(TODO): put them into CStreaming::mspInst
extern int32 islandLODindust;
extern int32 islandLODcomInd;
extern int32 islandLODcomSub;
extern int32 islandLODsubInd;
extern int32 islandLODsubCom;

View file

@ -4,6 +4,7 @@
#include "RwHelper.h" #include "RwHelper.h"
#include "ModelIndices.h" #include "ModelIndices.h"
#include "Timer.h" #include "Timer.h"
#include "Streaming.h"
#include "Entity.h" #include "Entity.h"
#include "Object.h" #include "Object.h"
#include "World.h" #include "World.h"
@ -623,10 +624,15 @@ CEntity::SetupBigBuilding(void)
m_level = CTheZones::GetLevelFromPosition(&GetPosition()); m_level = CTheZones::GetLevelFromPosition(&GetPosition());
if(mi->m_lodDistances[0] <= 2000.0f) if(mi->m_lodDistances[0] <= 2000.0f)
bStreamBIGBuilding = true; bStreamBIGBuilding = true;
if(mi->m_lodDistances[0] > 2500.0f || mi->m_ignoreDrawDist) if(m_modelIndex == islandLODindust ||
m_modelIndex == islandLODcomInd ||
m_modelIndex == islandLODcomSub ||
m_modelIndex == islandLODsubInd ||
m_modelIndex == islandLODsubCom ||
mi->m_lodDistances[0] > 5000.0f || mi->m_ignoreDrawDist)
m_level = LEVEL_GENERIC; m_level = LEVEL_GENERIC;
else if(m_level == LEVEL_GENERIC) // else if(m_level == LEVEL_GENERIC)
printf("%s isn't in a level\n", mi->GetModelName()); // printf("%s isn't in a level\n", mi->GetModelName());
} }
float WindTabel[] = { float WindTabel[] = {