private void PlayDeployAnimation(int speed)
 {
     try
     {
         if (speed < 0)
         {
             DeployAnimation[deployAnimationName].time = DeployAnimation[deployAnimationName].length;
             if (unfoldAnimationName != "")
             {
                 UnfoldAnimation[unfoldAnimationName].time = UnfoldAnimation[unfoldAnimationName].length;
             }
         }
         DeployAnimation[deployAnimationName].speed = speed;
         DeployAnimation.Play(deployAnimationName);
         if (unfoldAnimationName != "")
         {
             UnfoldAnimation[unfoldAnimationName].speed = speed;
             UnfoldAnimation.Play(unfoldAnimationName);
         }
     }
     catch (Exception)
     {
         print("[WARP] ERROR IN PlayDeployAnimation");
     }
 }
示例#2
0
 private void PlayDeployAnimation(int speed)
 {
     if (speed < 0)
     {
         DeployAnimation[deployAnimationName].time = DeployAnimation[deployAnimationName].length;
     }
     DeployAnimation[deployAnimationName].speed = speed;
     DeployAnimation.Play(deployAnimationName);
 }
 public void ReverseDeployAnimation(int speed = -1)
 {
     if (secondaryAnimationName != "")
     {
         SecondaryAnimation.Stop(secondaryAnimationName);
     }
     DeployAnimation[deployAnimationName].time  = DeployAnimation[deployAnimationName].length;
     DeployAnimation[deployAnimationName].speed = speed;
     DeployAnimation.Play(deployAnimationName);
 }
示例#4
0
 public void DeflateLifeboat(int speed)
 {
     print("Deflating");
     DeployAnimation[deployAnimationName].time  = DeployAnimation[deployAnimationName].length;
     DeployAnimation[deployAnimationName].speed = speed;
     DeployAnimation.Play(deployAnimationName);
     HatchAnimation[hatchAnimationName].speed = speed;
     HatchAnimation.Play(hatchAnimationName);
     part.CrewCapacity = 0;
 }
示例#5
0
        public override void OnStart(StartState state)
        {
            DeployAnimation.wrapMode = WrapMode.ClampForever;
            DeployAnimation.Play(deployAnimationName);

            DeployAnimation[deployAnimationName].normalizedTime = isDeployed ?  targetInflationPercentage : 0f;

            UpdateEvents();

            base.OnStart(state);
        }
示例#6
0
 public void DeflateAirbags()
 {
     if (isDeployed)
     {
         isDeployed = false;
         DeployAnimation[deployAnimationName].speed = -.25f;
         DeployAnimation[deployAnimationName].time  = DeployAnimation[deployAnimationName].length;
         DeployAnimation.Play(deployAnimationName);
         ToggleEvent("DeflateAirbags", false);
         Events["RechargeAirbags"].active = true;
     }
 }
示例#7
0
        private void PlayDeployAnimation(int speed)
        {
            if (speed < 0)
            {
                if (activeAnimationName != "")
                {
                    ActiveAnimation.Stop(activeAnimationName);
                }

                DeployAnimation[deployAnimationName].time = DeployAnimation[deployAnimationName].length;
            }
            DeployAnimation[deployAnimationName].speed = speed;
            DeployAnimation.Play(deployAnimationName);
        }
示例#8
0
 public void InflateAirbags()
 {
     if (!isDeployed)
     {
         if (isCharged || _state == StartState.Editor)
         {
             isCharged  = false;
             isDeployed = true;
             DeployAnimation[deployAnimationName].speed = 1;
             DeployAnimation.Play(deployAnimationName);
             ToggleEvent("DeflateAirbags", true);
             ToggleEvent("InflateAirbags", false);
         }
     }
 }
示例#9
0
 private void PlayDeployAnimation(int speed)
 {
     try
     {
         if (speed < 0)
         {
             DeployAnimation[deployAnimationName].time = DeployAnimation[deployAnimationName].length;
         }
         DeployAnimation[deployAnimationName].speed = speed;
         DeployAnimation.Play(deployAnimationName);
     }
     catch (Exception)
     {
         print("[WSXWARP] ERROR IN PlayDeployAnimation");
     }
 }
