std::auto_ptr<Actor> CtfSoldierSpawnSystem::Spawn( ::core::ClientData& clientData, Team::Type team ) { map::SpawnPoints_t spawnPoints( map::ctf::CtfSoldierSpawnPointMapElementSystem::Get()->GetActiveSpawnPoints( team ) ); map::SpawnPoint spawnPoint( spawnPoints[rand() % spawnPoints.size()] ); std::auto_ptr<Actor> player( mActorFactory( mPlayerAutoId ) ); Opt<ITeamComponent> teamC( player->Get<ITeamComponent>() ); if ( teamC.IsValid() ) { teamC->SetTeam( team ); } return SoldierSpawnSystem::Get()->Spawn( clientData, spawnPoint, player ); }
void Map::createSpawns(World* world, const Vector& range, const Vector& minimum, int numberOfPoints) { for (int i=0; i<numberOfPoints; ++i) { Vector spawnPoint(Vector(random(range.x, minimum.x), random(range.y, minimum.y), random(range.z, minimum.z))); bool properSpawnPoint = false; while (!properSpawnPoint) { properSpawnPoint = !world->collidesWithFloors( createSpawnArea(spawnPoint, 10)); if (!properSpawnPoint) spawnPoint.y += 10; } world->spawnPoints.push_back(spawnPoint); } }
std::auto_ptr<Actor> SoldierSpawnSystem::Spawn( core::ClientData& clientData ) { map::SpawnPoints_t spawnPoints( map::SoldierSpawnPointMapElementSystem::Get()->GetActiveSpawnPoints() ); map::SpawnPoint spawnPoint( spawnPoints[RandomGenerator::global()() % spawnPoints.size()] ); return Spawn( clientData, spawnPoint ); }