Ejemplo n.º 1
0
            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);
            }
Ejemplo n.º 2
0
        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);
        }