//------------------------------------------------------------------------ void CVehicleMovementWarrior::Collapsed(bool collapsed) { if(collapsed && !m_collapsed) { m_collapsed = true; EnableMovementProcessing(false); m_bEngineAlwaysOn = false; SGameObjectEvent event(eCGE_Event_Collapsed, eGOEF_ToScriptSystem); m_pVehicle->GetGameObject()->SendEvent(event); } else if(!collapsed && m_collapsed) { m_collapsed = false; m_collapseTimer = -1.f; m_platformDown = false; // just reset damage for now m_damage = 0.f; m_thrustersDamaged = 0; ResetThrusters(); for(std::vector<SExhaustStatus>::iterator it = m_paStats.exhaustStats.begin(); it != m_paStats.exhaustStats.end(); ++it) { it->enabled = 1; } m_pVehicle->GetGameObject()->DisableUpdateSlot(m_pVehicle, IVehicle::eVUS_EnginePowered); EnableMovementProcessing(true); } }
void LEM::SeparateStage (UINT stage) { ResetThrusters(); VESSELSTATUS vs1; VECTOR3 ofs1 = _V(0,-5,0); VECTOR3 vel1 = _V(0,0,0); if (stage == 1) { GetStatus (vs1); vs1.eng_main = vs1.eng_hovr = 0.0; VECTOR3 rofs1, rvel1 = {vs1.rvel.x, vs1.rvel.y, vs1.rvel.z}; Local2Global (ofs1, vs1.rpos); GlobalRot (vel1, rofs1); vs1.rvel.x = rvel1.x+rofs1.x; vs1.rvel.y = rvel1.y+rofs1.y; vs1.rvel.z = rvel1.z+rofs1.z; vs1.vrot.x = 0.0; vs1.vrot.y = 0.0; vs1.vrot.z = 0.0; GetStatus (vs1); // Wrong sound, is Saturn staging // StageS.play(NOLOOP, 150); char VName[256]; strcpy (VName, GetName()); strcat (VName, "-DESCENTSTG"); hdsc = oapiCreateVessel(VName, "ProjectApollo/sat5LMDSC", vs1); SetLmAscentHoverStage(); } }
//------------------------------------------------------------------------ void CVehicleMovementWarrior::Reset() { CVehicleMovementHovercraft::Reset(); if(IsCollapsing() || IsCollapsed()) { m_pVehicle->GetGameObject()->DisableUpdateSlot(m_pVehicle, IVehicle::eVUS_EnginePowered); } if(IsCollapsing()) { m_bEngineAlwaysOn = false; } m_thrustersDamaged = 0; m_collapseTimer = -1.f; m_platformDown = false; m_collapsed = false; ResetThrusters(); }