void Update() { if (NoloVR_Playform.GetInstance().GetPlayformError() != NoloError.None) { return; } if (showTrackingBoundary == false) { return; } var pose = NoloVR_Controller.GetDevice(NoloDeviceType.BaseStation).GetPose(); transform.localPosition = pose.pos; transform.localRotation = pose.rot; for (int i = 0; i < NoloVR_System.GetInstance().objects.Length; i++) { if (Mathf.Abs(NoloVR_System.GetInstance().objects[i].transform.localPosition.x) > Mathf.Abs(transform.position.z - NoloVR_System.GetInstance().objects[i].transform.localPosition.z) || Mathf.Abs(NoloVR_System.GetInstance().objects[i].transform.localPosition.y - transform.position.y) > Mathf.Abs(transform.position.z - NoloVR_System.GetInstance().objects[i].transform.localPosition.z + 0.1f)) { NOLO_Events.Send(NOLO_Events.EventsType.TrackingOutofRange); break; } else { NOLO_Events.Send(NOLO_Events.EventsType.TrackingInRange); } } }
public static uint GetTouchMask(NoloTouchID touch) { if (NoloVR_System.GetInstance().trackModel == NoloVR_Manager.TrackModel.Track_6dof) { switch (touch) { case NoloTouchID.TouchPad: return(1 << 0); case NoloTouchID.Trigger: return(1 << 1); default: return(0); } } else { switch (touch) { case NoloTouchID.TouchPad: return(1 << 0); default: return(0); } } }
public static NoloVR_System GetInstance() { if (instance == null) { instance = new NoloVR_System(); } return(instance); }
private void UpdatePose() { var pose = NoloVR_Controller.GetDevice(deviceType).GetPose(); if (deviceType != NoloDeviceType.Hmd) { if (NoloVR_System.GetInstance().trackModel == NoloVR_Manager.TrackModel.Track_3dof) { //如果真实的设备是3dof,采用默认高度 //如果真实的设备是6dof,要采用定位数据 if (NoloVR_System.GetInstance().realTrackDevices == 3) { transform.localPosition = pose.pos + new Vector3(0, NoloVR_System.GetInstance().defaultHeight, 0); transform.localRotation = pose.rot; } else { transform.localPosition = pose.pos; transform.localRotation = pose.rot; } } else { transform.localPosition = pose.pos; transform.localRotation = pose.rot; } } else { if (NoloVR_System.GetInstance().trackModel == NoloVR_Manager.TrackModel.Track_3dof) { //如果真实的设备是3dof,采用默认高度 //如果真实的设备是6dof,要采用定位数据 if (NoloVR_System.GetInstance().realTrackDevices == 3) { transform.localPosition = pose.pos + new Vector3(0, NoloVR_System.GetInstance().defaultHeight, 0); } else { transform.localPosition = pose.pos; } } else { if (vrCamera == null) { Debug.LogError("Not find your vr camera"); return; } //transform.localRotation = pose.rot; var cameraLoaclPosition = transform.localRotation * vrCamera.transform.localPosition; transform.localPosition = pose.pos - cameraLoaclPosition; } } }
/// <summary> /// 获取设备是3dof还是6dof /// </summary> /// <returns>0 = 3dof 1= 6dof</returns> public static int GetTrackModel() { #if (UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN) if (NoloVR_System.GetInstance().trackModel == NoloVR_Manager.TrackModel.Track_3dof) { return(3); } else { return(6); } #elif UNITY_ANDROID return(NoloClientSo.GetNoloTrackModel()); #endif }
void Start() { foreach (NoloVR_TrackedDevice item in NoloVR_System.GetInstance().objects) { if (item.deviceType == NoloDeviceType.LeftController) { leftController = item.gameObject.transform; } if (item.deviceType == NoloDeviceType.RightController) { rightController = item.gameObject.transform; } } controllerCenter = new GameObject("controllerCenter"); }
public static void ConnectedStatusCallBack(int status) { Debug.Log("NoloVR_AndroidPlayform ConnectedStatusCallBack:" + status); switch (status) { case 0: playformError = NoloError.DisConnect; NoloVR_System.GetInstance().realTrackDevices = NoloVR_Plugins.GetTrackModel(); break; case 1: playformError = NoloError.None; NoloVR_System.GetInstance().realTrackDevices = NoloVR_Plugins.GetTrackModel(); break; default: break; } }
public void Update() { if (Time.frameCount != preFrame) { preFrame = Time.frameCount; preControllerStates = controllerStates; if (NoloVR_Playform.GetInstance().GetPlayformError() == NoloError.None && NoloVR_Playform.GetInstance().GetAuthentication()) { controllerStates = NoloVR_Plugins.GetControllerStates(index); electricity = NoloVR_Plugins.GetElectricity(index); connectStatus = NoloVR_Plugins.GetNoloConnectStatus(index); float yaw = real_yaw * 57.3f; pose = NoloVR_Plugins.GetPose(index); if (index == 0) { //pose.pos += pose.rot * new Vector3(0, 0.08f, 0.062f); pose.rot = Quaternion.Euler(new Vector3(0, -yaw, 0)); //pose.pos -= pose.rot * new Vector3(0, 0.08f, 0.062f); } if (isTurnAround) { if (NoloVR_Controller.recPosition == Vector3.zero) { NoloVR_Controller.recPosition = NoloVR_Plugins.GetPose(0).pos; } var rot = pose.rot.eulerAngles; rot += new Vector3(0, 180 + yaw, 0); pose.rot = Quaternion.Euler(rot); Vector3 revec = Quaternion.Euler(new Vector3(0, 180 + yaw, 0)) * pose.pos + NoloVR_Controller.recPosition; pose.pos.x = revec.x; pose.pos.z = revec.z; pose.vecVelocity.x = -pose.vecVelocity.x; pose.vecVelocity.z = -pose.vecVelocity.z; return; } } if (NoloVR_System.GetInstance().realTrackDevices != 3 && NoloVR_System.GetInstance().realTrackDevices != 6) { NoloVR_System.GetInstance().realTrackDevices = NoloVR_Plugins.GetTrackModel(); } } }
private void Awake() { NoloVR_System.GetInstance().objects = GameObject.FindObjectsOfType <NoloVR_TrackedDevice>(); NoloVR_System.GetInstance().VRCamera = this.VRCamera; NoloVR_System.GetInstance().trackModel = gameTrackModel; if (useDefaultHeight) { NoloVR_System.GetInstance().defaultHeight = defaultHeight; } else { NoloVR_System.GetInstance().defaultHeight = 0; } #if NOLO_3DOF Debug.Log("3dof"); #elif NOLO_6DOF Debug.Log("6dof"); #else Debug.Log("other"); #endif }
void Awake() { NoloVR_System.GetInstance().objects = GameObject.FindObjectsOfType <NoloVR_TrackedDevice>(); NoloVR_System.GetInstance().VRCamera = this.VRCamera; }
#pragma warning disable IDE0051 // 删除未使用的私有成员 private void Start() #pragma warning restore IDE0051 // 删除未使用的私有成员 { vrCamera = NoloVR_System.GetInstance().VRCamera; }
private void Awake() { vrCamera = NoloVR_System.GetInstance().VRCamera; }
void Start() { //get vrcamera vrCamera = NoloVR_System.GetInstance().VRCamera; }