diff options
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r-- | src/render/Renderer.cpp | 61 |
1 files changed, 29 insertions, 32 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 3d308c52..714ff6e6 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -91,9 +91,7 @@ CRenderer::RenderOneRoad(CEntity *e) if(gbDontRenderBuildings) return; if(gbShowCollisionPolys) - CCollision::DrawColModel_Coloured(e->GetMatrix(), - *CModelInfo::GetModelInfo(e->m_modelIndex)->GetColModel(), - e->m_modelIndex); + CCollision::DrawColModel_Coloured(e->GetMatrix(), *CModelInfo::GetModelInfo(e->GetModelIndex())->GetColModel(), e->GetModelIndex()); else e->Render(); } @@ -109,9 +107,7 @@ CRenderer::RenderOneNonRoad(CEntity *e) #ifndef MASTER if(gbShowCollisionPolys){ if(!e->IsVehicle()){ - CCollision::DrawColModel_Coloured(e->GetMatrix(), - *CModelInfo::GetModelInfo(e->m_modelIndex)->GetColModel(), - e->m_modelIndex); + CCollision::DrawColModel_Coloured(e->GetMatrix(), *CModelInfo::GetModelInfo(e->GetModelIndex())->GetColModel(), e->GetModelIndex()); return; } }else if(e->IsBuilding()){ @@ -336,7 +332,7 @@ CRenderer::SetupEntityVisibility(CEntity *ent) float dist; bool request = true; - if(mi->m_type == MITYPE_TIME){ + if (mi->GetModelType() == MITYPE_TIME) { ti = (CTimeModelInfo*)mi; other = ti->GetOtherTimeModel(); if(CClock::GetIsTimeInRange(ti->GetTimeOn(), ti->GetTimeOff())){ @@ -352,7 +348,7 @@ CRenderer::SetupEntityVisibility(CEntity *ent) request = false; } }else{ - if(mi->m_type != MITYPE_SIMPLE){ + if (mi->GetModelType() != MITYPE_SIMPLE) { if(FindPlayerVehicle() == ent && TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_1STPERSON){ // Player's vehicle in first person mode @@ -382,7 +378,7 @@ CRenderer::SetupEntityVisibility(CEntity *ent) } return VIS_INVISIBLE; } - if(ent->m_type == ENTITY_TYPE_OBJECT && + if(ent->IsObject() && ((CObject*)ent)->ObjectCreatedBy == TEMP_OBJECT){ if(ent->m_rwObject == nil || !ent->bIsVisible) return VIS_INVISIBLE; @@ -399,12 +395,12 @@ CRenderer::SetupEntityVisibility(CEntity *ent) if(LOD_DISTANCE + STREAM_DISTANCE < dist && dist < mi->GetLargestLodDistance()) dist = mi->GetLargestLodDistance(); - if(ent->m_type == ENTITY_TYPE_OBJECT && ent->bRenderDamaged) + if(ent->IsObject() && ent->bRenderDamaged) mi->m_isDamaged = true; RpAtomic *a = mi->GetAtomicFromDistance(dist); if(a){ - mi->m_isDamaged = 0; + mi->m_isDamaged = false; if(ent->m_rwObject == nil) ent->CreateRwObject(); assert(ent->m_rwObject); @@ -480,20 +476,20 @@ CRenderer::SetupEntityVisibility(CEntity *ent) int32 CRenderer::SetupBigBuildingVisibility(CEntity *ent) { - CSimpleModelInfo *mi = (CSimpleModelInfo*)CModelInfo::GetModelInfo(ent->m_modelIndex); + CSimpleModelInfo *mi = (CSimpleModelInfo *)CModelInfo::GetModelInfo(ent->GetModelIndex()); CTimeModelInfo *ti; int32 other; - if(mi->m_type == MITYPE_TIME){ + if (mi->GetModelType() == MITYPE_TIME) { ti = (CTimeModelInfo*)mi; other = ti->GetOtherTimeModel(); // Hide objects not in time range if possible if(CANTIMECULL) if(!CClock::GetIsTimeInRange(ti->GetTimeOn(), ti->GetTimeOff())) - return 0; + return VIS_INVISIBLE; // Draw like normal - }else if(mi->m_type == MITYPE_VEHICLE) - return ent->IsVisible(); + } else if (mi->GetModelType() == MITYPE_VEHICLE) + return ent->IsVisible() ? VIS_VISIBLE : VIS_INVISIBLE; float dist = (ms_vecCameraPosition-ent->GetPosition()).Magnitude(); CSimpleModelInfo *nonLOD = mi->GetRelatedModel(); @@ -505,15 +501,15 @@ CRenderer::SetupBigBuildingVisibility(CEntity *ent) // No non-LOD or non-LOD is completely visible. if(nonLOD == nil || nonLOD->GetRwObject() && nonLOD->m_alpha == 255) - return 0; + return VIS_INVISIBLE; // But if it is a time object, we'd rather draw the wrong // non-LOD than the right LOD. - if(nonLOD->m_type == MITYPE_TIME){ + if (nonLOD->GetModelType() == MITYPE_TIME) { ti = (CTimeModelInfo*)nonLOD; other = ti->GetOtherTimeModel(); if(other != -1 && CModelInfo::GetModelInfo(other)->GetRwObject()) - return 0; + return VIS_INVISIBLE; } } @@ -529,18 +525,18 @@ CRenderer::SetupBigBuildingVisibility(CEntity *ent) if(RpAtomicGetGeometry(a) != RpAtomicGetGeometry(rwobj)) RpAtomicSetGeometry(rwobj, RpAtomicGetGeometry(a), rpATOMICSAMEBOUNDINGSPHERE); // originally 5 (mistake?) if(!ent->IsVisibleComplex()) - return 0; + return VIS_INVISIBLE; if(mi->m_drawLast){ CVisibilityPlugins::InsertEntityIntoSortedList(ent, dist); - ent->bDistanceFade = 0; - return 0; + ent->bDistanceFade = false; + return VIS_INVISIBLE; } - return 1; + return VIS_VISIBLE; } if(mi->m_noFade){ ent->DeleteRwObject(); - return 0; + return VIS_INVISIBLE; } @@ -548,7 +544,7 @@ CRenderer::SetupBigBuildingVisibility(CEntity *ent) a = mi->GetAtomicFromDistance(dist - FADE_DISTANCE); if(a == nil){ ent->DeleteRwObject(); - return 0; + return VIS_INVISIBLE; } // Fade... @@ -560,7 +556,7 @@ CRenderer::SetupBigBuildingVisibility(CEntity *ent) RpAtomicSetGeometry(rwobj, RpAtomicGetGeometry(a), rpATOMICSAMEBOUNDINGSPHERE); // originally 5 (mistake?) if(ent->IsVisibleComplex()) CVisibilityPlugins::InsertEntityIntoSortedList(ent, dist); - return 0; + return VIS_INVISIBLE; } void @@ -954,7 +950,7 @@ CRenderer::ScanBigBuildingList(CPtrList &list) for(node = list.first; node; node = node->next){ ent = (CEntity*)node->item; - if(!ent->bZoneCulled && SetupBigBuildingVisibility(ent) == 1) + if(!ent->bZoneCulled && SetupBigBuildingVisibility(ent) == VIS_VISIBLE) ms_aVisibleEntityPtrs[ms_nNoOfVisibleEntities++] = ent; } } @@ -1108,7 +1104,8 @@ CRenderer::ScanSectorList_RequestModels(CPtrList *lists) if(ent->m_scanCode == CWorld::GetCurrentScanCode()) continue; // already seen ent->m_scanCode = CWorld::GetCurrentScanCode(); - if(IsEntityCullZoneVisible(ent) && ShouldModelBeStreamed(ent)) + if(IsEntityCullZoneVisible(ent)) + if(ShouldModelBeStreamed(ent)) CStreaming::RequestModel(ent->GetModelIndex(), 0); } } @@ -1145,7 +1142,7 @@ CRenderer::SortBIGBuildingsForSectorList(CPtrList *list) bool CRenderer::ShouldModelBeStreamed(CEntity *ent) { - CSimpleModelInfo *mi = (CSimpleModelInfo*)CModelInfo::GetModelInfo(ent->m_modelIndex); + CSimpleModelInfo *mi = (CSimpleModelInfo *)CModelInfo::GetModelInfo(ent->GetModelIndex()); float dist = (ent->GetPosition() - ms_vecCameraPosition).Magnitude(); if(mi->m_noFade) return dist - STREAM_DISTANCE < mi->GetLargestLodDistance(); @@ -1162,7 +1159,7 @@ CRenderer::IsEntityCullZoneVisible(CEntity *ent) if(ent->bZoneCulled) return false; - switch(ent->m_type){ + switch(ent->GetType()){ case ENTITY_TYPE_VEHICLE: return IsVehicleCullZoneVisible(ent); case ENTITY_TYPE_PED: @@ -1176,7 +1173,7 @@ CRenderer::IsEntityCullZoneVisible(CEntity *ent) return !(ped->m_pCurSurface && ped->m_pCurSurface->bZoneCulled2); case ENTITY_TYPE_OBJECT: obj = (CObject*)ent; - if(!obj->bIsStatic) + if(!obj->IsStatic()) return true; return !(obj->m_pCurSurface && obj->m_pCurSurface->bZoneCulled2); } @@ -1187,7 +1184,7 @@ bool CRenderer::IsVehicleCullZoneVisible(CEntity *ent) { CVehicle *v = (CVehicle*)ent; - switch(v->m_status) + switch(v->GetStatus()) case STATUS_SIMPLE: case STATUS_PHYSICS: case STATUS_ABANDONED: |