using NRKernal; using SC.XR.Unity.Module_InputSystem; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.XR; using UnityEngine.XR.OpenXR.Input; public class XRInputManager : MonoBehaviour { public Transform left = null; public Transform right = null; public InputActionProperty inputEvent; public List listinput; int xy = 8; // Start is called before the first frame update void Start() { NRInput.AddDownListener(ControllerHandEnum.Right, ControllerButton.APP, () => { Debug.Log("ControllerButton.APP===>Down"); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.DOWN); }); NRInput.AddDownListener(ControllerHandEnum.Right, ControllerButton.BEGIN, () => { Debug.Log("ControllerButton.BEGIN===>Down"); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.DOWN); }); NRInput.AddDownListener(ControllerHandEnum.Right, ControllerButton.END, () => { Debug.Log("ControllerButton.END===>Down"); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.DOWN); }); NRInput.AddDownListener(ControllerHandEnum.Right, ControllerButton.GRIP, () => { Debug.Log("ControllerButton.GRIP===>Down"); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.DOWN); }); NRInput.AddDownListener(ControllerHandEnum.Right, ControllerButton.HOME, () => { Debug.Log("ControllerButton.HOME===>Down"); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.DOWN); }); NRInput.AddDownListener(ControllerHandEnum.Right, ControllerButton.TRIGGER, () => { Debug.Log("ControllerButton.TRIGGER===>Down"); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.DOWN); }); NRInput.AddDownListener(ControllerHandEnum.Right, ControllerButton.TOUCHPAD_BUTTON, () => { Debug.Log("ControllerButton.TOUCHPAD_BUTTON===>Down"); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.DOWN); }); NRInput.AddUpListener(ControllerHandEnum.Right, ControllerButton.APP, () => { Debug.Log("ControllerButton.APP===>UP"); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.UP); }); NRInput.AddUpListener(ControllerHandEnum.Right, ControllerButton.BEGIN, () => { Debug.Log("ControllerButton.BEGIN===>UP"); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.UP); }); NRInput.AddUpListener(ControllerHandEnum.Right, ControllerButton.END, () => { Debug.Log("ControllerButton.END===>UP"); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.UP); }); NRInput.AddUpListener(ControllerHandEnum.Right, ControllerButton.GRIP, () => { Debug.Log("ControllerButton.GRIP===>UP"); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.UP); }); NRInput.AddUpListener(ControllerHandEnum.Right, ControllerButton.HOME, () => { Debug.Log("ControllerButton.HOME===>UP"); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.UP); }); NRInput.AddUpListener(ControllerHandEnum.Right, ControllerButton.TRIGGER, () => { Debug.Log("ControllerButton.HOME===>TRIGGER"); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.UP); }); NRInput.AddUpListener(ControllerHandEnum.Right, ControllerButton.TOUCHPAD_BUTTON, () => { Debug.Log("ControllerButton.HOME===>TOUCHPAD_BUTTON"); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.UP); }); #if UNITY_EDITOR Invoke("startXR", 1f); #endif return; for (int i = 0; i < 15; i++) { listinput[i].action.Enable(); listinput[i].action.performed += OnEventL; listinput[i].action.canceled += OnCanceledEventL; } for (int i = 15; i < listinput.Count; i++) { listinput[i].action.Enable(); listinput[i].action.performed += OnEventR; listinput[i].action.canceled += OnCanceledEventR; } InputDevices.deviceConnected += onDeviceConnected; InputDevices.deviceDisconnected += onDeviceDisConnected; Invoke("startXR", 1f); } private void downTP() { } List leftInfo = new List(); List rightInfo = new List(); void startXR() { Module_InputSystem.instance.SetActiveInputDevice(InputDeviceType.KS, false); Module_InputSystem.instance.SetActiveInputDevice(InputDeviceType.Head, true); /* left.gameObject.SetActive(false); right.gameObject.SetActive(false); List inputDevices = new List(); InputDevices.GetDevices(inputDevices); for (int i = 0; i < inputDevices.Count; i++) { onDeviceConnected(inputDevices[i]); }*/ } private void Update() { if (Input.GetKeyDown(KeyCode.X)) { API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.X, InputKeyState.DOWN); } if (Input.GetKeyUp(KeyCode.X)) { API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.X, InputKeyState.UP); } } private void onDeviceDisConnected(UnityEngine.XR.InputDevice obj) { if (obj.characteristics.ToString().Contains(InputDeviceCharacteristics.Left.ToString())) { Debug.Log("Left===>" + obj.isValid); left.gameObject.SetActive(obj.isValid); } if (obj.characteristics.ToString().Contains(InputDeviceCharacteristics.Right.ToString())) { Debug.Log("Right===>" + obj.isValid); right.gameObject.SetActive(obj.isValid); } } private void OnApplicationPause(bool pause) { if (!pause) { List inputDevices = new List(); InputDevices.GetDevices(inputDevices); for (int i = 0; i < inputDevices.Count; i++) { onDeviceConnected(inputDevices[i]); } } } private void onDeviceConnected(UnityEngine.XR.InputDevice obj) { if (obj.characteristics.ToString().Contains(InputDeviceCharacteristics.Left.ToString())) { Debug.Log("Left===>" + obj.isValid); left.gameObject.SetActive(obj.isValid); } if (obj.characteristics.ToString().Contains(InputDeviceCharacteristics.Right.ToString())) { Debug.Log("Right===>" + obj.isValid); right.gameObject.SetActive(obj.isValid); } } private void OnCanceledEventL(InputAction.CallbackContext context) { Debug.Log("OnCanceledEventL" + context.control.name); switch (context.control.name) { case "secondarytouched": break; case "secondarybutton": API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Y, InputKeyState.UP); break; case "primarytouched": break; case "primarybutton": Debug.Log("InputKeyCode.A===ˇ·UP"); API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.X, InputKeyState.UP); API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.UP); break; case "touchpadtouched": break; case "thumbstickclicked": break; case "thumbstick": API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.JoystickX = xy + (int)(context.ReadValue().x * 10); API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.JoystickY = xy + (int)(context.ReadValue().y * 10); break; case "grip": API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.HallInside = 10 - (int)((context.ReadValue()) * 10f); break; case "grippressed": API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.LHallInside, InputKeyState.UP); break; case "trigger": API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.HallFoward = 10 - (int)((context.ReadValue()) * 10f); break; case "menu": Module_InputSystem.instance.SetActiveInputDevice(InputDeviceType.KS, true); Module_InputSystem.instance.SetActiveInputDevice(InputDeviceType.Head, false); API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.LFunction, InputKeyState.UP); break; } } void OnEventL(InputAction.CallbackContext context) { Debug.Log("OnEventL" + context.control.name); switch (context.control.name) { case "secondarytouched": break; case "secondarybutton": API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Y, InputKeyState.DOWN); break; case "primarytouched": break; case "primarybutton": Debug.Log("InputKeyCode.A===ˇ·DOWN"); API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.X, InputKeyState.DOWN); API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.DOWN); break; case "touchpadtouched": break; case "thumbstickclicked": break; case "thumbstick": API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.JoystickX = xy + (int)(context.ReadValue().x * 10); API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.JoystickY = xy + (int)(context.ReadValue().y * 10); break; case "grip": API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.HallInside = 10 - (int)((context.ReadValue()) * 10f); break; case "grippressed": API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.LHallInside, InputKeyState.DOWN); break; case "trigger": API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.HallFoward = 10 - (int)((context.ReadValue()) * 10f); break; case "menu": API_GSXR_Module_InputSystem_KS.GSXR_KSLeft.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.LFunction, InputKeyState.DOWN); break; } } private void OnCanceledEventR(InputAction.CallbackContext context) { Debug.Log("OnCanceledEventR" + context.control.name); switch (context.control.name) { case "secondarytouched": break; case "secondarybutton": API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.B, InputKeyState.UP); break; case "primarytouched": break; case "primarybutton": API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.A, InputKeyState.UP); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.UP); break; case "touchpadtouched": break; case "thumbstickclicked": break; case "thumbstick": API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.JoystickX = xy + (int)(context.ReadValue().x * 10); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.JoystickY = xy + (int)(context.ReadValue().y * 10); break; case "grip": API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.HallInside = 10 - (int)((context.ReadValue()) * 10f); break; case "grippressed": API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.RHallInside, InputKeyState.UP); break; case "trigger": API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.HallFoward = 10 - (int)((context.ReadValue()) * 10f); break; case "menu": API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.RFunction, InputKeyState.UP); break; } } void OnEventR(InputAction.CallbackContext context) { Debug.Log("OnEventR" + context.control.name); switch (context.control.name) { case "secondarytouched": break; case "secondarybutton": API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.B, InputKeyState.DOWN); break; case "primarytouched": break; case "primarybutton": API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.A, InputKeyState.DOWN); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.Enter, InputKeyState.DOWN); break; case "touchpadtouched": break; case "thumbstickclicked": break; case "thumbstick": API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.JoystickX = xy + (int)(context.ReadValue().x * 10); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.JoystickY = xy + (int)(context.ReadValue().y * 10); break; case "grip": API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.HallInside = 10 - (int)((context.ReadValue()) * 10f); break; case "grippressed": API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.RHallInside, InputKeyState.DOWN); break; case "trigger": API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.HallFoward = 10 - (int)((context.ReadValue()) * 10f); break; case "menu": Module_InputSystem.instance.SetActiveInputDevice(InputDeviceType.KS, true); Module_InputSystem.instance.SetActiveInputDevice(InputDeviceType.Head, false); API_GSXR_Module_InputSystem_KS.GSXR_KSRight.inputDataKS.inputKeys.InputDataAddKey(InputKeyCode.RFunction, InputKeyState.DOWN); break; } } // Debug.Log("OnEvent=name==>" + context.control.name); /* Debug.Log("OnEvent=layout==>" + context.control.layout); Debug.Log("OnEvent=noisy==>" + context.control.noisy); Debug.Log("OnEvent=path==>" + context.control.path); Debug.Log("OnEvent=shortDisplayName==>" + context.control.shortDisplayName); Debug.Log("OnEvent=synthetic==>" + context.control.synthetic); Debug.Log("OnEvent=valueSizeInBytes==>" + context.control.valueSizeInBytes); Debug.Log("OnEvent=valueType==>" + context.control.valueType.Name); Debug.Log("OnEvent=variants==>" + context.control.variants); Debug.Log("OnEvent=variants==>" + context.control.EvaluateMagnitude());*/ }