Beispiel #1
0
        static void _frame_update(internal_UnityARCamera camera)
        {
            UnityARCamera pubCamera = new UnityARCamera();

            pubCamera.projectionMatrix   = camera.projectionMatrix;
            pubCamera.worldTransform     = camera.worldTransform;
            pubCamera.trackingState      = camera.trackingState;
            pubCamera.trackingReason     = camera.trackingReason;
            pubCamera.videoParams        = camera.videoParams;
            pubCamera.worldMappingStatus = camera.worldMappngStatus;
            pubCamera.pointCloud         = ARPointCloud.FromPtr(camera.pointCloud);

#if !UNITY_EDITOR
            var faceAnchors     = new ARFaceAnchor[camera.anchorsSize];
            int faceAnchorCount = 0;
            for (uint i = 0; i < camera.anchorsSize; i++)
            {
                UnityARFaceAnchorData faceAnchorData = UnityARFaceAnchorData.GetUnityARFaceAnchorData(camera.anchors, i);
                if (faceAnchorData.ptrIdentifier != IntPtr.Zero)
                {
                    faceAnchors[i] = new ARFaceAnchor(faceAnchorData);
                    faceAnchorCount++;
                }
            }
            if (faceAnchors.Length != faceAnchorCount)
            {
                Array.Resize(ref faceAnchors, faceAnchorCount);
            }

            pubCamera.faceAnchors = faceAnchors;
#endif

            if (camera.getLightEstimation == 1)
            {
                pubCamera.lightData = camera.lightData;
            }

            pubCamera.displayTransform = camera.displayTransform;
            s_Camera = pubCamera;

            if (ARFrameUpdatedEvent != null)
            {
                ARFrameUpdatedEvent(s_Camera);
            }
        }