private void AutoModeValueChanged(object Sender) { int v = m_automode.Value; if (v < 0) { v = 0; } if (v > 9) { v = 0; } double automodev = m_autovalues[v]; double servov = m_servo.Value / 90.0; if (m_state != null) { DSJoystick joy = new DSJoystick(); for (int i = 0; i < 10; i++) { if (i == 6) { joy.SetAxis(i, m_autovalues[v]); } else if (i == 0) { Debug.WriteLine("servo " + servov.ToString()); joy.SetAxis(i, servov); } } m_state.SetJoystick(2, joy); } }
private DSJoystick ReadJoystick(Joystick j) { DSJoystick ds = new DSJoystick(); j.Poll(); JoystickState st = j.GetCurrentState(); // Process buttons for (int i = 0; i < st.Buttons.Length; i++) { ds.SetButtons(i + 1, st.Buttons[i]); } // Process axis ds.SetAxis(0, (st.X / 32768.0) - 1.0); ds.SetAxis(1, (st.Y / 32768.0) - 1.0); ds.SetAxis(4, (st.RotationX / 32768.0) - 1.0); ds.SetAxis(5, (st.RotationY / 32768.0) - 1.0); if (st.Z < 256) { // Right trigger ds.SetAxis(3, 1.0); ds.SetAxis(2, 0.0); } else if (st.Z > 65000) { // Left trigger ds.SetAxis(3, 0.0); ds.SetAxis(2, 1.0); } else { // No (or both) triggers ds.SetAxis(3, 0.0); ds.SetAxis(2, 0.0); } // Process POVs int[] povs = st.PointOfViewControllers; for (int i = 0; i < povs.Length; i++) { if (povs[i] == -1) { ds.SetPOV(i, 0xffff); } else { ushort deg = (ushort)(povs[i] / 100); ds.SetPOV(i, deg); } } return(ds); }
private void MonitorJoysticks() { while (m_monitor) { for (int i = 0; i < m_joysticks.Count; i++) { DSJoystick dsj = ReadJoystick(m_joysticks[i]); m_state.SetJoystick(i, dsj); } Thread.Sleep(1); } }
public void SetJoystick(int which, DSJoystick ds) { m_joysticks[which] = ds; m_joysticks_dirty = true; OnStateChanged(true); }