/* * 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 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)); } }
/* * 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); } }
/* * 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); } }