public static AxisDelegateFactory CreateAxisDelegateFactory(SPInputId positive, SPInputId negative) { return((j) => { return CreateAxisDelegate(positive, negative, j); }); }
/* * Triggers */ public static AxisDelegate CreateTriggerDelegate(SPInputId axis, Joystick joystick = Joystick.All, AxleValueConsideration axisConsideration = AxleValueConsideration.Positive) { var inputId = SPInputDirect.GetInputName(axis, joystick); if (axis.IsAxis()) { switch (axisConsideration) { case AxleValueConsideration.Positive: return(() => UnityEngine.Mathf.Clamp01(UnityEngine.Input.GetAxisRaw(inputId))); case AxleValueConsideration.Negative: return(() => - UnityEngine.Mathf.Clamp(UnityEngine.Input.GetAxisRaw(inputId), -1f, 0f)); case AxleValueConsideration.Absolute: return(() => Math.Abs(UnityEngine.Input.GetAxisRaw(inputId))); default: return(null); } } else { return(() => UnityEngine.Input.GetButton(inputId) ? 1f : 0f); } }
/* * Delegate factories */ public static ButtonDelegateFactory CreateButtonDelegateFactory(SPInputId button) { return((j) => { return CreateButtonDelegate(button, j); }); }
/* * Axes */ public static AxisDelegate CreateAxisDelegate(SPInputId axis, Joystick joystick = Joystick.All, bool invert = false) { var inputId = SPInputDirect.GetInputName(axis, joystick); if (axis.IsAxis()) { if (invert) { return(() => - UnityEngine.Input.GetAxisRaw(inputId)); } else { return(() => UnityEngine.Input.GetAxisRaw(inputId)); } } else { if (invert) { return(() => UnityEngine.Input.GetButton(inputId) ? -1f : 0f); } else { return(() => UnityEngine.Input.GetButton(inputId) ? 1f : 0f); } } }
public static ButtonDelegateFactory CreateAxleButtonDelegateFactory(SPInputId axis, AxleValueConsideration consideration, float axleButtonDeadZone = InputUtil.DEFAULT_AXLEBTNDEADZONE) { return((j) => { return CreateAxleButtonDelegate(axis, consideration, j, axleButtonDeadZone); }); }
public static ButtonDelegate CreateAxleButtonDelegate(SPInputId axis, AxleValueConsideration consideration, Joystick joystick = Joystick.All, float axleButtonDeadZone = InputUtil.DEFAULT_AXLEBTNDEADZONE) { var inputId = SPInputDirect.GetInputName(axis, joystick); if (axis.IsAxis()) { switch (consideration) { case AxleValueConsideration.Positive: return(() => UnityEngine.Input.GetAxisRaw(inputId) > axleButtonDeadZone); case AxleValueConsideration.Negative: return(() => UnityEngine.Input.GetAxisRaw(inputId) < -axleButtonDeadZone); case AxleValueConsideration.Absolute: return(() => Math.Abs(UnityEngine.Input.GetAxisRaw(inputId)) > axleButtonDeadZone); default: return(null); } } else { return(() => UnityEngine.Input.GetButton(inputId)); } }
public static AxisDelegateFactory CreateAxisDelegateFactory(SPInputId axis, bool invert = false) { return((j) => { return CreateAxisDelegate(axis, j, invert); }); }
public static InputToken CreateButton(SPInputId button) { return(new InputToken() { Type = InputType.Joystick, Mode = InputMode.Button, Value = (int)button }); }
public static InputToken CreateLongTrigger(SPInputId axis) { return(new InputToken() { Type = InputType.Joystick, Mode = InputMode.LongTrigger, Value = (int)axis }); }
public static InputToken CreateEmulatedAxis(SPInputId positiveButton, SPInputId negativeButton) { return(new InputToken() { Type = InputType.Joystick, Mode = InputMode.Axis, Value = (int)positiveButton, AltValue = (int)negativeButton }); }
public static InputToken CreateAxis(SPInputId axis, bool invert = false) { return(new InputToken() { Type = InputType.Joystick, Mode = InputMode.Axis, Value = (int)axis, AltValue = invert ? 1 : 0 }); }
public static InputToken CreateTrigger(SPInputId axis, AxleValueConsideration consideration = AxleValueConsideration.Positive) { return(new InputToken() { Type = InputType.Joystick, Mode = InputMode.Trigger, Value = (int)axis, AltValue = (int)consideration }); }
public static InputToken CreateAxleButton(SPInputId axis, AxleValueConsideration consideration = AxleValueConsideration.Positive, float deadZone = InputUtil.DEFAULT_AXLEBTNDEADZONE) { return(new InputToken() { Type = InputType.Joystick, Mode = InputMode.AxleButton, Value = (int)axis, AltValue = (int)consideration, DeadZone = deadZone }); }
/* * Long Trigers */ /// <summary> /// Some controller's triggers register -1 as inactive, and 1 as active. This creates a TriggerDelegate that normalizes this value to 0->1. /// </summary> /// <param name="axis"></param> /// <param name="joystick"></param> /// <returns></returns> public static AxisDelegate CreateLongTriggerDelegate(SPInputId axis, Joystick joystick = Joystick.All) { var inputId = SPInputDirect.GetInputName(axis, joystick); if (axis.IsAxis()) { return(() => (UnityEngine.Input.GetAxisRaw(inputId) + 1f) / 2f); } else { return(() => UnityEngine.Input.GetButton(inputId) ? 1f : 0f); } }
/* * Buttons */ public static ButtonDelegate CreateButtonDelegate(SPInputId button, Joystick joystick = Joystick.All) { var inputId = SPInputDirect.GetInputName(button, joystick); if (button.IsButton()) { return(() => UnityEngine.Input.GetButton(inputId)); } else { return(() => UnityEngine.Input.GetAxisRaw(inputId) > InputUtil.DEFAULT_AXLEBTNDEADZONE); } }
public static bool TryPollButton(out SPInputId button, ButtonState state = ButtonState.Down, Joystick joystick = Joystick.All) { if (joystick != Joystick.None) { for (int i = ID_BUTTONLOW; i <= ID_BUTTONHIGH; i++) { switch (state) { case ButtonState.None: if (!UnityEngine.Input.GetButton(GetInputName((SPInputId)i, joystick))) { button = (SPInputId)i; return(true); } break; case ButtonState.Down: if (UnityEngine.Input.GetButtonDown(GetInputName((SPInputId)i, joystick))) { button = (SPInputId)i; return(true); } break; case ButtonState.Held: if (UnityEngine.Input.GetButton(GetInputName((SPInputId)i, joystick))) { button = (SPInputId)i; return(true); } break; case ButtonState.Released: if (UnityEngine.Input.GetButtonUp(GetInputName((SPInputId)i, joystick))) { button = (SPInputId)i; return(true); } break; } } } button = SPInputId.Unknown; return(false); }
public static bool TryPollAxis(out SPInputId axis, Joystick joystick = Joystick.All, bool pollMouse = false, float deadZone = InputUtil.DEFAULT_AXLEBTNDEADZONE) { if (joystick != Joystick.None) { int high = pollMouse ? ID_AXISHIGH : ID_AXISMID; for (int i = ID_AXISLOW; i <= high; i++) { float v = Input.GetAxis(GetInputName((SPInputId)i, joystick)); if (Mathf.Abs(v) > deadZone) { axis = (SPInputId)i; return(true); } } } axis = SPInputId.Unknown; return(false); }
public static bool GetButton(SPInputId button, ButtonState state, Joystick joystick = Joystick.All) { switch (state) { case ButtonState.None: return(!UnityEngine.Input.GetButton(GetInputName(button, joystick))); case ButtonState.Down: return(UnityEngine.Input.GetButtonDown(GetInputName(button, joystick))); case ButtonState.Held: return(UnityEngine.Input.GetButton(GetInputName(button, joystick))); case ButtonState.Released: return(UnityEngine.Input.GetButtonUp(GetInputName(button, joystick))); default: return(false); } }
public void RegisterTrigger(XboxInputId trigger, SPInputId axis, AxleValueConsideration consideration = AxleValueConsideration.Positive) { _axisTable[trigger] = InputToken.CreateTrigger(axis, consideration); _buttonTable.Remove(trigger); }
/// <summary> /// The PS4 Controller L2/R2 triggers on some platforms registers -1 when depressed, and 1 when pressed. This creates a factory that normalizes those values to 0->1 /// </summary> /// <param name="axis"></param> /// <param name="invert"></param> /// <returns></returns> public static AxisDelegateFactory CreateLongTriggerDelegateFactory(SPInputId axis) { return((j) => CreateLongTriggerDelegate(axis, j)); }
private System.Collections.IEnumerator WorkRoutine(float delay) { yield return(WaitForDuration.Seconds(delay, SPTime.Real)); SPInputId positiveBtn = SPInputId.Unknown; UnityEngine.KeyCode positiveKey = UnityEngine.KeyCode.None; float t = float.NegativeInfinity; while (_state == State.Running) { if (UnityEngine.Input.GetKeyDown(this.CancelKey)) { this.Cancel(); yield break; } if (this.CancelDelegate != null && this.CancelDelegate()) { this.Cancel(); yield break; } if (this.CustomPollingCallback != null) { InputToken token; if (this.CustomPollingCallback(this, out token)) { this.InputResult = token; goto Complete; } } if (this.PollFromStandardSPInputs) { if (this.PollJoyAxes || this.PollMouseAxes) { SPInputId axis; float value; if (SPInputDirect.TryPollAxis(out axis, out value, this.Joystick, this.PollMouseAxes, this.AxisPollingDeadZone) && TestConsideration(value, this.AxisConsideration, this.AxisPollingDeadZone)) { if ((this.PollJoyAxes && axis.IsJoyAxis()) || (this.PollMouseAxes && axis.IsMouseAxis())) { if (this.PollAsTrigger) { this.InputResult = InputToken.CreateTrigger(axis); } else { this.InputResult = InputToken.CreateAxis(axis, value < 0f); } goto Complete; } } } if (this.PollButtons) { SPInputId btn; if (SPInputDirect.TryPollButton(out btn, this.ButtonPollingState, this.Joystick)) { if (this.PollAsTrigger) { this.InputResult = InputToken.CreateTrigger(btn, AxleValueConsideration.Positive); goto Complete; } if (positiveBtn != SPInputId.Unknown) { this.InputResult = InputToken.CreateEmulatedAxis(positiveBtn, btn); goto Complete; } else { positiveKey = UnityEngine.KeyCode.None; positiveBtn = btn; t = UnityEngine.Time.realtimeSinceStartup; goto Restart; } } } } if (this.PollKeyboard) { UnityEngine.KeyCode key; if (SPInputDirect.TryPollKey(out key, this.ButtonPollingState)) { if (this.PollAsTrigger) { this.InputResult = InputToken.CreateTrigger(key); goto Complete; } if (positiveKey != UnityEngine.KeyCode.None) { this.InputResult = InputToken.CreateEmulatedAxis(positiveKey, key); goto Complete; } else { positiveBtn = SPInputId.Unknown; positiveKey = key; t = UnityEngine.Time.realtimeSinceStartup; goto Restart; } } } Restart: yield return(null); if (UnityEngine.Time.realtimeSinceStartup - t > this.ButtonPressMonitorDuration) { positiveBtn = SPInputId.Unknown; positiveKey = UnityEngine.KeyCode.None; } } Complete: _state = State.Complete; _routine = null; this.SignalOnComplete(); }
public static bool IsJoyAxis(this SPInputId id) { return(id >= SPInputId.Axis1 && id <= SPInputId.Axis28); }
public static AxisDelegateFactory CreateTriggerDelegateFactory(SPInputId axis, AxleValueConsideration axisConsideration = AxleValueConsideration.Positive) { return((j) => CreateTriggerDelegate(axis, j, axisConsideration)); }
public static bool IsJoyButton(this SPInputId id) { return(id >= SPInputId.Button0 && id <= SPInputId.Button19); }
public static bool IsAxis(this SPInputId id) { return(id >= SPInputId.Axis1 && id <= SPInputId.MouseAxis3); }
public static bool IsButton(this SPInputId id) { return(id >= SPInputId.Button0 && id <= SPInputId.MouseButton6); }
public static string GetInputName(SPInputId id, Joystick joystick = Joystick.All) { if (id == SPInputId.Unknown) { return(null); } if (_inputIdToName == null) { _inputIdToName = new Dictionary <int, string>(); } int hash = (int)joystick | ((int)id << 4); string sname; if (_inputIdToName.TryGetValue(hash, out sname)) { return(sname); } if (joystick == Joystick.All) { if (id.IsJoyAxis()) { sname = string.Format("JoyAll-Axis{0:00}", (int)id); } else if (id.IsMouseAxis()) { sname = string.Format("MouseAxis{0:0}", (int)id - (int)SPInputId.MouseAxis1 + 1); } else if (id.IsJoyButton()) { sname = string.Format("JoyAll-Button{0:00}", (int)id - (int)SPInputId.Button0); } else if (id.IsMouseButton()) { sname = string.Format("MouseButton{0:0}", (int)id - (int)SPInputId.MouseButton0); } } else { if (id.IsJoyAxis()) { sname = string.Format("Joy{0:0}-Axis{1:00}", (int)joystick, (int)id); } else if (id.IsMouseAxis()) { sname = string.Format("MouseAxis{0:0}", (int)id - (int)SPInputId.MouseAxis1 + 1); } else if (id.IsJoyButton()) { sname = string.Format("Joy{0:0}-Button{1:00}", (int)joystick, (int)id - (int)SPInputId.Button0); } else if (id.IsMouseButton()) { sname = string.Format("MouseButton{0:0}", (int)id - (int)SPInputId.MouseButton0); } } _inputIdToName[hash] = sname; return(sname); }
public static bool GetButtonUp(SPInputId button, Joystick joystick = Joystick.All) { return(UnityEngine.Input.GetButtonUp(GetInputName(button, joystick))); }
public static float GetAxis(SPInputId axis, Joystick joystick = Joystick.All) { return(UnityEngine.Input.GetAxis(GetInputName(axis, joystick))); }
public static AxisDelegate CreateAxisDelegate(SPInputId positive, SPInputId negative, Joystick joystick = Joystick.All) { return(CreateAxisDelegate(CreateButtonDelegate(positive, joystick), CreateButtonDelegate(negative, joystick))); }