void SpaceStation::InitStation() { m_adjacentCity = 0; for(int i=0; i<NUM_STATIC_SLOTS; i++) m_staticSlot[i] = false; Random rand(m_sbody->GetSeed()); const bool ground = m_sbody->GetType() == SystemBody::TYPE_STARPORT_ORBITAL ? false : true; m_type = SpaceStationType::RandomStationType(rand, ground); if(m_shipDocking.empty()) { m_shipDocking.reserve(m_type->NumDockingPorts()); for (unsigned int i=0; i<m_type->NumDockingPorts(); i++) { m_shipDocking.push_back(shipDocking_t()); } // only (re)set these if we've not come from the ::Load method m_doorAnimationStep = m_doorAnimationState = 0.0; } assert(m_shipDocking.size() == m_type->NumDockingPorts()); // This SpaceStation's bay ports are an instance of... m_ports = m_type->Ports(); SetStatic(ground); // orbital stations are dynamic now // XXX hack. if we loaded a game then ModelBody::Load already restored the // model and we shouldn't overwrite it if (!GetModel()) SetModel(m_type->ModelName().c_str()); SceneGraph::Model *model = GetModel(); m_navLights.reset(new NavLights(model, 2.2f)); m_navLights->SetEnabled(true); if (ground) SetClipRadius(CITY_ON_PLANET_RADIUS); // overrides setmodel m_doorAnimation = model->FindAnimation("doors"); SceneGraph::ModelSkin skin; skin.SetDecal("pioneer"); if (model->SupportsPatterns()) { skin.SetRandomColors(rand); skin.Apply(model); model->SetPattern(rand.Int32(0, model->GetNumPatterns())); } else { skin.Apply(model); } }
Intro::Intro(Graphics::Renderer *r, int width, int height) : Cutscene(r, width, height) { using Graphics::Light; m_background.reset(new Background::Container(r, UNIVERSE_SEED)); m_ambientColor = Color(0); const Color one = Color::WHITE; const Color two = Color(77, 77, 204, 0); m_lights.push_back(Light(Graphics::Light::LIGHT_DIRECTIONAL, vector3f(0.f, 0.3f, 1.f), one, one)); m_lights.push_back(Light(Graphics::Light::LIGHT_DIRECTIONAL, vector3f(0.f, -1.f, 0.f), two, Color::BLACK)); SceneGraph::ModelSkin skin; skin.SetDecal("pioneer"); skin.SetLabel(Lang::PIONEER); for (std::vector<ShipType::Id>::const_iterator i = ShipType::player_ships.begin(); i != ShipType::player_ships.end(); ++i) { SceneGraph::Model *model = Pi::FindModel(ShipType::types[*i].modelName)->MakeInstance(); skin.SetRandomColors(Pi::rng); skin.Apply(model); model->SetThrust(vector3f(0.f, 0.f, -0.6f), vector3f(0.f)); m_models.push_back(model); } PiRngWrapper rng; std::random_shuffle(m_models.begin(), m_models.end(), rng); m_state = STATE_SELECT; m_modelIndex = 0; }
void CargoBody::Init() { m_hitpoints = 1.0f; SetLabel(Equip::types[m_type].name); SetMassDistributionFromModel(); std::vector<Color> colors; //metallic blue-orangeish color scheme colors.push_back(Color(255, 198, 64)); colors.push_back(Color(0, 222, 255)); colors.push_back(Color(255, 255, 255)); SceneGraph::ModelSkin skin; skin.SetColors(colors); skin.SetDecal("pioneer"); skin.Apply(GetModel()); GetModel()->SetColors(colors); Properties().Set("type", EnumStrings::GetString("EquipType", m_type)); }
void CargoBody::Init() { m_hitpoints = 1.0f; SetLabel(ScopedTable(m_cargo).CallMethod<std::string>("GetName")); SetMassDistributionFromModel(); m_hasSelfdestruct = true; std::vector<Color> colors; //metallic blue-orangeish color scheme colors.push_back(Color(255, 198, 64)); colors.push_back(Color(0, 222, 255)); colors.push_back(Color(255, 255, 255)); SceneGraph::ModelSkin skin; skin.SetColors(colors); skin.SetDecal("pioneer"); skin.Apply(GetModel()); GetModel()->SetColors(colors); Properties().Set("type", ScopedTable(m_cargo).CallMethod<std::string>("GetName")); }
//static void CityOnPlanet::SetCityModelPatterns(const SystemPath &path) { Uint32 _init[5] = { path.systemIndex, Uint32(path.sectorX), Uint32(path.sectorY), Uint32(path.sectorZ), UNIVERSE_SEED }; Random rand(_init, 5); typedef std::set<SceneGraph::Model*, ModelNameComparator> ModelSet; typedef ModelSet::iterator TSetIter; ModelSet modelSet; { for (unsigned int j=0; j < s_buildingList.numBuildings; j++) { SceneGraph::Model *m = s_buildingList.buildings[j].resolvedModel; modelSet.insert(m); } } SceneGraph::ModelSkin skin; for (TSetIter it=modelSet.begin(), itEnd=modelSet.end(); it!=itEnd; ++it) { SceneGraph::Model *m = (*it); if (!m->SupportsPatterns()) continue; skin.SetRandomColors(rand); skin.Apply(m); m->SetPattern(rand.Int32(0, m->GetNumPatterns())); } }