diff options
Diffstat (limited to '')
-rw-r--r-- | src/peds/Ped.cpp | 18 | ||||
-rw-r--r-- | src/peds/Population.cpp | 22 |
2 files changed, 22 insertions, 18 deletions
diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 7fc83be3..db6b7ee2 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -2213,15 +2213,18 @@ CPed::BuildPedLists(void) } } else { CVector centre = CEntity::GetBoundCentre(); - CRect rect( - CWorld::GetSectorX(centre.x - 20.0f), - CWorld::GetSectorY(centre.y - 20.0f), - CWorld::GetSectorX(centre.x + 20.0f), - CWorld::GetSectorY(centre.y + 20.0f)); + CRect rect(centre.x - 20.0f, + centre.y - 20.0f, + centre.x + 20.0f, + centre.y + 20.0f); + int xstart = CWorld::GetSectorIndexX(rect.left); + int ystart = CWorld::GetSectorIndexY(rect.top); + int xend = CWorld::GetSectorIndexX(rect.right); + int yend = CWorld::GetSectorIndexY(rect.bottom); gnNumTempPedList = 0; - for(int y = rect.top; y <= rect.bottom; y++) { - for(int x = rect.left; x <= rect.right; x++) { + for(int y = ystart; y <= yend; y++) { + for(int x = xstart; x <= xend; x++) { for (CPtrNode *pedPtrNode = CWorld::GetSector(x,y)->m_lists[ENTITYLIST_PEDS].first; pedPtrNode; pedPtrNode = pedPtrNode->next) { CPed *ped = (CPed*)pedPtrNode->item; if (ped != this && !ped->bInVehicle) { @@ -2229,6 +2232,7 @@ CPed::BuildPedLists(void) if (nThreatReactionRangeMultiplier * 30.0f > dist) { gapTempPedList[gnNumTempPedList] = ped; gnNumTempPedList++; + assert(gnNumTempPedList < ARRAYSIZE(gapTempPedList)); } } } diff --git a/src/peds/Population.cpp b/src/peds/Population.cpp index 9876f946..d87764ff 100644 --- a/src/peds/Population.cpp +++ b/src/peds/Population.cpp @@ -575,7 +575,7 @@ CPopulation::AddToPopulation(float minDist, float maxDist, float minDistOffScree } } // Yeah, float - float maxPossiblePedsForArea = 10.0f * (zoneInfo.pedDensity + zoneInfo.carDensity) * playerInfo->m_fRoadDensity * PedDensityMultiplier * CIniFile::PedNumberMultiplier; + float maxPossiblePedsForArea = (zoneInfo.pedDensity + zoneInfo.carDensity) * playerInfo->m_fRoadDensity * PedDensityMultiplier * CIniFile::PedNumberMultiplier; // maxPossiblePedsForArea = min(maxPossiblePedsForArea, MaxNumberOfPedsInUse); if (ms_nTotalPeds < maxPossiblePedsForArea || addCop) { @@ -637,19 +637,19 @@ CPopulation::AddToPopulation(float minDist, float maxDist, float minDistOffScree if (pedTypeToAdd == PEDTYPE_COP) { // Unused code, ChoosePolicePedOccupation returns COP_STREET. Spawning FBI/SWAT/Army done in somewhere else. - if (modelToAdd != COP_STREET) { - if (modelToAdd == COP_FBI) { - if (!CModelInfo::GetModelInfo(MI_FBI)->GetRwObject()) - return; + if (modelToAdd == COP_STREET) { + if (!CModelInfo::GetModelInfo(MI_COP)->GetRwObject()) + return; - } else if (modelToAdd == COP_SWAT) { - if (!CModelInfo::GetModelInfo(MI_SWAT)->GetRwObject()) - return; + } else if (modelToAdd == COP_FBI) { + if (!CModelInfo::GetModelInfo(MI_FBI)->GetRwObject()) + return; - } else if (modelToAdd == COP_ARMY && !CModelInfo::GetModelInfo(MI_ARMY)->GetRwObject()) { + } else if (modelToAdd == COP_SWAT) { + if (!CModelInfo::GetModelInfo(MI_SWAT)->GetRwObject()) return; - } - } else if (!CModelInfo::GetModelInfo(MI_COP)->GetRwObject()) { + + } else if (modelToAdd == COP_ARMY && !CModelInfo::GetModelInfo(MI_ARMY)->GetRwObject()) { return; } } else if (!CModelInfo::GetModelInfo(modelToAdd)->GetRwObject()) { |