Esempio n. 1
0
 private static void TrackerUpdateCallback(BETrackerUpdateInterop _trackerUpdateInterop)
 {
     if (BridgeEngineUnity.main != null)
     {
         BridgeEngineUnity.main.TrackerUpdate(ref _trackerUpdateInterop);
     }
 }
Esempio n. 2
0
    /**
     * Receive the 6DOF tracker updates from BridgeEngine.
     */
    void TrackerUpdate(ref BETrackerUpdateInterop interop)
    {
        lastTrackerUpdate = interop;

        if (mainCamera != null)
        {
#if !UNITY_EDITOR
            mainCamera.projectionMatrix = lastTrackerUpdate.cameraProj.ToMatrix();              // uses the intrinsics from Bridge Engine to get a correct projection matrix
#endif
            mainCamera.transform.position   = lastTrackerUpdate.pos.ToVector3();
            mainCamera.transform.rotation   = lastTrackerUpdate.rot.ToQuaternion();
            mainCamera.transform.localScale = lastTrackerUpdate.scale.ToVector3();
        }

        if (isStereoModeActive && stereoCamera != null)
        {
            stereoCamera.UpdateStereoSetup(lastTrackerUpdate.stereoSetup);
        }

        // Update the BEController's cameraTransform, from our latest mainCamera tracking.
        Matrix4x4 unityCameraWorldMatrix = mainCamera.transform.localToWorldMatrix;
        beMatrix4 beCameraWorldMatrix    = new beMatrix4();
        beCameraWorldMatrix.Set(unityCameraWorldMatrix);
        BridgeEngineUnityInterop.beControllerUpdateCamera(beCameraWorldMatrix);

        // Update the listeners if pose accuracy changes.
        bool poseAccuracyChanged = lastTrackerUpdate.trackerPoseAccuracy != interop.trackerPoseAccuracy;
        if (poseAccuracyChanged && onPoseAccuracyChanged != null)
        {
            onPoseAccuracyChanged.Invoke(interop.trackerPoseAccuracy);
        }

        if (onPoseChanged != null)
        {
            onPoseChanged.Invoke();
        }

        // Refresh the camera texture last, so we have an opportunity to update the color samplers.
        CameraTextureUpdate(ref lastTrackerUpdate.cameraTextureInfo);
    }