Exemple #1
0
 public override void GetPoseState(WVR_DeviceType type, WVR_PoseOriginModel originModel, uint predictedMilliSec, ref WVR_PoseState_t poseState)
 {
     WVR_GetPoseState_Android(type, originModel, predictedMilliSec, ref poseState);
 }
Exemple #2
0
 public static extern void WVR_GetSyncPose_Android(WVR_PoseOriginModel originModel, [In, Out] WVR_DevicePosePair_t[] poseArray, uint pairArrayCount);
Exemple #3
0
    public void UpdatePoses(WVR_PoseOriginModel origin)
    {
        Log.gpl.d(LOG_TAG, "UpdatePoses");
        Interop.WVR_GetSyncPose(origin, poses, (uint)poses.Length);

        for (uint i = 0; i < DeviceTypes.Length; i++)
        {
            bool _hasType = false;

            for (uint j = 0; j < poses.Length; j++)
            {
                WVR_DevicePosePair_t _pose = poses[j];

                if (_pose.type == DeviceTypes [i])
                {
                    _hasType          = true;
                    deviceIndexMap[i] = j;

                    if (connected [i] != _pose.pose.IsValidPose)
                    {
                        connected [i] = _pose.pose.IsValidPose;
                        Log.i(LOG_TAG, "device " + DeviceTypes [i] + " is " + (connected [i] ? "connected" : "disconnected"));
                        WaveVR_Utils.Event.Send(WaveVR_Utils.Event.DEVICE_CONNECTED, DeviceTypes [i], connected[i]);
                    }

                    if (connected [i])
                    {
                        rtPoses[j].update(_pose.pose.PoseMatrix);
                    }

                    break;
                }
            }

            // no such type
            if (!_hasType)
            {
                if (connected [i] == true)
                {
                    connected [i] = false;
                    Log.i(LOG_TAG, "device " + DeviceTypes [i] + " is disconnected.");
                    WaveVR_Utils.Event.Send(WaveVR_Utils.Event.DEVICE_CONNECTED, DeviceTypes [i], connected[i]);
                }
            }
        }

        //for (int i = 0; i < poses.Length; i++)
        //{
        //    var vrpose = poses[i];
        //    if (vrpose.pose.IsValidPose != connected[i])
        //    {
        //        connected[i] = vrpose.pose.IsValidPose;
        //        connected_types [i] = vrpose.type;
        //        Log.i(LOG_TAG, "device[" + i + "] " + vrpose.type + " is " + (connected[i] ? "connected" : "disconnected"));
        //        WaveVR_Utils.Event.Send(WaveVR_Utils.DEVICE_CONNECTED, vrpose.type, connected[i]);
        //    }
        //    if (vrpose.pose.IsValidPose)
        //        rtPoses[i].update(vrpose.pose.PoseMatrix);
        //}

        for (int i = 0; i < poses.Length; i++)
        {
            if (poses [i].pose.IsValidPose)
            {
                Log.gpl.d(LOG_TAG, "device " + i + " pos: {" + rtPoses [i].pos + "}" + "rot: {" + rtPoses [i].rot + "}");
            }
        }
        WaveVR_Utils.Event.Send(WaveVR_Utils.Event.NEW_POSES, poses, rtPoses);
        Log.gpl.d(LOG_TAG, "after new poses");
        WaveVR_Utils.Event.Send(WaveVR_Utils.Event.AFTER_NEW_POSES);
    }
Exemple #4
0
 public static extern void WVR_GetPoseState_Android(WVR_DeviceType type, WVR_PoseOriginModel originModel, uint predictedMilliSec, ref WVR_PoseState_t poseState);
Exemple #5
0
 public override void GetSyncPose(WVR_PoseOriginModel originModel, [In, Out] WVR_DevicePosePair_t[] poseArray, uint pairArrayCount)
 {
     system.GetSyncPose(originModel, poseArray, pairArrayCount);
 }
Exemple #6
0
    public void GetRigidTransform(WVR_DeviceType type, ref WaveVR_Utils.RigidTransform rtPose, WVR_PoseOriginModel origin)
    {
        switch (type)
        {
        case WVR_DeviceType.WVR_DeviceType_HMD:
            if (origin == WVR_PoseOriginModel.WVR_PoseOriginModel_OriginOnGround)
            {
                rtPose = rtPose_head_onGround;
            }
            else
            {
                rtPose = rtPose_head;
            }
            break;

        case WVR_DeviceType.WVR_DeviceType_Controller_Right:
            rtPose = rtPose_right;
            break;

        case WVR_DeviceType.WVR_DeviceType_Controller_Left:
            rtPose = rtPose_left;
            break;

        default:
            break;
        }
    }
Exemple #7
0
 public override void GetSyncPose(WVR_PoseOriginModel originModel, [In, Out] WVR_DevicePosePair_t[] poseArray, uint pairArrayCount)
 {
     WVR_GetSyncPose_S((int)originModel, poseArray, (int)pairArrayCount);
 }
 public override WVR_Result GetHandTrackingData(ref WVR_HandSkeletonData_t skeleton, ref WVR_HandPoseData_t pose, WVR_PoseOriginModel originModel)
 {
     return(system.GetHandTrackingData(ref skeleton, ref pose, originModel));
 }
