public override void OnLoad(ConfigNode node) { base.OnLoad(node); if (string.IsNullOrEmpty(configNodeData)) { configNodeData = node.ToString(); } chuteState = (ChuteState)Enum.Parse(typeof(ChuteState), chutePersistence); initialize(); }
public void PrepareLand() { if (State == ChuteState.Landing) { return; } State = ChuteState.Landing; m_Animator.SetTrigger("Landing"); // 断线重连有可能没执行到DeployChute函数,m_ChuteAnimator为空 if (m_ChuteAnimator != null) { m_ChuteAnimator.SetTrigger("Landing"); } m_Drag = LandingDrag; }
public void DeployChute(GameObject chuteGameObject) { if (State == ChuteState.Deployed) { return; } JoystickAdaptor.Delta = 1.5f; m_ChuteGameObject = chuteGameObject; m_ChuteAnimator = chuteGameObject.GetComponent <Animator>(); Transform pack_root = chuteGameObject.transform.Find("Pack_Root"); Transform pack_attach = chuteGameObject.transform.Find("Pack_Root/Pack_Attach"); Transform chest = transform.Find("Main/Root_M/BackA_M/BackB_M/Chest_M"); chuteGameObject.transform.parent = null; chuteGameObject.transform.position = transform.position; chuteGameObject.transform.rotation = transform.rotation; chuteGameObject.AddComponent <ObjectToMove>(); pack_attach.SetParent(chest, true); transform.SetParent(pack_root, true); transform.localPosition = new Vector3(0, 0, -4.6f); pack_attach.transform.localPosition = Vector3.zero; pack_attach.transform.localRotation = Quaternion.Euler(-5.231f, -90, -90); #if UNITY_EDITOR Debug.LogWarning("DeployChute begin"); #endif State = ChuteState.Deployed; m_Rigidbody.useGravity = true; m_Drag = AirborneDrag; Velocity.x = Velocity.z = 0; Velocity.y *= ParachuteCoefficient; m_Rigidbody.velocity = Vector3.zero; m_Animator.SetTrigger("Parachute"); m_Animator.SetFloat("Forward", 0); m_Animator.SetFloat("Sideslip", 0); m_ChuteAnimator.SetTrigger("Pack_Parachute"); }
public void Landed() { if (State == ChuteState.Landed) { return; } if (State != ChuteState.Landing) { PrepareLand(); } CutChute(); #if UNITY_EDITOR Debug.LogWarning("Landed"); #endif State = ChuteState.Landed; m_Rigidbody.useGravity = true; m_Rigidbody.velocity = Vector3.zero; m_Animator.SetTrigger("Landed"); m_Drag = 0; }
private void setChuteState(ChuteState newState) { chuteState = newState; this.chutePersistence = chuteState.ToString(); switch (chuteState) { case ChuteState.CUT: enableChuteRenders(false, false); chuteStatusText = "Cut"; break; case ChuteState.RETRACTED: enableChuteRenders(false, false); if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.RETRACTED, 0, 0, 0); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.RETRACTED, 0, 0, 0); //status text set during update tick break; case ChuteState.ARMED: enableChuteRenders(false, false); if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.RETRACTED, 0, 0, 0); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.RETRACTED, 0, 0, 0); //status text set during update tick break; case ChuteState.DROGUE_DEPLOYING_SEMI: enableChuteRenders(true, false); deployTime = drogueSemiDeploySpeed; chuteStatusText = "Drogue Semi-Deploying"; if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.DEPLOYING_SEMI, 0, 0, 0); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.RETRACTED, 0, 0, 0); break; case ChuteState.DROGUE_SEMI_DEPLOYED: enableChuteRenders(true, false); chuteStatusText = "Drogue Semi-Deployed"; if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.SEMI_DEPLOYED, 1, wobbleMultiplier, lerpDegreePerSecond); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.RETRACTED, 0, 0, 0); break; case ChuteState.DROGUE_DEPLOYING_FULL: enableChuteRenders(true, false); deployTime = drogueFullDeploySpeed; chuteStatusText = "Drogue Full-Deploying"; if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.DEPLOYING_FULL, 0, wobbleMultiplier, lerpDegreePerSecond); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.RETRACTED, 0, 0, 0); break; case ChuteState.DROGUE_FULL_DEPLOYED: enableChuteRenders(true, false); chuteStatusText = "Drogue Full-Deployed"; if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.FULL_DEPLOYED, 1, wobbleMultiplier, lerpDegreePerSecond); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.RETRACTED, 0, 0, 0); break; case ChuteState.MAIN_DEPLOYING_SEMI: enableChuteRenders(false, true); deployTime = mainSemiDeploySpeed; chuteStatusText = "Main Semi-Deploying"; if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.CUT, 0, 0, 0); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.DEPLOYING_SEMI, 0, 0, 0); break; case ChuteState.MAIN_SEMI_DEPLOYED: enableChuteRenders(false, true); chuteStatusText = "Main Semi-Deployed"; if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.CUT, 0, 0, 0); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.SEMI_DEPLOYED, 1, wobbleMultiplier, lerpDegreePerSecond); break; case ChuteState.MAIN_DEPLOYING_FULL: enableChuteRenders(false, true); deployTime = mainFullDeploySpeed; chuteStatusText = "Main Full-Deploying"; if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.CUT, 0, 0, 0); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.DEPLOYING_FULL, 0, wobbleMultiplier, lerpDegreePerSecond); break; case ChuteState.MAIN_FULL_DEPLOYED: enableChuteRenders(false, true); chuteStatusText = "Main Full-Deployed"; if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.CUT, 0, 0, 0); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.FULL_DEPLOYED, 1, wobbleMultiplier, lerpDegreePerSecond); break; } if (isMainChuteDeployed()) { removeParachuteCap(mainCapName, HighLogic.LoadedSceneIsFlight && !hasJettisonedMainCap); removeParachuteCap(drogueCapName, HighLogic.LoadedSceneIsFlight && !hasJettisonedDrogueCap); hasJettisonedMainCap = true; hasJettisonedDrogueCap = true; } else if (isDrogueChuteDeployed()) { removeParachuteCap(drogueCapName, HighLogic.LoadedSceneIsFlight && !hasJettisonedDrogueCap); hasJettisonedDrogueCap = true; } updateGuiState(); }
public void Jump() { State = ChuteState.Skydive; m_Drag = BellyToEarthDrag; m_Animator.SetTrigger("Plane"); }
private void setChuteState(ChuteState newState) { print("setting to chute state: " + newState); chuteState = newState; this.chutePersistence = chuteState.ToString(); switch (chuteState) { case ChuteState.CUT: enableChuteRenders(false, false); chuteStatusText = "Cut"; updatePartDragCube(ChuteDragCube.RETRACTED, ChuteDragCube.RETRACTED, 1f); break; case ChuteState.RETRACTED: enableChuteRenders(false, false); if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.RETRACTED, 0, 0, 0); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.RETRACTED, 0, 0, 0); updatePartDragCube(ChuteDragCube.RETRACTED, ChuteDragCube.RETRACTED, 1f); //status text set during update tick break; case ChuteState.ARMED: enableChuteRenders(false, false); if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.RETRACTED, 0, 0, 0); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.RETRACTED, 0, 0, 0); updatePartDragCube(ChuteDragCube.RETRACTED, ChuteDragCube.RETRACTED, 1f); //status text set during update tick break; case ChuteState.DROGUE_DEPLOYING_SEMI: enableChuteRenders(true, false); deployTime = drogueSemiDeploySpeed; chuteStatusText = "Drogue Semi-Deploying"; updatePartDragCube(ChuteDragCube.RETRACTED, ChuteDragCube.DROGUESEMI, 0f); if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.DEPLOYING_SEMI, 0, 0, 0); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.RETRACTED, 0, 0, 0); break; case ChuteState.DROGUE_SEMI_DEPLOYED: enableChuteRenders(true, false); chuteStatusText = "Drogue Semi-Deployed"; updatePartDragCube(ChuteDragCube.RETRACTED, ChuteDragCube.DROGUESEMI, 1f); if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.SEMI_DEPLOYED, 1, wobbleMultiplier, lerpDegreePerSecond); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.RETRACTED, 0, 0, 0); break; case ChuteState.DROGUE_DEPLOYING_FULL: enableChuteRenders(true, false); deployTime = drogueFullDeploySpeed; chuteStatusText = "Drogue Full-Deploying"; updatePartDragCube(ChuteDragCube.DROGUESEMI, ChuteDragCube.DROGUEFULL, 0f); if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.DEPLOYING_FULL, 0, wobbleMultiplier, lerpDegreePerSecond); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.RETRACTED, 0, 0, 0); break; case ChuteState.DROGUE_FULL_DEPLOYED: enableChuteRenders(true, false); chuteStatusText = "Drogue Full-Deployed"; updatePartDragCube(ChuteDragCube.DROGUESEMI, ChuteDragCube.DROGUEFULL, 1f); if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.FULL_DEPLOYED, 1, wobbleMultiplier, lerpDegreePerSecond); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.RETRACTED, 0, 0, 0); break; case ChuteState.MAIN_DEPLOYING_SEMI: enableChuteRenders(false, true); deployTime = mainSemiDeploySpeed; chuteStatusText = "Main Semi-Deploying"; updatePartDragCube(ChuteDragCube.RETRACTED, ChuteDragCube.MAINSEMI, 0f); if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.CUT, 0, 0, 0); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.DEPLOYING_SEMI, 0, 0, 0); break; case ChuteState.MAIN_SEMI_DEPLOYED: enableChuteRenders(false, true); chuteStatusText = "Main Semi-Deployed"; updatePartDragCube(ChuteDragCube.RETRACTED, ChuteDragCube.MAINSEMI, 1f); if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.CUT, 0, 0, 0); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.SEMI_DEPLOYED, 1, wobbleMultiplier, lerpDegreePerSecond); break; case ChuteState.MAIN_DEPLOYING_FULL: enableChuteRenders(false, true); deployTime = mainFullDeploySpeed; chuteStatusText = "Main Full-Deploying"; updatePartDragCube(ChuteDragCube.MAINSEMI, ChuteDragCube.MAINFULL, 0f); if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.CUT, 0, 0, 0); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.DEPLOYING_FULL, 0, wobbleMultiplier, lerpDegreePerSecond); break; case ChuteState.MAIN_FULL_DEPLOYED: enableChuteRenders(false, true); chuteStatusText = "Main Full-Deployed"; updatePartDragCube(ChuteDragCube.MAINSEMI, ChuteDragCube.MAINFULL, 1f); if (hasDrogueChute) { updateDeployAnimation(drogueChuteModules, ChuteAnimationState.CUT, 0, 0, 0); } updateDeployAnimation(mainChuteModules, ChuteAnimationState.FULL_DEPLOYED, 1, wobbleMultiplier, lerpDegreePerSecond); break; } if (isMainChuteDeployed()) { removeParachuteCap(mainCapName, HighLogic.LoadedSceneIsFlight && !hasJettisonedMainCap); removeParachuteCap(drogueCapName, HighLogic.LoadedSceneIsFlight && !hasJettisonedDrogueCap); hasJettisonedMainCap = true; hasJettisonedDrogueCap = true; } else if (isDrogueChuteDeployed()) { removeParachuteCap(drogueCapName, HighLogic.LoadedSceneIsFlight && !hasJettisonedDrogueCap); hasJettisonedDrogueCap = true; } updateGuiState(); }
public override void OnLoad(ConfigNode node) { base.OnLoad(node); chuteState = (ChuteState)Enum.Parse(typeof(ChuteState), chutePersistence); initialize(); }