void ZoneImplementation::updateCityRegions() { info("scheduling updates for " + String::valueOf(cityRegionUpdateVector.size()) + " cities", true); for (int i = 0; i < cityRegionUpdateVector.size(); ++i) { CityRegion* city = cityRegionUpdateVector.get(i); Locker locker(city); Time* nextUpdateTime = city->getNextUpdateTime(); int seconds = -1 * round(nextUpdateTime->miliDifference() / 1000.f); if (seconds < 0) //If the update occurred in the past, force an immediate update. seconds = 0; city->setRadius(city->getRadius()); city->setLoaded(); city->cleanupCitizens(); //city->cleanupDuplicateCityStructures(); city->rescheduleUpdateEvent(seconds); if (city->hasAssessmentPending()) { Time* nextAssessmentTime = city->getNextAssessmentTime(); int seconds2 = -1 * round(nextAssessmentTime->miliDifference() / 1000.f); if (seconds2 < 0) seconds2 = 0; city->scheduleCitizenAssessment(seconds2); } if (!city->isRegistered()) continue; if (city->getRegionsCount() == 0) continue; Region* region = city->getRegion(0); unregisterObjectWithPlanetaryMap(region); registerObjectWithPlanetaryMap(region); for(int i = 0; i < city->getStructuresCount(); i++){ ManagedReference<StructureObject*> structure = city->getCivicStructure(i); unregisterObjectWithPlanetaryMap(structure); registerObjectWithPlanetaryMap(structure); } for(int i = 0; i < city->getCommercialStructuresCount(); i++){ ManagedReference<StructureObject*> structure = city->getCommercialStructure(i); unregisterObjectWithPlanetaryMap(structure); registerObjectWithPlanetaryMap(structure); } } cityRegionUpdateVector.removeAll(); }
void ZoneImplementation::dropSceneObject(SceneObject* object) { SceneObject* oldObject = objectMap->remove(object->getObjectID()); unregisterObjectWithPlanetaryMap(object); if (oldObject != NULL && oldObject->isAiAgent()) { spawnedAiAgents.decrement(); } }
void ZoneImplementation::dropSceneObject(SceneObject* object) { objectMap->remove(object->getObjectID()); unregisterObjectWithPlanetaryMap(object); }