Esempio n. 1
0
 public void UpdateDrag()
 {
     DragManager.SetDrag(this, new DragValue(
                             (MaxDragMinMax.x * (1 - animState.normalizedTime)) + (MaxDragMinMax.y * animState.normalizedTime),
                             (MinDragMinMax.x * (1 - animState.normalizedTime)) + (MinDragMinMax.y * animState.normalizedTime)
                             ));
 }
Esempio n. 2
0
        private void Update()
        {
            if (part.packed && HighLogic.LoadedSceneIsFlight)
            {
                return;
            }

            float animSpeed = (HighLogic.LoadedSceneIsFlight ? TimeWarp.deltaTime * 60 : 1) / animState.clip.frameRate;

            if (engaged && Drag == 0)
            {
                engaged      = false;
                spoilerState = ModuleLandingGear.GearStates.RETRACTING;
            }

            float DragPercentage = Drag / 100;

            switch (spoilerState)
            {
            case ModuleLandingGear.GearStates.DEPLOYED:
                if (!engaged)
                {
                    spoilerState = ModuleLandingGear.GearStates.RETRACTING;
                }
                else
                {
                    if (animState.normalizedTime != DragPercentage)
                    {
                        animState.normalizedTime = Mathf.Clamp(
                            animState.normalizedTime + ((animState.normalizedTime < DragPercentage ? 1 : -1) * animSpeed)
                            , 0, animState.normalizedTime < DragPercentage ? DragPercentage : 1);
                    }
                }
                break;

            case ModuleLandingGear.GearStates.DEPLOYING:
                if (!engaged)
                {
                    spoilerState = ModuleLandingGear.GearStates.RETRACTING;
                }
                else
                {
                    if (animState.normalizedTime == DragPercentage)
                    {
                        spoilerState = ModuleLandingGear.GearStates.DEPLOYED;
                    }
                    else
                    {
                        animState.normalizedTime = Mathf.Clamp(
                            animState.normalizedTime + ((animState.normalizedTime < DragPercentage ? 1 : -1) * animSpeed)
                            , 0, animState.normalizedTime < DragPercentage ? DragPercentage : 1);
                    }
                }
                break;

            case ModuleLandingGear.GearStates.RETRACTING:
                if (engaged)
                {
                    spoilerState = ModuleLandingGear.GearStates.DEPLOYING;
                }
                else
                {
                    if (animState.normalizedTime == 0)
                    {
                        spoilerState = ModuleLandingGear.GearStates.RETRACTED;
                    }
                    else
                    {
                        animState.normalizedTime = Mathf.Clamp(
                            animState.normalizedTime - animSpeed
                            , 0, DragPercentage);
                    }
                }
                break;

            case ModuleLandingGear.GearStates.RETRACTED:
                if (engaged)
                {
                    spoilerState = ModuleLandingGear.GearStates.DEPLOYING;
                }
                break;
            }

            if (animState.normalizedTime != lastNormalizedTime)
            {
                lastNormalizedTime = animState.normalizedTime;
                DragManager.SetDrag(this, new DragValue(
                                        (MaxDragMinMax.x * (1 - animState.normalizedTime)) + (MaxDragMinMax.y * animState.normalizedTime),
                                        (MinDragMinMax.x * (1 - animState.normalizedTime)) + (MinDragMinMax.y * animState.normalizedTime)
                                        ));
            }
        }