public NxrLaserPointer GetControllerLaser(InteractionManager.NACTION_HAND_TYPE hAND_TYPE) { if (DualCtrlDeviceDict.ContainsKey(hAND_TYPE)) { NxrTrackedDevice nxrTrackedDevice = DualCtrlDeviceDict[hAND_TYPE]; return(nxrTrackedDevice.GetLaserPointer()); } return(null); }
/// <summary> /// Check 6dof controller key status, whether the button is pressed. /// </summary> /// <param name="key">refer to CKeyEvent</param> /// <param name="handType">left or right</param> /// <returns></returns> public static bool GetControllerKeyPressed(int key, InteractionManager.NACTION_HAND_TYPE handType) { bool isPressed = false; if (handType == InteractionManager.NACTION_HAND_TYPE.HAND_LEFT) { isPressed = KeyStateControllerNOLO_Left[key] == CKeyEvent.ACTION_DOWN; } else if (handType == InteractionManager.NACTION_HAND_TYPE.HAND_RIGHT) { isPressed = KeyStateControllerNOLO_Right[key] == CKeyEvent.ACTION_DOWN; } if (isPressed) { return(true); } return(false); }
void OnControllerStatusChangeEvent(InteractionManager.NACTION_HAND_TYPE handType, bool isConnected, bool isSixDofController) { if (!isSixDofController) { Debug.Log("---OnControllerStatusChangeEvent---isSixDofController=false-"); return; } DualCtrlConnected[(int)handType] = isConnected; if (handType == InteractionManager.NACTION_HAND_TYPE.HAND_LEFT && isConnected) { Debug.Log("---CreateControllerModel---Left-"); LoadControllerModel(NxrInstantNativeApi.HoloeverDeviceType.LeftController, "Controller6DofLeft"); } if (handType == InteractionManager.NACTION_HAND_TYPE.HAND_RIGHT && isConnected) { Debug.Log("---CreateControllerModel---Right-"); LoadControllerModel(NxrInstantNativeApi.HoloeverDeviceType.RightController, "Controller6DofRight"); } }
private void CreateControllerModel(NxrInstantNativeApi.HoloeverDeviceType deviceType, string objName, InteractionManager.ControllerConfig mControllerConfig) { string objPath = mControllerConfig.objPath; if (deviceType == NxrInstantNativeApi.HoloeverDeviceType.LeftController) { objPath = mControllerConfig.leftCtrlObjPath; } else if (deviceType == NxrInstantNativeApi.HoloeverDeviceType.RightController) { objPath = mControllerConfig.rightCtrlObjPath; } if (objPath == null) { Debug.LogError("CreateControllerModel failed, objPath is null......" + objName); return; } GameObject go = new GameObject(objName); NxrLaserPointer mNxrLaserPointer = go.AddComponent <NxrLaserPointer>(); mNxrLaserPointer.deviceType = deviceType; go.transform.SetParent(transformCache); go.transform.localScale = Vector3.one; go.transform.localPosition = new Vector3(0, 0, 0); go.transform.localRotation = new Quaternion(0, 0, 0, 1); GameObject modelGOParent = new GameObject("model_P"); modelGOParent.transform.localScale = new Vector3(-1, 1, 1); modelGOParent.transform.localPosition = new Vector3(0, 0, 0); modelGOParent.transform.localRotation = new Quaternion(0, 0, 0, 1); modelGOParent.transform.SetParent(go.transform); GameObject modelGO = new GameObject("model"); modelGO.transform.SetParent(modelGOParent.transform); modelGO.transform.localScale = new Vector3(mControllerConfig.modelScale[0] , mControllerConfig.modelScale[1], mControllerConfig.modelScale[2]); modelGO.transform.localRotation = Quaternion.Euler(mControllerConfig.modelRotation[0], mControllerConfig.modelRotation[1], mControllerConfig.modelRotation[2]); modelGO.transform.localPosition = new Vector3(mControllerConfig.modelPosition[0] , mControllerConfig.modelPosition[1], mControllerConfig.modelPosition[2]); modelGO.AddComponent <NxrControllerModel>(); // string objPath = "/system/etc/Objs/housing_bott.obj"; Debug.Log("objPath=" + objPath); ObjModelLoader mObjModelLoader = go.GetComponent <ObjModelLoader>(); if (mObjModelLoader == null) { go.AddComponent <ObjMaterial>(); mObjModelLoader = go.AddComponent <ObjModelLoader>(); } mObjModelLoader.LoadObjFile(objPath, modelGO.transform); GameObject powerGO = new GameObject("Power"); powerGO.transform.SetParent(go.transform); MeshRenderer powerMeshRenderer = powerGO.AddComponent <MeshRenderer>(); Mesh quadMesh = new Mesh(); quadMesh.name = "QUAD"; float quadSize = 0.5f; quadMesh.vertices = new Vector3[] { new Vector3(-1 * quadSize, -1 * quadSize, 0), new Vector3(-1 * quadSize, 1 * quadSize, 0), new Vector3(1 * quadSize, 1 * quadSize, 0), new Vector3(1 * quadSize, -1 * quadSize, 0) }; quadMesh.uv = new Vector2[] { new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1), new Vector2(1, 0) }; int[] triangles = { 0, 1, 2, 0, 2, 3 }; quadMesh.triangles = triangles; powerGO.AddComponent <MeshFilter>().mesh = quadMesh; powerGO.AddComponent <MeshCollider>(); powerGO.AddComponent <HoloeverControllerPower>(); powerGO.transform.localPosition = new Vector3(mControllerConfig.batteryPosition[0], mControllerConfig.batteryPosition[1] , mControllerConfig.batteryPosition[2]); powerGO.transform.localRotation = Quaternion.Euler(mControllerConfig.batteryRotation[0], mControllerConfig.batteryRotation[1] , mControllerConfig.batteryRotation[2]); powerGO.transform.localScale = new Vector3(mControllerConfig.batteryScale[0], mControllerConfig.batteryScale[1] , mControllerConfig.batteryScale[2]); // 射线起点 mNxrLaserPointer.SetHolderLocalPosition(new Vector3(mControllerConfig.rayStartPosition[0], mControllerConfig.rayStartPosition[1], mControllerConfig.rayStartPosition[2])); NxrTrackedDevice trackedDevice = go.AddComponent <NxrTrackedDevice>(); if (trackedDevice != null) { trackedDevice.ReloadLaserPointer(mNxrLaserPointer); trackedDevice.deviceType = deviceType; InteractionManager.NACTION_HAND_TYPE mHandType = deviceType == NxrInstantNativeApi.HoloeverDeviceType.LeftController ? InteractionManager.NACTION_HAND_TYPE.HAND_LEFT : InteractionManager.NACTION_HAND_TYPE.HAND_RIGHT; if (!DualCtrlDeviceDict.ContainsKey(mHandType)) { DualCtrlDeviceDict.Add(mHandType, trackedDevice); } else { DualCtrlDeviceDict[mHandType] = trackedDevice; } } if (deviceType == NxrInstantNativeApi.HoloeverDeviceType.LeftController) { leftObj = go; leftModelGo = modelGO; } else if (deviceType == NxrInstantNativeApi.HoloeverDeviceType.RightController) { rightObj = go; rightModelGo = modelGO; } //close NxrViewer.Instance.SwitchControllerMode(true); Debug.Log("HideGaze.ForceUseReticle3"); }
// Update is called once per frame void Update() { //GameObject controllerDot = NibiruAxis.NxrPlayerCtrl.Instance.GetControllerLaserDot(); //if (controllerDot != null) //{ // Debug.Log("Contoller Dot:" + controllerDot.transform.position.ToString()); //} //NxrReticle reticle = NxrViewer.Instance.GetNxrReticle(); //if (reticle.IsShowing()) //{ // Debug.Log("Reticle:" + reticle.GetReticlePointer().transform.position.ToString()); //} if (NxrInput.GetKeyDown(CKeyEvent.KEYCODE_DPAD_CENTER)) { textMesh.text = "HMD Enter : Down"; } if (NxrInput.GetKeyPressed(CKeyEvent.KEYCODE_DPAD_CENTER)) { textMesh.text = "HMD Enter : Pressed"; } if (NxrInput.GetKeyUp(CKeyEvent.KEYCODE_DPAD_CENTER)) { textMesh.text = "HMD Enter : Up"; } if (NxrInput.GetKeyDown(CKeyEvent.KEYCODE_BACK)) { textMesh.text = "HMD Back : Down"; } if (NxrInput.GetKeyPressed(CKeyEvent.KEYCODE_BACK)) { textMesh.text = "HMD Back : Pressed"; } if (NxrInput.GetKeyUp(CKeyEvent.KEYCODE_BACK)) { textMesh.text = "HMD Back : Up"; } if (NxrInput.GetKeyDown(CKeyEvent.KEYCODE_DPAD_LEFT)) { textMesh.text = "HMD Left : Down"; } if (NxrInput.GetKeyPressed(CKeyEvent.KEYCODE_DPAD_LEFT)) { textMesh.text = "HMD Left : Pressed"; } if (NxrInput.GetKeyUp(CKeyEvent.KEYCODE_DPAD_LEFT)) { textMesh.text = "HMD Left : Up"; } if (NxrInput.GetKeyDown(CKeyEvent.KEYCODE_DPAD_RIGHT)) { textMesh.text = "HMD Right : Down"; } if (NxrInput.GetKeyPressed(CKeyEvent.KEYCODE_DPAD_RIGHT)) { textMesh.text = "HMD Right : Pressed"; } if (NxrInput.GetKeyUp(CKeyEvent.KEYCODE_DPAD_RIGHT)) { textMesh.text = "HMD Right : Up"; } if (NxrInput.GetKeyDown(CKeyEvent.KEYCODE_DPAD_UP)) { textMesh.text = "HMD Up : Down"; } if (NxrInput.GetKeyPressed(CKeyEvent.KEYCODE_DPAD_UP)) { textMesh.text = "HMD Up : Pressed"; } if (NxrInput.GetKeyUp(CKeyEvent.KEYCODE_DPAD_UP)) { textMesh.text = "HMD Up : Up"; } if (NxrInput.GetKeyDown(CKeyEvent.KEYCODE_DPAD_DOWN)) { textMesh.text = "HMD Down : Down"; } if (NxrInput.GetKeyPressed(CKeyEvent.KEYCODE_DPAD_DOWN)) { textMesh.text = "HMD Down : Pressed"; } if (NxrInput.GetKeyUp(CKeyEvent.KEYCODE_DPAD_DOWN)) { textMesh.text = "HMD Down : Up"; } // 3DOF Controller if (InteractionManager.Is3DofControllerConnected()) { InteractionManager.NACTION_HAND_TYPE mHandType = InteractionManager.GetHandTypeByHandMode(); TextMesh textMeshController = textMeshControllerRight; if (mHandType == InteractionManager.NACTION_HAND_TYPE.HAND_LEFT) { textMeshController = textMeshControllerLeft; } bool HasKeyDown = false; for (int i = 0, size = threeDofCtrlKeyCode.Length; i < size; i++) { int keyCode = threeDofCtrlKeyCode[i]; string keyStr = threeDofCtrlKeyStr[i]; if (NxrInput.GetControllerKeyDown(keyCode)) { textMeshController.text = keyStr + "Down_" + mHandType.ToString(); HasKeyDown = true; } if (!HasKeyDown && NxrInput.GetControllerKeyPressed(keyCode)) { textMeshController.text = keyStr + "Pressed_" + mHandType.ToString(); HasKeyDown = true; } if (!HasKeyDown) { if (NxrInput.GetControllerKeyUp(keyCode)) { textMeshController.text = keyStr + "Up_" + mHandType.ToString(); } } } } else { // SixDof Controller foreach (InteractionManager.NACTION_HAND_TYPE HandType in handTypes) { TextMesh textMeshCtrl = null; if (HandType == InteractionManager.NACTION_HAND_TYPE.HAND_LEFT) { textMeshCtrl = textMeshControllerLeft; } else { textMeshCtrl = textMeshControllerRight; } bool HasKeyDown = false; for (int i = 0, size = sixDofCtrlKeyCode.Length; i < size; i++) { int keyCode = sixDofCtrlKeyCode[i]; string keyStr = sixDofCtrlKeyStr[i]; if (NxrInput.GetControllerKeyDown(keyCode, HandType)) { textMeshCtrl.text = keyStr + "Down_" + HandType.ToString(); HasKeyDown = true; } if (!HasKeyDown && NxrInput.GetControllerKeyPressed(keyCode, HandType)) { textMeshCtrl.text = keyStr + "Pressed_" + HandType.ToString(); HasKeyDown = true; } if (!HasKeyDown) { if (NxrInput.GetControllerKeyUp(keyCode, HandType)) { textMeshCtrl.text = keyStr + "Up_" + HandType.ToString(); } } } } } }
/// <summary> /// Get Controller Touchpad Touch Position /// Horizontal direction: (Left->Right) -1~1 /// Vertical direction: (Up->Down) -1~1 /// </summary> /// <param name="handType">left or right</param> /// <returns></returns> public static Vector2 GetTouchPadPosition(InteractionManager.NACTION_HAND_TYPE handType) { return(handType == InteractionManager.NACTION_HAND_TYPE.HAND_LEFT ? InteractionManager.TouchPadPositionLeft : InteractionManager.TouchPadPositionRight); }