KAS.KASModuleWinch.UpdateMotor C# (CSharp) Метод

UpdateMotor() приватный Метод

private UpdateMotor ( ) : void
Результат void
        private void UpdateMotor()
        {
            #region release
            if (release.active) {
              if (headState == PlugState.Locked) {
            cableJointLength = 0f;
            Deploy();
            if (headState == PlugState.Locked) {
              extend.active = false;
              KAS_Shared.DebugError(
              "Deploy(Winch) - Something go wrong, cannot deploy the winch head !!");
            }
              }
              release.isrunning = true;
              if (!release.starting) {
            retract.active = false;
            extend.active = false;
            retract.full = false;
            release.starting = true;
            motorSpeed = 0;
            winchStateField = "Released";
              }
              float tempCablelenghtF = cableRealLenght + releaseOffset;
              if (tempCablelenghtF > maxLenght) {
            release.active = false;
            cableJointLength = maxLenght;
              } else {
            cableJointLength = tempCablelenghtF;
              }
            } else {
              if (release.isrunning) {
            release.isrunning = false;
            release.starting = false;
            winchStateField = "Idle";
            release.active = false;
              }
            }
            #endregion

            #region Extend
            if (extend.active && !extend.full) {
              if (headState == PlugState.Locked) {
            cableJointLength = 0f;
            Deploy();
            if (headState == PlugState.Locked) {
              extend.active = false;
              KAS_Shared.DebugError(
              "Deploy(Winch) - Something go wrong, cannot deploy the winch head !!");
            }
              }
              if (KAS_Shared.RequestPower(this.part, powerDrain)) {
            extend.isrunning = true;
            if (!extend.starting) {
              retract.full = false;
              retract.active = false;
              release.active = false;
              extend.starting = true;
              winchStateField = "Extending cable...";
              motorSpeed = 0;
              fxSndMotorStart.audio.loop = false;
              fxSndMotorStart.audio.Play();
            }

            if (motorSpeedSetting <= 0) {
              motorSpeedSetting = motorMinSpeed;
            }
            BringMotorToSpeed(motorSpeedSetting);
            float tempCablelenghtE = cableJointLength + motorSpeed * TimeWarp.deltaTime;
            if (tempCablelenghtE > maxLenght) {
              extend.full = true;
              extend.active = false;
              cableJointLength = maxLenght;
            } else {
              if (!fxSndMotor.audio.isPlaying) {
            fxSndMotor.audio.Play();
              }
              cableJointLength = tempCablelenghtE;
            }
              } else {
            if (this.part.vessel == FlightGlobals.ActiveVessel) {
              ScreenMessages.PostScreenMessage("Winch stopped ! Insufficient Power",
                                           5, ScreenMessageStyle.UPPER_CENTER);
            }
            winchStateField = "Insufficient Power";
            StopExtend();
              }
            } else {
              StopExtend();
            }
            #endregion

            #region retract
            if (retract.active && !retract.full) {
              if (headState == PlugState.Locked) {
            StopRetract();
            return;
              }
              if (KAS_Shared.RequestPower(this.part, powerDrain)) {
            retract.isrunning = true;
            if (!retract.starting) {
              extend.full = false;
              extend.active = false;
              release.active = false;
              retract.starting = true;
              winchStateField = "Retracting cable...";
              motorSpeed = 0;
              fxSndMotorStart.audio.loop = false;
              fxSndMotorStart.audio.Play();
            }

            if (motorSpeedSetting <= 0) {
              motorSpeedSetting = motorMinSpeed;
            }
            BringMotorToSpeed(motorSpeedSetting);
            float tempCableLenghtR = cableJointLength - motorSpeed * TimeWarp.deltaTime;
            if (tempCableLenghtR > 0) {
              if (!fxSndMotor.audio.isPlaying) {
            fxSndMotor.audio.Play();
              }
              cableJointLength = tempCableLenghtR;
            } else {
              OnFullRetract();
            }
              } else {
            if (this.part.vessel == FlightGlobals.ActiveVessel) {
              ScreenMessages.PostScreenMessage("Winch stopped ! Insufficient Power",
                                           5, ScreenMessageStyle.UPPER_CENTER);
            }
            winchStateField = "Insufficient Power";
            StopRetract();
              }
            } else {
              StopRetract();
            }
            #endregion
        }