示例#10
0
 private void PlayDeployAnimation(int speed = 1)
 {
     print("Inflating");
     DeployAnimation[deployAnimationName].speed = speed;
     DeployAnimation.Play(deployAnimationName);
     HatchAnimation[hatchAnimationName].speed = speed;
     HatchAnimation.Play(hatchAnimationName);
     isDeployed        = true;
     part.CrewCapacity = 1;
     ToggleEvent("InflateLifeboat", false);
     ToggleEvent("DeployKickstand", true);
     if (!isUnsealed)
     {
         AddResources();
         isUnsealed = true;
     }
 }
示例#11
0
        private void RetractStart(float speed = 1f)
        {
            if (_retractAnimationPresent)
            {
                if (_deployAnimationPresent && DeployAnimation.IsPlaying(deployAnimationName))
                {
                    DeployAnimation.Stop(deployAnimationName);
                }

                CurrentState = State.Retracting;
                PlayAnimation(RetractAnimation, retractAnimationName, speed * retractSpeed);
            }
            else if (_deployAnimationPresent)
            {
                CurrentState = State.Retracting;
                PlayAnimation(DeployAnimation, deployAnimationName, speed * retractSpeed * -1);
            }
            else
            {
                RetractEnd();
            }
        }
示例#12
0
 private void PlayDeployAnimation(int speed = 1)
 {
     DeployAnimation[deployAnimationName].speed = speed;
     DeployAnimation.Play(deployAnimationName);
     SetDragState(1f);
 }
示例#13
0
        public void Update()
        {
            if (!HighLogic.LoadedSceneIsFlight)
            {
                return;
            }

            try
            {
                switch (CurrentState)
                {
                // System is inactive, and playing the inactive animation if present
                case State.Inactive:
                    if (ConvertersEnabled())
                    {
                        if (waitForComplete)
                        {
                            DeployWait();
                        }
                        else
                        {
                            DeployStart();
                        }
                    }

                    break;

                // System is inactive, but waiting for the animation to end before deploying
                case State.InactiveWaiting:
                    if (!waitForComplete || !_inactiveAnimationPresent)
                    {
                        this.LogError(
                            "Invalid state! waitForComplete not enabled or inactive animation not present.");
                        CurrentState = State.Inactive;
                    }
                    else if (!ConvertersEnabled())
                    {
                        RetractEnd();
                    }
                    else if (!InactiveAnimation.IsPlaying(inactiveAnimationName))
                    {
                        DeployStart();
                    }

                    break;

                // System is deploying
                case State.Deploying:
                    if (!_deployAnimationPresent)
                    {
                        this.LogError("Invalid state! Deploying without an animation present.");
                        CurrentState = State.Active;
                    }
                    else if (!ConvertersEnabled())
                    {
                        RetractStart();
                    }
                    else if (!DeployAnimation.IsPlaying(deployAnimationName))
                    {
                        DeployEnd();
                    }

                    break;

                // System is active, and playing the active animation if present
                case State.Active:
                    if (!ConvertersEnabled())
                    {
                        if (waitForComplete)
                        {
                            RetractWait();
                        }
                        else
                        {
                            RetractStart();
                        }
                    }

                    break;

                // System is active, but waiting for the animation to finish before retracting
                case State.ActiveWaiting:
                    if (!waitForComplete || !_activeAnimationPresent)
                    {
                        this.LogError(
                            "Invalid state! waitForComplete not enabled or active animation not present.");
                        CurrentState = State.Active;
                    }
                    else if (ConvertersEnabled())
                    {
                        DeployEnd();
                    }
                    else if (!ActiveAnimation.IsPlaying(activeAnimationName))
                    {
                        RetractStart();
                    }

                    break;

                // System is retracting
                case State.Retracting:
                    if (!_retractAnimationPresent && !_deployAnimationPresent)
                    {
                        this.LogError("Invalid state! Retracting without an animation present.");
                        CurrentState = State.Inactive;
                    }
                    else if (ConvertersEnabled())
                    {
                        DeployStart();
                    }
                    else if (_retractAnimationPresent)
                    {
                        if (!RetractAnimation.IsPlaying(retractAnimationName))
                        {
                            RetractEnd();
                        }
                    }
                    else if (_deployAnimationPresent)
                    {
                        if (!DeployAnimation.IsPlaying(deployAnimationName))
                        {
                            RetractEnd();
                        }
                    }

                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            catch (Exception e)
            {
                this.LogException("Failed to update animation module", e);
            }
        }