public override void OnLoad(ConfigNode node)
 {
     base.OnLoad(node);
     if (string.IsNullOrEmpty(configNodeData))
     {
         configNodeData = node.ToString();
     }
     chuteState = (ChuteState)Enum.Parse(typeof(ChuteState), chutePersistence);
     initialize();
 }
Example #2
0
        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;
        }
Example #3
0
        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");
        }
Example #4
0
        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();
        }
Example #6
0
 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();
 }
 public override void OnLoad(ConfigNode node)
 {
     base.OnLoad(node);
     chuteState = (ChuteState)Enum.Parse(typeof(ChuteState), chutePersistence);
     initialize();
 }
 public override void OnLoad(ConfigNode node)
 {
     base.OnLoad(node);
     if (string.IsNullOrEmpty(configNodeData)) { configNodeData = node.ToString(); }
     chuteState = (ChuteState)Enum.Parse(typeof(ChuteState), chutePersistence);
     initialize();
 }