public static joystickaxis getMovingAxis(string name, int threshold) { self.name = name; var joystick = new Joystick().AcquireJoystick(name); if (joystick == null) return joystickaxis.ARx; System.Threading.Thread.Sleep(50); var obj = joystick.CurrentJoystickState(); Hashtable values = new Hashtable(); // get the state of the joystick before. Type type = obj.GetType(); PropertyInfo[] properties = type.GetProperties(); foreach (PropertyInfo property in properties) { values[property.Name] = int.Parse(property.GetValue(obj, null).ToString()); } values["Slider1"] = obj.GetSlider()[0]; values["Slider2"] = obj.GetSlider()[1]; values["Hatud1"] = obj.GetPointOfView()[0]; values["Hatlr2"] = obj.GetPointOfView()[0]; values["Custom1"] = 0; values["Custom2"] = 0; CustomMessageBox.Show("Please move the joystick axis you want assigned to this function after clicking ok"); DateTime start = DateTime.Now; while (start.AddSeconds(10) > DateTime.Now) { joystick.Poll(); System.Threading.Thread.Sleep(50); var nextstate = joystick.CurrentJoystickState(); int[] slider = nextstate.GetSlider(); int[] hat1 = nextstate.GetPointOfView(); type = nextstate.GetType(); properties = type.GetProperties(); foreach (PropertyInfo property in properties) { //Console.WriteLine("Name: " + property.Name + ", Value: " + property.GetValue(obj, null)); log.InfoFormat("test name {0} old {1} new {2} ", property.Name, values[property.Name], int.Parse(property.GetValue(nextstate, null).ToString())); log.InfoFormat("{0} {1} {2}", property.Name, (int) values[property.Name], (int.Parse(property.GetValue(nextstate, null).ToString()) + threshold)); if ((int) values[property.Name] > (int.Parse(property.GetValue(nextstate, null).ToString()) + threshold) || (int) values[property.Name] < (int.Parse(property.GetValue(nextstate, null).ToString()) - threshold)) { log.Info(property.Name); joystick.Unacquire(); return (joystickaxis) Enum.Parse(typeof (joystickaxis), property.Name); } } // slider1 if ((int) values["Slider1"] > (slider[0] + threshold) || (int) values["Slider1"] < (slider[0] - threshold)) { joystick.Unacquire(); return joystickaxis.Slider1; } // slider2 if ((int) values["Slider2"] > (slider[1] + threshold) || (int) values["Slider2"] < (slider[1] - threshold)) { joystick.Unacquire(); return joystickaxis.Slider2; } // Hatud1 if ((int) values["Hatud1"] != (hat1[0])) { joystick.Unacquire(); return joystickaxis.Hatud1; } // Hatlr2 if ((int) values["Hatlr2"] != (hat1[0])) { joystick.Unacquire(); return joystickaxis.Hatlr2; } } CustomMessageBox.Show("No valid option was detected"); return joystickaxis.None; }
public static joystickaxis getMovingAxis(string name, int threshold) { var joystick = new Joystick().AcquireJoystick(name); if (joystick == null) { return(joystickaxis.ARx); } joystick.Poll(); System.Threading.Thread.Sleep(300); joystick.Poll(); var obj = joystick.CurrentJoystickState(); Hashtable values = new Hashtable(); // get the state of the joystick before. Type type = obj.GetType(); PropertyInfo[] properties = type.GetProperties(); foreach (PropertyInfo property in properties) { values[property.Name] = int.Parse(property.GetValue(obj, null).ToString()); } values["Slider1"] = obj.GetSlider()[0]; values["Slider2"] = obj.GetSlider()[1]; values["Hatud1"] = obj.GetPointOfView()[0]; values["Hatlr2"] = obj.GetPointOfView()[0]; values["Custom1"] = 0; values["Custom2"] = 0; CustomMessageBox.Show("Please move the joystick axis you want assigned to this function after clicking ok"); DateTime start = DateTime.Now; while (start.AddSeconds(10) > DateTime.Now) { joystick.Poll(); System.Threading.Thread.Sleep(50); var nextstate = joystick.CurrentJoystickState(); int[] slider = nextstate.GetSlider(); int[] hat1 = nextstate.GetPointOfView(); type = nextstate.GetType(); properties = type.GetProperties(); foreach (PropertyInfo property in properties) { //Console.WriteLine("Name: " + property.Name + ", Value: " + property.GetValue(obj, null)); log.InfoFormat("test name {0} old {1} new {2} ", property.Name, values[property.Name], int.Parse(property.GetValue(nextstate, null).ToString())); log.InfoFormat("{0} {1} {2}", property.Name, (int)values[property.Name], (int.Parse(property.GetValue(nextstate, null).ToString()) + threshold)); if ((int)values[property.Name] > (int.Parse(property.GetValue(nextstate, null).ToString()) + threshold) || (int)values[property.Name] < (int.Parse(property.GetValue(nextstate, null).ToString()) - threshold)) { log.Info(property.Name); joystick.Unacquire(); return((joystickaxis)Enum.Parse(typeof(joystickaxis), property.Name)); } } // slider1 if ((int)values["Slider1"] > (slider[0] + threshold) || (int)values["Slider1"] < (slider[0] - threshold)) { joystick.Unacquire(); return(joystickaxis.Slider1); } // slider2 if ((int)values["Slider2"] > (slider[1] + threshold) || (int)values["Slider2"] < (slider[1] - threshold)) { joystick.Unacquire(); return(joystickaxis.Slider2); } // Hatud1 if ((int)values["Hatud1"] != (hat1[0])) { joystick.Unacquire(); return(joystickaxis.Hatud1); } // Hatlr2 if ((int)values["Hatlr2"] != (hat1[0])) { joystick.Unacquire(); return(joystickaxis.Hatlr2); } } CustomMessageBox.Show("No valid option was detected"); return(joystickaxis.None); }