public FlightControlStator(IMyMotorStator Stator) { this.Stator = Stator; this.Flipped = false; if (VelocityProperty == null) { VelocityProperty = (ITerminalProperty <float>)Stator.GetProperty("Velocity"); } ((ITerminalProperty <float>)Stator.GetProperty("LowerLimit")).SetValue(Stator, -45f); ((ITerminalProperty <float>)Stator.GetProperty("UpperLimit")).SetValue(Stator, 45f); }
private void SetVelocity(IMyMotorStator Stator, float angle) { myLogger.debugLog(!MyAPIGateway.Multiplayer.IsServer, "Not server!", Logger.severity.FATAL); float speed = angle * RotationSpeedMultiplier; if (!speed.IsValid()) { myLogger.debugLog("invalid speed: " + speed); speed = 0; } else speed = MathHelper.Clamp(speed, -mySpeedLimit, mySpeedLimit); float prevSpeed; if (Stator == StatorEl) prevSpeed = previousSpeed_StatorEl; else prevSpeed = previousSpeed_StatorAz; if (Math.Abs(speed - prevSpeed) < 0.1) { //myLogger.debugLog(Stator.DisplayNameText + ", no change in speed: " + speed, "SetVelocity()"); return; } //myLogger.debugLog(Stator.DisplayNameText + ", speed changed to " + speed, "SetVelocity()"); var prop = Stator.GetProperty("Velocity").AsFloat(); if (Stator == StatorEl) previousSpeed_StatorEl = speed; else previousSpeed_StatorAz = speed; prop.SetValue(Stator, speed); }