mirror of
https://github.com/halpz/re3.git
synced 2025-05-12 09:06:39 +03:00
Remove Miami stuff
This commit is contained in:
parent
dfe0642195
commit
9960c41193
50 changed files with 14 additions and 2028 deletions
|
@ -194,7 +194,6 @@ CRenderer::RenderRoads(void)
|
|||
t = (CTreadable*)ms_aVisibleEntityPtrs[i];
|
||||
if(t->IsBuilding() && t->GetIsATreadable()){
|
||||
#ifndef MASTER
|
||||
#ifndef MIAMI
|
||||
if(gbShowCarRoadGroups || gbShowPedRoadGroups){
|
||||
int ind = 0;
|
||||
if(gbShowCarRoadGroups)
|
||||
|
@ -203,7 +202,6 @@ CRenderer::RenderRoads(void)
|
|||
ind += ThePaths.m_pathNodes[t->m_nodeIndices[PATH_PED][0]].group;
|
||||
SetAmbientColoursToIndicateRoadGroup(ind);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
RenderOneRoad(t);
|
||||
#ifndef MASTER
|
||||
|
@ -328,7 +326,6 @@ enum Visbility
|
|||
int32
|
||||
CRenderer::SetupEntityVisibility(CEntity *ent)
|
||||
{
|
||||
#ifndef MIAMI
|
||||
CSimpleModelInfo *mi = (CSimpleModelInfo*)CModelInfo::GetModelInfo(ent->m_modelIndex);
|
||||
CTimeModelInfo *ti;
|
||||
int32 other;
|
||||
|
@ -474,164 +471,11 @@ CRenderer::SetupEntityVisibility(CEntity *ent)
|
|||
ent->bDistanceFade = true;
|
||||
return VIS_OFFSCREEN; // Why this?
|
||||
}
|
||||
#else
|
||||
CSimpleModelInfo *mi = (CSimpleModelInfo*)CModelInfo::GetModelInfo(ent->m_modelIndex);
|
||||
CTimeModelInfo *ti;
|
||||
int32 other;
|
||||
float dist;
|
||||
|
||||
bool request = true;
|
||||
if(mi->GetModelType() == MITYPE_TIME){
|
||||
ti = (CTimeModelInfo*)mi;
|
||||
other = ti->GetOtherTimeModel();
|
||||
if(CClock::GetIsTimeInRange(ti->GetTimeOn(), ti->GetTimeOff())){
|
||||
// don't fade in, or between time objects
|
||||
if(CANTIMECULL)
|
||||
ti->m_alpha = 255;
|
||||
}else{
|
||||
// Hide if possible
|
||||
if(CANTIMECULL)
|
||||
return VIS_INVISIBLE;
|
||||
// can't cull, so we'll try to draw this one, but don't request
|
||||
// it since what we really want is the other one.
|
||||
request = false;
|
||||
}
|
||||
}else{
|
||||
// TODO(MIAMI): weapon
|
||||
if(mi->GetModelType() != MITYPE_SIMPLE){
|
||||
if(FindPlayerVehicle() == ent &&
|
||||
TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_1STPERSON){
|
||||
// Player's vehicle in first person mode
|
||||
if(TheCamera.Cams[TheCamera.ActiveCam].DirectionWasLooking == LOOKING_FORWARD ||
|
||||
ent->GetModelIndex() == MI_RHINO ||
|
||||
ent->GetModelIndex() == MI_COACH ||
|
||||
TheCamera.m_bInATunnelAndABigVehicle){
|
||||
ent->bNoBrightHeadLights = true;
|
||||
}else{
|
||||
m_pFirstPersonVehicle = (CVehicle*)ent;
|
||||
ent->bNoBrightHeadLights = false;
|
||||
}
|
||||
return VIS_OFFSCREEN;
|
||||
}else{
|
||||
// All sorts of Clumps
|
||||
if(ent->m_rwObject == nil || !ent->bIsVisible)
|
||||
return VIS_INVISIBLE;
|
||||
// TODO(MIAMI): occlusion
|
||||
if(!ent->GetIsOnScreen())
|
||||
return VIS_OFFSCREEN;
|
||||
if(ent->bDrawLast){
|
||||
dist = (ent->GetPosition() - ms_vecCameraPosition).Magnitude();
|
||||
CVisibilityPlugins::InsertEntityIntoSortedList(ent, dist);
|
||||
ent->bDistanceFade = false;
|
||||
return VIS_INVISIBLE;
|
||||
}else
|
||||
return VIS_VISIBLE;
|
||||
}
|
||||
return VIS_INVISIBLE;
|
||||
}
|
||||
// TODO(MIAMI): this is different
|
||||
if(ent->IsObject() &&
|
||||
((CObject*)ent)->ObjectCreatedBy == TEMP_OBJECT){
|
||||
if(ent->m_rwObject == nil || !ent->bIsVisible)
|
||||
return VIS_INVISIBLE;
|
||||
return ent->GetIsOnScreen() ? VIS_VISIBLE : VIS_OFFSCREEN;
|
||||
}
|
||||
}
|
||||
|
||||
// Simple ModelInfo
|
||||
|
||||
// TODO(MIAMI): area
|
||||
|
||||
dist = (ent->GetPosition() - ms_vecCameraPosition).Magnitude();
|
||||
|
||||
if(LOD_DISTANCE < dist && dist < mi->GetLargestLodDistance() + FADE_DISTANCE)
|
||||
dist += mi->GetLargestLodDistance() - 300.0f;
|
||||
|
||||
if(ent->IsObject() && ent->bRenderDamaged)
|
||||
mi->m_isDamaged = true;
|
||||
|
||||
RpAtomic *a = mi->GetAtomicFromDistance(dist);
|
||||
if(a){
|
||||
mi->m_isDamaged = false;
|
||||
if(ent->m_rwObject == nil)
|
||||
ent->CreateRwObject();
|
||||
assert(ent->m_rwObject);
|
||||
RpAtomic *rwobj = (RpAtomic*)ent->m_rwObject;
|
||||
// Make sure our atomic uses the right geometry and not
|
||||
// that of an atomic for another draw distance.
|
||||
if(RpAtomicGetGeometry(a) != RpAtomicGetGeometry(rwobj))
|
||||
RpAtomicSetGeometry(rwobj, RpAtomicGetGeometry(a), rpATOMICSAMEBOUNDINGSPHERE); // originally 5 (mistake?)
|
||||
mi->IncreaseAlpha();
|
||||
if(ent->m_rwObject == nil || !ent->bIsVisible)
|
||||
return VIS_INVISIBLE;
|
||||
|
||||
if(!ent->GetIsOnScreen()){
|
||||
mi->m_alpha = 255;
|
||||
return VIS_OFFSCREEN;
|
||||
}
|
||||
|
||||
if(mi->m_alpha != 255){
|
||||
CVisibilityPlugins::InsertEntityIntoSortedList(ent, dist);
|
||||
ent->bDistanceFade = true;
|
||||
return VIS_INVISIBLE;
|
||||
}
|
||||
|
||||
if(mi->m_drawLast || ent->bDrawLast){
|
||||
if(CVisibilityPlugins::InsertEntityIntoSortedList(ent, dist)){
|
||||
ent->bDistanceFade = false;
|
||||
return VIS_INVISIBLE;
|
||||
}
|
||||
}
|
||||
return VIS_VISIBLE;
|
||||
}
|
||||
|
||||
// Object is not loaded, figure out what to do
|
||||
|
||||
if(mi->m_noFade){
|
||||
mi->m_isDamaged = false;
|
||||
// request model
|
||||
if(dist - STREAM_DISTANCE < mi->GetLargestLodDistance() && request)
|
||||
return VIS_STREAMME;
|
||||
return VIS_INVISIBLE;
|
||||
}
|
||||
|
||||
// We might be fading
|
||||
|
||||
a = mi->GetAtomicFromDistance(dist - FADE_DISTANCE);
|
||||
mi->m_isDamaged = false;
|
||||
if(a == nil){
|
||||
// request model
|
||||
if(dist - FADE_DISTANCE - STREAM_DISTANCE < mi->GetLargestLodDistance() && request)
|
||||
return VIS_STREAMME;
|
||||
return VIS_INVISIBLE;
|
||||
}
|
||||
|
||||
if(ent->m_rwObject == nil)
|
||||
ent->CreateRwObject();
|
||||
assert(ent->m_rwObject);
|
||||
RpAtomic *rwobj = (RpAtomic*)ent->m_rwObject;
|
||||
if(RpAtomicGetGeometry(a) != RpAtomicGetGeometry(rwobj))
|
||||
RpAtomicSetGeometry(rwobj, RpAtomicGetGeometry(a), rpATOMICSAMEBOUNDINGSPHERE); // originally 5 (mistake?)
|
||||
mi->IncreaseAlpha();
|
||||
if(ent->m_rwObject == nil || !ent->bIsVisible)
|
||||
return VIS_INVISIBLE;
|
||||
|
||||
// TODO(MIAMI): occlusion
|
||||
if(!ent->GetIsOnScreen()){
|
||||
mi->m_alpha = 255;
|
||||
return VIS_OFFSCREEN;
|
||||
}else{
|
||||
CVisibilityPlugins::InsertEntityIntoSortedList(ent, dist);
|
||||
ent->bDistanceFade = true;
|
||||
return VIS_OFFSCREEN; // Why this?
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
int32
|
||||
CRenderer::SetupBigBuildingVisibility(CEntity *ent)
|
||||
{
|
||||
#ifndef MIAMI
|
||||
CSimpleModelInfo *mi = (CSimpleModelInfo *)CModelInfo::GetModelInfo(ent->GetModelIndex());
|
||||
CTimeModelInfo *ti;
|
||||
int32 other;
|
||||
|
@ -713,121 +557,6 @@ CRenderer::SetupBigBuildingVisibility(CEntity *ent)
|
|||
if(ent->IsVisibleComplex())
|
||||
CVisibilityPlugins::InsertEntityIntoSortedList(ent, dist);
|
||||
return VIS_INVISIBLE;
|
||||
#else
|
||||
CSimpleModelInfo *mi = (CSimpleModelInfo*)CModelInfo::GetModelInfo(ent->m_modelIndex);
|
||||
CTimeModelInfo *ti;
|
||||
int32 other;
|
||||
|
||||
// TODO(MIAMI): area
|
||||
|
||||
bool request = true;
|
||||
if(mi->GetModelType() == MITYPE_TIME){
|
||||
ti = (CTimeModelInfo*)mi;
|
||||
other = ti->GetOtherTimeModel();
|
||||
if(CClock::GetIsTimeInRange(ti->GetTimeOn(), ti->GetTimeOff())){
|
||||
// don't fade in, or between time objects
|
||||
if(CANTIMECULL)
|
||||
ti->m_alpha = 255;
|
||||
}else{
|
||||
// Hide if possible
|
||||
if(CANTIMECULL){
|
||||
ent->DeleteRwObject();
|
||||
return VIS_INVISIBLE;
|
||||
}
|
||||
// can't cull, so we'll try to draw this one, but don't request
|
||||
// it since what we really want is the other one.
|
||||
request = false;
|
||||
}
|
||||
}else if(mi->GetModelType() == MITYPE_VEHICLE)
|
||||
return ent->IsVisible() ? VIS_VISIBLE : VIS_INVISIBLE;
|
||||
|
||||
float dist = (ms_vecCameraPosition-ent->GetPosition()).Magnitude();
|
||||
CSimpleModelInfo *nonLOD = mi->GetRelatedModel();
|
||||
|
||||
// Find out whether to draw below near distance.
|
||||
// This is only the case if there is a non-LOD which is either not
|
||||
// loaded or not completely faded in yet.
|
||||
if(dist < mi->GetNearDistance() && dist < LOD_DISTANCE){
|
||||
// No non-LOD or non-LOD is completely visible.
|
||||
if(nonLOD == nil ||
|
||||
nonLOD->GetRwObject() && nonLOD->m_alpha == 255)
|
||||
return VIS_INVISIBLE;
|
||||
|
||||
// But if it is a time object, we'd rather draw the wrong
|
||||
// non-LOD than the right LOD.
|
||||
if(nonLOD->GetModelType() == MITYPE_TIME){
|
||||
ti = (CTimeModelInfo*)nonLOD;
|
||||
other = ti->GetOtherTimeModel();
|
||||
if(other != -1 && CModelInfo::GetModelInfo(other)->GetRwObject())
|
||||
return VIS_INVISIBLE;
|
||||
}
|
||||
}
|
||||
|
||||
RpAtomic *a = mi->GetFirstAtomicFromDistance(dist);
|
||||
if(a){
|
||||
if(ent->m_rwObject == nil)
|
||||
ent->CreateRwObject();
|
||||
assert(ent->m_rwObject);
|
||||
RpAtomic *rwobj = (RpAtomic*)ent->m_rwObject;
|
||||
|
||||
// Make sure our atomic uses the right geometry and not
|
||||
// that of an atomic for another draw distance.
|
||||
if(RpAtomicGetGeometry(a) != RpAtomicGetGeometry(rwobj))
|
||||
RpAtomicSetGeometry(rwobj, RpAtomicGetGeometry(a), rpATOMICSAMEBOUNDINGSPHERE); // originally 5 (mistake?)
|
||||
mi->IncreaseAlpha();
|
||||
// TODO(MIAMI): occlusion
|
||||
if(!ent->IsVisibleComplex()){
|
||||
mi->m_alpha = 255;
|
||||
return VIS_INVISIBLE;
|
||||
}
|
||||
|
||||
if(mi->m_alpha != 255){
|
||||
CVisibilityPlugins::InsertEntityIntoSortedList(ent, dist);
|
||||
ent->bDistanceFade = true;
|
||||
return VIS_INVISIBLE;
|
||||
}
|
||||
|
||||
if(mi->m_drawLast){
|
||||
CVisibilityPlugins::InsertEntityIntoSortedList(ent, dist);
|
||||
ent->bDistanceFade = false;
|
||||
return VIS_INVISIBLE;
|
||||
}
|
||||
return VIS_VISIBLE;
|
||||
}
|
||||
|
||||
if(mi->m_noFade){
|
||||
ent->DeleteRwObject();
|
||||
return VIS_INVISIBLE;
|
||||
}
|
||||
|
||||
|
||||
// get faded atomic
|
||||
a = mi->GetFirstAtomicFromDistance(dist - FADE_DISTANCE);
|
||||
if(a == nil){
|
||||
if(ent->bStreamBIGBuilding && dist-STREAM_DISTANCE < mi->GetLodDistance(0) && request){
|
||||
return ent->GetIsOnScreen() ? VIS_STREAMME : VIS_INVISIBLE;
|
||||
}else{
|
||||
ent->DeleteRwObject();
|
||||
return VIS_INVISIBLE;
|
||||
}
|
||||
}
|
||||
|
||||
// Fade...
|
||||
if(ent->m_rwObject == nil)
|
||||
ent->CreateRwObject();
|
||||
assert(ent->m_rwObject);
|
||||
RpAtomic *rwobj = (RpAtomic*)ent->m_rwObject;
|
||||
if(RpAtomicGetGeometry(a) != RpAtomicGetGeometry(rwobj))
|
||||
RpAtomicSetGeometry(rwobj, RpAtomicGetGeometry(a), rpATOMICSAMEBOUNDINGSPHERE); // originally 5 (mistake?)
|
||||
mi->IncreaseAlpha();
|
||||
// TODO(MIAMI): occlusion
|
||||
if(ent->IsVisibleComplex()){
|
||||
CVisibilityPlugins::InsertEntityIntoSortedList(ent, dist);
|
||||
ent->bDistanceFade = true;
|
||||
}else
|
||||
mi->m_alpha = 255;
|
||||
return VIS_INVISIBLE;
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -974,11 +703,7 @@ CRenderer::ScanWorld(void)
|
|||
}
|
||||
ScanSectorPoly(poly, 3, ScanSectorList);
|
||||
|
||||
#ifndef MIAMI
|
||||
ScanBigBuildingList(CWorld::GetBigBuildingList(CCollision::ms_collisionInMemory));
|
||||
#else
|
||||
ScanBigBuildingList(CWorld::GetBigBuildingList(CGame::currLevel));
|
||||
#endif
|
||||
ScanBigBuildingList(CWorld::GetBigBuildingList(LEVEL_NONE));
|
||||
}
|
||||
}
|
||||
|
@ -1223,27 +948,11 @@ CRenderer::ScanBigBuildingList(CPtrList &list)
|
|||
CPtrNode *node;
|
||||
CEntity *ent;
|
||||
|
||||
#ifndef MIAMI
|
||||
for(node = list.first; node; node = node->next){
|
||||
ent = (CEntity*)node->item;
|
||||
if(!ent->bZoneCulled && SetupBigBuildingVisibility(ent) == VIS_VISIBLE)
|
||||
ms_aVisibleEntityPtrs[ms_nNoOfVisibleEntities++] = ent;
|
||||
}
|
||||
#else
|
||||
// TODO(MIAMI): some flags and such
|
||||
for(node = list.first; node; node = node->next){
|
||||
ent = (CEntity*)node->item;
|
||||
switch(SetupBigBuildingVisibility(ent)){
|
||||
case VIS_VISIBLE:
|
||||
ms_aVisibleEntityPtrs[ms_nNoOfVisibleEntities++] = ent;
|
||||
break;
|
||||
case VIS_STREAMME:
|
||||
if(!CStreaming::ms_disableStreaming)
|
||||
CStreaming::RequestModel(ent->GetModelIndex(), 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue