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) )); }
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) )); } }