/// <summary> /// Refreshes the current state. Triggers <see cref="InputChanged"/> event. /// </summary> /// <returns>if the input was available</returns> public bool RefreshInput() { foreach (var type in XInputHelper.Instance.Values) { var mapping = mapper.GetMapping(type); if (mapping != null) { double value = 0; if (mapping.InputType != null) { value = source.Get(mapping.InputType); } values[type] = mapping.GetValue(value); } } if (mapper.SelectedDPad != -1) { dPads[0] = source.DPads.ElementAt(mapper.SelectedDPad); } else { dPads[0] = DPadHelper.GetDirection(GetBool(XInputTypes.UP), GetBool(XInputTypes.DOWN), GetBool(XInputTypes.LEFT), GetBool(XInputTypes.RIGHT)); } var changedDPads = state.SetDPads(dPads); var changedValues = state.SetValues(values.Where(t => !t.Key.IsDPad()).ToDictionary(x => (Enum)x.Key, x => x.Value)); if (changedDPads.Any() || changedValues.Any()) { InputChanged?.Invoke(this, new DeviceInputChangedEventArgs(changedValues, changedDPads)); } return(true); }
/// <summary> /// Refreshes the current state. Triggers <see cref="InputChanged"/> event. /// </summary> /// <returns>if the input was available</returns> public bool RefreshInput() { state.ResetChanges(); foreach (var s in sources) { if (s.Refresh(source, mapper)) { state.MarkChanged(s); } } var changes = state.GetChanges(); if (mapper.SelectedDPad != -1) { dPads[0] = source.DPads.ElementAt(mapper.SelectedDPad); } else { dPads[0] = DPadHelper.GetDirection(GetBool(XInputTypes.UP), GetBool(XInputTypes.DOWN), GetBool(XInputTypes.LEFT), GetBool(XInputTypes.RIGHT)); } state.SetDPad(0, dPads[0]); var changedDPads = state.GetChangedDpads(); if (changedDPads.Any() || changes.Any()) { InputChanged?.Invoke(this, new DeviceInputChangedEventArgs(changes, changedDPads)); } return(true); }
/// <summary> /// Refreshes the current state. Triggers <see cref="InputChanged"/> event. /// </summary> /// <returns>if the input was available</returns> public bool RefreshInput(bool force = false) { state.ResetChanges(); foreach (var s in sources) { if (s.Refresh(mapper)) { state.MarkChanged(s); } } var changes = state.GetChanges(force); dPads[0] = DPadHelper.GetDirection(GetBool(XInputTypes.UP), GetBool(XInputTypes.DOWN), GetBool(XInputTypes.LEFT), GetBool(XInputTypes.RIGHT)); state.SetDPad(0, dPads[0]); var changedDPads = state.GetChangedDpads(force); if (changedDPads.Any() || changes.Any()) { InputChanged?.Invoke(this, new DeviceInputChangedEventArgs(this, changes, changedDPads)); } return(true); }
/// <summary> /// Refreshes the current state. Triggers <see cref="InputChanged"/> event. /// </summary> /// <returns>if the input was available</returns> public bool RefreshInput(bool force = false) { state.ResetChanges(); foreach (var s in sources) { if (s.Refresh()) { state.MarkChanged(s); } } var changes = state.GetChanges(force); dPads[0] = DPadHelper.GetDirection(GetBool(XInputTypes.UP), GetBool(XInputTypes.DOWN), GetBool(XInputTypes.LEFT), GetBool(XInputTypes.RIGHT)); state.SetDPad(0, dPads[0]); var changedDPads = state.GetChangedDpads(force); if (changedDPads.Any() || changes.Any()) { deviceInputChangedEventArgs.Refresh(changes, changedDPads); InputChanged?.Invoke(this, deviceInputChangedEventArgs); xOutputManager.XOutputDevice.Report(controllerCount, GetValues()); } return(true); }
public void GetDirectionTest(bool up, bool down, bool left, bool right, DPadDirection direction) { DPadDirection dPad = DPadHelper.GetDirection(up, down, left, right); Assert.AreEqual(direction, dPad); }