public SwitchProControl(AxisCalibration _leftXCal, AxisCalibration _leftYCal, AxisCalibration _rightXCal, AxisCalibration _rightYCal) : this() { leftXCalibration = _leftXCal; leftYCalibration = _leftYCal; rightXCalibration = _rightXCal; rightYCalibration = _rightYCal; }
internal Raildriver() { for (int i = 0; i < Calibration.Length; i++) { Calibration[i] = new AxisCalibration(); } LoadCalibration(OpenBveApi.Path.CombineFile(Program.FileSystem.SettingsFolder, "RailDriver.xml")); }
public SwitchProControl() { InitializeComponent(); _calLeftJoystick = new NintrollerLib.Joystick(); _calRightJoystick = new NintrollerLib.Joystick(); leftXCalibration = new AxisCalibration(0, 65535, 32767, 2048); leftYCalibration = new AxisCalibration(0, 65535, 32767, 2048); rightXCalibration = new AxisCalibration(0, 65535, 32767, 2048); rightYCalibration = new AxisCalibration(0, 65535, 32767, 2048); }
public AxisCalibrationWindow(AxisCalibration prevCalibration, string filename = "") : this() { _axis = prevCalibration; FileName = filename; set = true; center.Value = prevCalibration.center; min.Value = (int)Math.Round(100 - 100 * prevCalibration.min / 65535d); max.Value = (int)Math.Round(100 * prevCalibration.max / 65535d); deadMax.Value = (int)Math.Round(100 * prevCalibration.deadPos / 65535d); deadMin.Value = (int)Math.Round(-100 * prevCalibration.deadNeg / 65535d); }
internal RailDriver32(PIEDevice device) { ConfigurationLink = ConfigurationLink.RailDriver; myDevice = device; for (int i = 0; i < Calibration.Length; i++) { Calibration[i] = new AxisCalibration(); } LoadCalibration(OpenBveApi.Path.CombineFile(Program.FileSystem.SettingsFolder, "RailDriver.xml")); }
private float GetSliderSensitivity(AxisCalibration axisCalibration) { if (axisCalibration.sensitivityType == AxisSensitivityType.Multiplier) { return(axisCalibration.sensitivity); } else if (axisCalibration.sensitivityType == AxisSensitivityType.Power) { return(ProcessPowerValue(axisCalibration.sensitivity, 0f, sensitivitySlider.maxValue)); } else { return(axisCalibration.sensitivity); } }
public void Set(AxisCalibration cal) { if (!set) { return; } _axis = cal; limit.Width = 400 * Math.Abs(_axis.max - _axis.min) / 65535d; limit.Margin = new Thickness(10 + (400 * _axis.min / 65535d), 13, 0, 0); dead.Width = 400 * (_axis.deadPos - _axis.deadNeg) / 65535d; dead.Margin = new Thickness(10 + 200 - (dead.Width / 2) + ((_axis.deadPos + _axis.deadNeg) / 65535d) * 200, 13, 0, 0); Update(_lastValue); }
public void SetSensitivity(AxisCalibration axisCalibration, float sliderValue) { if (axisCalibration.sensitivityType == AxisSensitivityType.Multiplier) { // Enforce a min sensitivity to prevent axis from becoming useless axisCalibration.sensitivity = Mathf.Clamp(sliderValue, minSensitivity, Mathf.Infinity); if (sliderValue < minSensitivity) { sensitivitySlider.value = minSensitivity; // prevent control from going outside range } } else if (axisCalibration.sensitivityType == AxisSensitivityType.Power) { axisCalibration.sensitivity = ProcessPowerValue(sliderValue, 0f, sensitivitySlider.maxValue); } else { axisCalibration.sensitivity = sliderValue; } }
public void Commit() { if (axis == null) { return; } AxisCalibration calibration = joystick.calibrationMap.GetAxis(axisIndex); if (calibration == null) { return; } // Make sure min/max isn't the same or joystick cannot move if (Mathf.Abs(data.max - data.min) < 0.1) { return; // too close, joystick would be useless } calibration.SetData(data); }
internal void LoadCalibration(string calibrationFile) { if (!File.Exists(calibrationFile)) { return; } try { for (int i = 0; i < Calibration.Length; i++) { Calibration[i] = new AxisCalibration(); } XmlDocument currentXML = new XmlDocument(); currentXML.Load(calibrationFile); XmlNodeList documentNodes = currentXML.SelectNodes("openBVE/RailDriverCalibration"); if (documentNodes != null && documentNodes.Count != 0) { for (int i = 0; i < documentNodes.Count; i++) { int idx = -1; int lMin = 0; int lMax = 255; foreach (XmlNode node in documentNodes[i].ChildNodes) { switch (node.Name.ToLowerInvariant()) { case "axis": foreach (XmlNode n in node.ChildNodes) { switch (n.Name.ToLowerInvariant()) { case "index": if (!NumberFormats.TryParseIntVb6(n.InnerText, out idx)) { Program.AppendToLogFile(@"Invalid index in RailDriver calibration file"); } break; case "minimum": if (!NumberFormats.TryParseIntVb6(n.InnerText, out lMin)) { Program.AppendToLogFile(@"Invalid minimum in RailDriver calibration file"); } break; case "maximum": if (!NumberFormats.TryParseIntVb6(n.InnerText, out lMax)) { Program.AppendToLogFile(@"Invalid minimum in RailDriver calibration file"); } break; } } lMin = Math.Abs(lMin); lMax = Math.Abs(lMax); if (lMin > 255) { lMin = 255; } else if (lMin < 0) { lMin = 0; } if (lMax >= 255) { lMax = 255; } else if (lMax < 0) { lMax = 0; } if (lMin >= lMax) { throw new InvalidDataException(@"Maximum must be non-zero and greater than minimum."); } if (idx == -1) { throw new InvalidDataException(@"Invalid axis specified."); } Calibration[idx].Minimum = lMin; Calibration[idx].Maximum = lMax; break; } } } } } catch { for (int i = 0; i < Calibration.Length; i++) { Calibration[i] = new AxisCalibration(); } MessageBox.Show(Interface.GetInterfaceString("raildriver_config_error"), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Hand); //Clear the calibration file File.Delete(calibrationFile); } }
public void MapTest() { var a = AxisCalibration.Map(10, 5, 15, 20, 40); Assert.AreEqual(a, 30); }