bool DoRoll(double rollAngle, string sPlane = "Roll") { //Echo("rollAngle=" + Math.Round(rollAngle,5)); float targetRoll = 0; IMyGyro gyro = gyros[0] as IMyGyro; float maxRoll = 60; // gyro.GetMaximum<float>(sPlane); // float minRoll = gyro.GetMinimum<float>(sPlane); if (Math.Abs(rollAngle) > 1.0) { targetRoll = (float)maxRoll * (float)(rollAngle); } else if (Math.Abs(rollAngle) > .7) { // need to dampen targetRoll = (float)maxRoll * (float)(rollAngle) / 4; } else if (Math.Abs(rollAngle) > 0.5) { targetRoll = 0.11f * Math.Sign(rollAngle); } else if (Math.Abs(rollAngle) > 0.1) { targetRoll = 0.07f * Math.Sign(rollAngle); } else if (Math.Abs(rollAngle) > 0.01) { targetRoll = 0.05f * Math.Sign(rollAngle); } else if (Math.Abs(rollAngle) > 0.001) { targetRoll = 0.035f * Math.Sign(rollAngle); } else { targetRoll = 0; } // Echo("targetRoll=" + targetRoll); // rollLevel = (int)(targetRoll * 1000); for (int i = 0; i < gyros.Count; i++) { gyro = gyros[i] as IMyGyro; gyro.SetValueFloat(sPlane, targetRoll); gyro.SetValueBool("Override", true); } return(true); }