Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- public class Input8 : MonoBehaviour
- {
- public enum ButtonCode
- {
- Face1,
- Face2,
- Face3,
- Face4,
- LeftBumper,
- RightBumper,
- LeftStickButton,
- RightStickButton,
- }
- public enum AxisCode
- {
- LeftStickX,
- LeftStickY,
- RightStickX,
- RightStickY,
- LeftTrigger,
- RightTrigger,
- }
- [System.Serializable]
- public class ButtonEntry
- {
- public string name;
- public ButtonCode[] buttonCodes;
- public KeyCode[] keyCodes;
- }
- [System.Serializable]
- public class AxisEntry
- {
- public string name;
- public AxisCode[] axisCodes;
- public KeyCode[] keyCodes;
- }
- public bool invertY;
- public float deadZone;
- public ButtonEntry[] buttonEntries;
- public AxisEntry[] axisEntries;
- static Input8 instance;
- enum Platform
- {
- Unknown,
- Windows,
- Mac,
- }
- static Platform platform;
- static KeyCode face1KeyCode;
- static KeyCode face2KeyCode;
- static KeyCode face3KeyCode;
- static KeyCode face4KeyCode;
- static KeyCode leftBumperKeyCode;
- static KeyCode rightBumperKeyCode;
- static KeyCode leftStickButtonKeyCode;
- static KeyCode rightStickButtonKeyCode;
- static string leftStickXName;
- static string leftStickYName;
- static string rightStickXName;
- static string rightStickYName;
- static string triggerLeftName;
- static string triggerRightName;
- void Awake()
- {
- if (instance)
- {
- Destroy(gameObject);
- return;
- }
- instance = this;
- if (Application.platform == RuntimePlatform.OSXEditor || Application.platform == RuntimePlatform.OSXPlayer)
- {
- platform = Platform.Mac;
- face1KeyCode = KeyCode.JoystickButton16;
- face2KeyCode = KeyCode.JoystickButton17;
- face3KeyCode = KeyCode.JoystickButton18;
- face4KeyCode = KeyCode.JoystickButton19;
- leftBumperKeyCode = KeyCode.JoystickButton13;
- rightBumperKeyCode = KeyCode.JoystickButton14;
- leftStickButtonKeyCode = KeyCode.JoystickButton11;
- rightStickButtonKeyCode = KeyCode.JoystickButton12;
- leftStickXName = "joystick 1 analog 0";
- leftStickYName = "joystick 1 analog 1";
- rightStickXName = "joystick 1 analog 2";
- rightStickYName = "joystick 1 analog 3";
- triggerLeftName = "joystick 1 analog 4";
- triggerRightName = "joystick 1 analog 5";
- }
- else if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer)
- {
- platform = Platform.Windows;
- face1KeyCode = KeyCode.JoystickButton0;
- face2KeyCode = KeyCode.JoystickButton1;
- face3KeyCode = KeyCode.JoystickButton2;
- face4KeyCode = KeyCode.JoystickButton3;
- leftBumperKeyCode = KeyCode.JoystickButton4;
- rightBumperKeyCode = KeyCode.JoystickButton5;
- leftStickButtonKeyCode = KeyCode.JoystickButton8;
- rightStickButtonKeyCode = KeyCode.JoystickButton9;
- leftStickXName = "joystick 1 analog 0";
- leftStickYName = "joystick 1 analog 1";
- rightStickXName = "joystick 1 analog 3";
- rightStickYName = "joystick 1 analog 4";
- triggerLeftName = "joystick 1 analog 2";
- triggerRightName = "joystick 1 analog 2";
- }
- }
- public static bool GetButton(ButtonCode buttonCode)
- {
- switch (buttonCode)
- {
- case ButtonCode.Face1:
- return Input.GetKey(face1KeyCode);
- case ButtonCode.Face2:
- return Input.GetKey(face2KeyCode);
- case ButtonCode.Face3:
- return Input.GetKey(face3KeyCode);
- case ButtonCode.Face4:
- return Input.GetKey(face4KeyCode);
- case ButtonCode.LeftBumper:
- return Input.GetKey(leftBumperKeyCode);
- case ButtonCode.RightBumper:
- return Input.GetKey(rightBumperKeyCode);
- case ButtonCode.LeftStickButton:
- return Input.GetKey(leftStickButtonKeyCode);
- case ButtonCode.RightStickButton:
- return Input.GetKey(rightStickButtonKeyCode);
- }
- return false;
- }
- public static bool GetButtonDown(ButtonCode buttonCode)
- {
- switch (buttonCode)
- {
- case ButtonCode.Face1:
- return Input.GetKeyDown(face1KeyCode);
- case ButtonCode.Face2:
- return Input.GetKeyDown(face2KeyCode);
- case ButtonCode.Face3:
- return Input.GetKeyDown(face3KeyCode);
- case ButtonCode.Face4:
- return Input.GetKeyDown(face4KeyCode);
- case ButtonCode.LeftBumper:
- return Input.GetKeyDown(leftBumperKeyCode);
- case ButtonCode.RightBumper:
- return Input.GetKeyDown(rightBumperKeyCode);
- case ButtonCode.LeftStickButton:
- return Input.GetKeyDown(leftStickButtonKeyCode);
- case ButtonCode.RightStickButton:
- return Input.GetKeyDown(rightStickButtonKeyCode);
- }
- return false;
- }
- public static bool GetButtonUp(ButtonCode buttonCode)
- {
- switch (buttonCode)
- {
- case ButtonCode.Face1:
- return Input.GetKeyUp(face1KeyCode);
- case ButtonCode.Face2:
- return Input.GetKeyUp(face2KeyCode);
- case ButtonCode.Face3:
- return Input.GetKeyUp(face3KeyCode);
- case ButtonCode.Face4:
- return Input.GetKeyUp(face4KeyCode);
- case ButtonCode.LeftBumper:
- return Input.GetKeyUp(leftBumperKeyCode);
- case ButtonCode.RightBumper:
- return Input.GetKeyUp(rightBumperKeyCode);
- case ButtonCode.LeftStickButton:
- return Input.GetKeyUp(leftStickButtonKeyCode);
- case ButtonCode.RightStickButton:
- return Input.GetKeyUp(rightStickButtonKeyCode);
- }
- return false;
- }
- public static float GetAxis(AxisCode axisCode)
- {
- switch (axisCode)
- {
- case AxisCode.LeftStickX:
- return Input.GetAxis(leftStickXName);
- case AxisCode.LeftStickY:
- return Input.GetAxis(leftStickYName) * (instance.invertY?-1f:1f);
- case AxisCode.RightStickX:
- return Input.GetAxis(rightStickXName);
- case AxisCode.RightStickY:
- return Input.GetAxis(rightStickYName) * (instance.invertY?-1f:1f);
- case AxisCode.LeftTrigger:
- {
- if (platform == Platform.Mac)
- return (Input.GetAxis(triggerLeftName) + 1f) / 2f;
- else if (platform == Platform.Windows)
- {
- float v = Input.GetAxis(triggerLeftName);
- if (v > 0f)
- return v;
- }
- else
- return Input.GetAxis(triggerLeftName);
- }
- break;
- case AxisCode.RightTrigger:
- {
- if (platform == Platform.Mac)
- return (Input.GetAxis(triggerRightName) + 1f) / 2f;
- else if (platform == Platform.Windows)
- {
- float v = Input.GetAxis(triggerRightName);
- if (v < 0f)
- return -v;
- }
- else
- return Input.GetAxis(triggerRightName);
- }
- break;
- }
- return 0f;
- }
- public static bool GetButtonDown(string buttonName)
- {
- ButtonEntry buttonEntry = instance.GetButtonEntryByName(buttonName);
- if (buttonEntry != null)
- {
- foreach (KeyCode keyCode in buttonEntry.keyCodes)
- {
- if (Input.GetKeyDown(keyCode))
- {
- return true;
- }
- }
- foreach (ButtonCode buttonCode in buttonEntry.buttonCodes)
- {
- if (GetButtonDown(buttonCode))
- {
- return true;
- }
- }
- }
- return false;
- }
- public static bool GetButtonUp(string buttonName)
- {
- ButtonEntry buttonEntry = instance.GetButtonEntryByName(buttonName);
- if (buttonEntry != null)
- {
- foreach (KeyCode keyCode in buttonEntry.keyCodes)
- {
- if (Input.GetKeyUp(keyCode))
- {
- return true;
- }
- }
- foreach (ButtonCode buttonCode in buttonEntry.buttonCodes)
- {
- if (GetButtonUp(buttonCode))
- {
- return true;
- }
- }
- }
- return false;
- }
- public static bool GetButton(string buttonName)
- {
- ButtonEntry buttonEntry = instance.GetButtonEntryByName(buttonName);
- if (buttonEntry != null)
- {
- foreach (KeyCode keyCode in buttonEntry.keyCodes)
- {
- if (Input.GetKey(keyCode))
- {
- return true;
- }
- }
- foreach (ButtonCode buttonCode in buttonEntry.buttonCodes)
- {
- if (GetButton(buttonCode))
- {
- return true;
- }
- }
- }
- return false;
- }
- public static float GetAxis(string axisName)
- {
- float axisValue = 0f;
- AxisEntry axisEntry = instance.GetAxisEntryByName(axisName);
- if (axisEntry != null)
- {
- foreach (AxisCode axisCode in axisEntry.axisCodes)
- {
- axisValue += GetAxis(axisCode);
- }
- for (int i = 0; i < axisEntry.keyCodes.Length; i++)
- {
- if (Input.GetKey(axisEntry.keyCodes[i]))
- {
- axisValue += ((i % 2 == 0)?-1f:1f);
- }
- }
- }
- if (Mathf.Abs(axisValue) < instance.deadZone)
- {
- axisValue = 0f;
- }
- return axisValue;
- }
- public static float GetAxisRaw(string axisName)
- {
- return GetAxis(axisName);
- }
- ButtonEntry GetButtonEntryByName(string name)
- {
- foreach (ButtonEntry buttonEntry in buttonEntries)
- {
- if (buttonEntry.name == name)
- {
- return buttonEntry;
- }
- }
- Debug.Log("Could not find ButtonEntry named: " + name);
- return null;
- }
- AxisEntry GetAxisEntryByName(string name)
- {
- foreach (AxisEntry axisEntry in axisEntries)
- {
- if (axisEntry.name == name)
- {
- return axisEntry;
- }
- }
- Debug.Log("Could not find AxisEntry named: " + name);
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement