void ModelBody::SetModel(const char *modelName) { m_model = Pi::FindModel(modelName); SetClipRadius(m_model->GetDrawClipRadius()); RebuildCollisionMesh(); }
void ModelBody::SetModel(const char *modelName) { //remove old instance delete m_model; m_model = 0; m_modelName = modelName; //create model instance (some modelbodies, like missiles could avoid this) m_model = Pi::FindModel(m_modelName)->MakeInstance(); SetClipRadius(m_model->GetDrawClipRadius()); RebuildCollisionMesh(); }
void SpaceStation::InitStation() { m_adjacentCity = 0; for(int i=0; i<NUM_STATIC_SLOTS; i++) m_staticSlot[i] = false; MTRand rand(m_sbody->seed); bool ground = m_sbody->type == SystemBody::TYPE_STARPORT_ORBITAL ? false : true; if (ground) m_type = &SpaceStationType::surfaceStationTypes[ rand.Int32(SpaceStationType::surfaceStationTypes.size()) ]; else m_type = &SpaceStationType::orbitalStationTypes[ rand.Int32(SpaceStationType::orbitalStationTypes.size()) ]; SetStatic(ground); // orbital stations are dynamic now SetModel(m_type->modelName.c_str()); if (ground) SetClipRadius(CITY_ON_PLANET_RADIUS); // overrides setmodel }
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); } }
void SpaceStation::InitStation() { m_adjacentCity = 0; for(int i=0; i<NUM_STATIC_SLOTS; i++) m_staticSlot[i] = false; Random rand(m_sbody->seed); bool ground = m_sbody->type == SystemBody::TYPE_STARPORT_ORBITAL ? false : true; if (ground) m_type = &SpaceStationType::surfaceStationTypes[ rand.Int32(SpaceStationType::surfaceStationTypes.size()) ]; else m_type = &SpaceStationType::orbitalStationTypes[ rand.Int32(SpaceStationType::orbitalStationTypes.size()) ]; 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()); if (ground) SetClipRadius(CITY_ON_PLANET_RADIUS); // overrides setmodel }
void ModelBody::SetModel(const char *modelName) { //remove old instance delete m_model; m_model = 0; m_modelName = modelName; //create model instance (some modelbodies, like missiles could avoid this) m_model = Pi::FindModel(m_modelName)->MakeInstance(); m_idleAnimation = m_model->FindAnimation("idle"); SetClipRadius(m_model->GetDrawClipRadius()); m_shields.reset(new Shields(m_model)); RebuildCollisionMesh(); }
void SpaceStation::InitStation() { m_adjacentCity = 0; for(int i=0; i<NUM_STATIC_SLOTS; i++) m_staticSlot[i] = false; Random rand(m_sbody->seed); bool ground = m_sbody->type == SystemBody::TYPE_STARPORT_ORBITAL ? false : true; if (ground) { m_type = &SpaceStationType::surfaceStationTypes[ rand.Int32(SpaceStationType::surfaceStationTypes.size()) ]; } else { m_type = &SpaceStationType::orbitalStationTypes[ rand.Int32(SpaceStationType::orbitalStationTypes.size()) ]; } 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 groups is an instance of... mBayGroups = m_type->bayGroups; 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()); m_navLights.Reset(new NavLights(GetModel(), 2.2f)); m_navLights->SetEnabled(true); if (ground) SetClipRadius(CITY_ON_PLANET_RADIUS); // overrides setmodel m_doorAnimation = GetModel()->FindAnimation("doors"); }