public void Update() { this.oldstate = this.State; }
public void OpenTKGamePadInputRoll() { var State = OpenTK.Input.GamePad.GetState(0); var Capabilities = controller.CapabilitiesGamePad; foreach (PropertyInfo buttonProperty in AvailableOTKButtonProperties) { OpenTK.Input.ButtonState CurrentButtonState = (OpenTK.Input.ButtonState)buttonProperty.GetValue(State.Buttons); OpenTK.Input.ButtonState OldButtonState = (OpenTK.Input.ButtonState)buttonProperty.GetValue(State.Buttons); if (!Object.ReferenceEquals(OTKOldState, null)) { OldButtonState = (OpenTK.Input.ButtonState)buttonProperty.GetValue(OTKOldState.Buttons); } if (CurrentButtonState == OpenTK.Input.ButtonState.Pressed && (Object.ReferenceEquals(OTKOldState, null) || OldButtonState == OpenTK.Input.ButtonState.Released)) { CallButtonMapping(buttonProperty.Name, true); System.Diagnostics.Debug.WriteLine($"{buttonProperty.Name} Pressed"); } if (CurrentButtonState == OpenTK.Input.ButtonState.Released && (!Object.ReferenceEquals(OTKOldState, null) && OldButtonState == OpenTK.Input.ButtonState.Pressed)) { CallButtonMapping(buttonProperty.Name, false); System.Diagnostics.Debug.WriteLine($"{buttonProperty.Name} Released"); } } foreach (PropertyInfo buttonProperty in AvailableOTKDPadProperties) { Boolean CurrentDPadState = (Boolean)buttonProperty.GetValue(State.DPad); Boolean OldDPadState = (Boolean)buttonProperty.GetValue(State.DPad); if (!Object.ReferenceEquals(OTKOldState, null)) { OldDPadState = (Boolean)buttonProperty.GetValue(OTKOldState.DPad); } if (CurrentDPadState == true && (Object.ReferenceEquals(OTKOldState, null) || OldDPadState == false)) { CallButtonMapping(buttonProperty.Name, true); System.Diagnostics.Debug.WriteLine($"{buttonProperty.Name} Pressed"); } if (CurrentDPadState == false && (!Object.ReferenceEquals(OTKOldState, null) && OldDPadState == true)) { CallButtonMapping(buttonProperty.Name, false); System.Diagnostics.Debug.WriteLine($"{buttonProperty.Name} Released"); } } PropertyInfo[] AvailableOTKTriggerProperties = typeof(OpenTK.Input.GamePadTriggers).GetProperties().ToArray(); foreach (PropertyInfo buttonProperty in AvailableOTKTriggerProperties) { float CurrentTriggerState = (float)buttonProperty.GetValue(State.Triggers); float OldTriggerState = (float)buttonProperty.GetValue(State.Triggers); if (!Object.ReferenceEquals(OTKOldState, null)) { OldTriggerState = (float)buttonProperty.GetValue(OTKOldState.Triggers); } if (CurrentTriggerState == 1 && (Object.ReferenceEquals(OTKOldState, null) || OldTriggerState == 0)) { CallButtonMapping(buttonProperty.Name, true); System.Diagnostics.Debug.WriteLine($"{buttonProperty.Name} Trigger Pressed"); } if (CurrentTriggerState == 0 && (!Object.ReferenceEquals(OTKOldState, null) && OldTriggerState == 1)) { CallButtonMapping(buttonProperty.Name, false); System.Diagnostics.Debug.WriteLine($"{buttonProperty.Name} Trigger Released"); } } var oldLeftX = Math.Round(OTKOldState.ThumbSticks.Left.X); var oldLeftY = Math.Round(OTKOldState.ThumbSticks.Left.Y); var newLeftX = Math.Round(State.ThumbSticks.Left.X); var newLeftY = Math.Round(State.ThumbSticks.Left.Y); if (oldLeftX == 0 && newLeftX == 1) { System.Diagnostics.Debug.WriteLine("Right Pushed"); CallButtonMapping("IsRight", true); } if (oldLeftX == 1 && newLeftX == 0) { System.Diagnostics.Debug.WriteLine("Right Released"); CallButtonMapping("IsRight", false); } if (oldLeftX == 0 && newLeftX == -1) { System.Diagnostics.Debug.WriteLine("Left Pushed"); CallButtonMapping("IsLeft", true); } if (oldLeftX == -1 && newLeftX == 0) { System.Diagnostics.Debug.WriteLine("Left Released"); CallButtonMapping("IsLeft", false); } if (oldLeftY == 0 && newLeftY == 1) { System.Diagnostics.Debug.WriteLine("Up Pushed"); CallButtonMapping("IsUp", true); } if (oldLeftY == 1 && newLeftY == 0) { System.Diagnostics.Debug.WriteLine("Up Released"); CallButtonMapping("IsUp", false); } if (oldLeftY == 0 && newLeftY == -1) { System.Diagnostics.Debug.WriteLine("Down Pushed"); CallButtonMapping("IsDown", true); } if (oldLeftY == -1 && newLeftY == 0) { System.Diagnostics.Debug.WriteLine("Down Released"); CallButtonMapping("IsDown", false); } OTKOldState = State; }