示例#1
0
    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);
            }
        }
    }
示例#2
0
        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);
 }
示例#4
0
    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;
            }
        }
    }
示例#5
0
    /// <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;
        }
    }
示例#8
0
 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();
         }
     }
 }
示例#9
0
    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
    }
示例#10
0
 void Awake()
 {
     NoloVR_System.GetInstance().objects  = GameObject.FindObjectsOfType <NoloVR_TrackedDevice>();
     NoloVR_System.GetInstance().VRCamera = this.VRCamera;
 }
示例#11
0
#pragma warning disable IDE0051 // 删除未使用的私有成员
    private void Start()
#pragma warning restore IDE0051 // 删除未使用的私有成员
    {
        vrCamera = NoloVR_System.GetInstance().VRCamera;
    }
示例#12
0
 private void Awake()
 {
     vrCamera = NoloVR_System.GetInstance().VRCamera;
 }
示例#13
0
 void Start()
 {
     //get vrcamera
     vrCamera = NoloVR_System.GetInstance().VRCamera;
 }