Exemple #9
0
    void Awake()
    {
        Log.d(LOG_TAG, "Awake()+");
        if (instance == null)
        {
            instance = this;
        }
        else
        {
            Log.w(LOG_TAG, "Render already Awaked");
        }

        QualitySettings.SetQualityLevel(QualitySettings.GetQualityLevel(), true);
        synchronizer = new RenderThreadSynchronizer();

        if (globalOrigin >= 0 && globalOrigin <= 3)
        {
            _origin = (WVR_PoseOriginModel)globalOrigin;
            Log.d(LOG_TAG, "Has global tracking space " + _origin);
        }

        if (WaveVR_Init.Instance == null || WaveVR.Instance == null)
        {
            Log.e(LOG_TAG, "Fail to initialize");
        }
#if UNITY_EDITOR
        if (!Application.isEditor)
#endif
        {
            // This command can make sure native's render code are initialized in render thread.
            InitializeGraphic(synchronizer);

            // Setup render values
            uint w = 0, h = 0;
            Interop.WVR_GetRenderTargetSize(ref w, ref h);
            sceneWidth  = (float)w;
            sceneHeight = (float)h;

            projRawL = new float[4] {
                0.0f, 0.0f, 0.0f, 0.0f
            };
            projRawR = new float[4] {
                0.0f, 0.0f, 0.0f, 0.0f
            };

            WVR_RenderProps_t props = new WVR_RenderProps_t();
            Interop.WVR_GetRenderProps(ref props);
            targetFPS = (int)props.refreshRate;

            OnIpdChanged(null);
        }

        // May call eglMakeCurrent inside TextureManager()

        textureManager = new TextureManager();

        WaveVR_Utils.IssueEngineEvent(WaveVR_Utils.EngineEventID.HMD_INITIAILZED);

        Screen.sleepTimeout         = SleepTimeout.NeverSleep;
        Application.targetFrameRate = targetFPS;
        Log.d(LOG_TAG, "Awake()-");
    }
Exemple #10
0
    public void UpdatePoses(WVR_PoseOriginModel origin, bool isSimulator)
    {
        Log.gpl.d(LOG_TAG, "UpdatePoses");

#if UNITY_EDITOR
        if (Application.isEditor)
        {
            if (isSimulator)
            {
                WaveVR_Utils.WVR_GetSyncPose_S((int)origin, poses, poses.Length);
            }
        }
        else
#endif
        {
            bool _focusCapturedBySystem = Interop.WVR_IsInputFocusCapturedBySystem();
            if (this.FocusCapturedBySystem != _focusCapturedBySystem)
            {
                this.FocusCapturedBySystem = _focusCapturedBySystem;
                WaveVR_Utils.Event.Send(WaveVR_Utils.Event.SYSTEMFOCUS_CHANGED, this.FocusCapturedBySystem);
            }
            Interop.WVR_GetSyncPose(origin, poses, (uint)poses.Length);
        }

        for (uint i = 0; i < DeviceTypes.Length; i++)
        {
            bool _hasType = false;

            for (uint j = 0; j < poses.Length; j++)
            {
                WVR_DevicePosePair_t _pose = poses[j];

                if (_pose.type == DeviceTypes [i])
                {
                    _hasType          = true;
                    deviceIndexMap[i] = j;

                    if (connected [i] != _pose.pose.IsValidPose)
                    {
                        connected [i] = _pose.pose.IsValidPose;
                        Log.i(LOG_TAG, "device " + DeviceTypes [i] + " is " + (connected [i] ? "connected" : "disconnected"));
                        WaveVR_Utils.Event.Send(WaveVR_Utils.Event.DEVICE_CONNECTED, DeviceTypes [i], connected[i]);
                    }

                    if (connected [i])
                    {
                        rtPoses[j].update(_pose.pose.PoseMatrix);
                    }

                    break;
                }
            }

            // no such type
            if (!_hasType)
            {
                if (connected [i] == true)
                {
                    connected [i] = false;
                    Log.i(LOG_TAG, "device " + DeviceTypes [i] + " is disconnected.");
                    WaveVR_Utils.Event.Send(WaveVR_Utils.Event.DEVICE_CONNECTED, DeviceTypes [i], connected[i]);
                }
            }
        }

        for (int i = 0; i < poses.Length; i++)
        {
            WVR_DeviceType _type      = poses [i].type;
            bool           _connected = false;
#if UNITY_EDITOR
            if (isSimulator)
            {
                _connected = WaveVR_Utils.WVR_IsDeviceConnected_S((int)_type);
            }
            else
#endif
            {
                _connected = Interop.WVR_IsDeviceConnected(_type);
            }

            bool _posevalid = poses [i].pose.IsValidPose;

            Log.gpl.d(LOG_TAG, "Device " + _type + " is " + (_connected ? "connected" : "disconnected")
                      + ", pose is " + (_posevalid ? "valid" : "invalid")
                      + ", pos: {" + rtPoses [i].pos.x + ", " + rtPoses [i].pos.y + ", " + rtPoses [i].pos.z + "}"
                      + ", rot: {" + rtPoses [i].rot.x + ", " + rtPoses [i].rot.y + ", " + rtPoses [i].rot.z + ", " + rtPoses [i].rot.w + "}");
        }

        try
        {
            WaveVR_Utils.Event.Send(WaveVR_Utils.Event.NEW_POSES, poses, rtPoses);
        }
        catch (Exception ex)
        {
            Log.e(LOG_TAG, "Send NEW_POSES Event Exception : " + ex);
        }
        Log.gpl.d(LOG_TAG, "after new poses");
        try
        {
            WaveVR_Utils.Event.Send(WaveVR_Utils.Event.AFTER_NEW_POSES);
        }
        catch (Exception ex)
        {
            Log.e(LOG_TAG, "Send AFTER_NEW_POSES Event Exception : " + ex);
        }
    }
Exemple #11
0
 public void UpdatePoses(WVR_PoseOriginModel origin)
 {
     UpdatePoses(origin, false);
 }