void CityHallZoneComponent::destroyObjectFromWorld(SceneObject* sceneObject, bool sendSelfDestroy) const { ZoneServer* zoneServer = sceneObject->getZoneServer(); if (zoneServer == NULL || zoneServer->isServerShuttingDown()) { ZoneComponent::destroyObjectFromWorld(sceneObject, sendSelfDestroy); return; } ManagedReference<CityRegion*> cityRegion = sceneObject->getCityRegion().get(); if (cityRegion != NULL ) { Locker clocker(cityRegion, sceneObject); if (cityRegion->getCityHall() == sceneObject) { cityRegion->setCityHall(NULL); } clocker.release(); CityManager* cityManager = zoneServer->getCityManager(); cityManager->destroyCity(cityRegion); } ZoneComponent::destroyObjectFromWorld(sceneObject, sendSelfDestroy); }
void ScreenPlayTask::run() { ZoneServer* zoneServer = ServerCore::getZoneServer(); if (zoneServer == NULL || zoneServer->isServerShuttingDown()) return; if (zoneServer->isServerLoading()) { schedule(10000); return; } ManagedReference<SceneObject*> obj = this->obj.get(); if (obj != NULL) { Locker locker(obj); DirectorManager::instance()->activateEvent(this); } else { DirectorManager::instance()->activateEvent(this); } setTaskName(String("ScreenPlayTask " + screenPlay + ":" + taskKey + ":" + args).toCharArray()); }