LogErrorFormat() public static method

Logs an error with a stack trace.
public static LogErrorFormat ( string format ) : void
format string The string format.
return void
示例#1
0
        public bool GetAllCameraMetadataTags(IntPtr cameraMetadataHandle, List <CameraMetadataTag> resultList)
        {
            IntPtr ndkMetadataHandle = IntPtr.Zero;

            ExternApi.ArImageMetadata_getNdkCameraMetadata(m_NativeSession.SessionHandle,
                                                           cameraMetadataHandle, ref ndkMetadataHandle);

            IntPtr          tagsHandle = IntPtr.Zero;
            int             tagsCount  = 0;
            NdkCameraStatus status     = ExternApi.ACameraMetadata_getAllTags(ndkMetadataHandle, ref tagsCount, ref tagsHandle);

            if (status != NdkCameraStatus.Ok)
            {
                ARDebug.LogErrorFormat("ACameraMetadata_getAllTags error with native camera error code: {0}",
                                       status);
                return(false);
            }

            for (int i = 0; i < tagsCount; i++)
            {
                resultList.Add((CameraMetadataTag)Marshal.PtrToStructure(
                                   MarshalingHelper.GetPtrToUnmanagedArrayElement <int>(tagsHandle, i),
                                   typeof(int)));
            }

            return(true);
        }
示例#2
0
        /// <summary>
        /// Gets a unity PoseData equivalent to the ApiPoseData.
        /// </summary>
        /// <returns>A unity PoseData equivalent to the ApiPoseData.</returns>
        public UnityTango.PoseData ToUnityType()
        {
            UnityTango.PoseData unityPose = new UnityTango.PoseData();

            unityPose.version    = (uint)version;
            unityPose.timestamp  = timestamp;
            unityPose.statusCode = statusCode.ToUnityType();
            unityPose.frame      = framePair.ToUnityType();
            unityPose.confidence = (uint)confidence;
            unityPose.accuracy   = accuracy;

            if (framePair.baseFrame != ApiCoordinateFrameType.StartOfService)
            {
                ARDebug.LogErrorFormat("apiPlaneData's base frame is not supported.");
                unityPose.translation_x = translation.x;
                unityPose.translation_y = translation.y;
                unityPose.translation_z = translation.z;

                unityPose.orientation_x = orientation.x;
                unityPose.orientation_y = orientation.y;
                unityPose.orientation_z = orientation.z;
                unityPose.orientation_w = orientation.w;
                return(unityPose);
            }


            Matrix4x4 startService_T_plane = Matrix4x4.TRS(translation.ToVector3(),
                                                           orientation.ToQuaternion(), Vector3.one);

            Matrix4x4 unityTransform = Constants.UNITY_WORLD_T_START_SERVICE *
                                       startService_T_plane *
                                       Constants.UNITY_WORLD_T_START_SERVICE.inverse;

            Vector3 position = unityTransform.GetColumn(3);

            unityPose.translation_x = position.x;
            unityPose.translation_y = position.y;
            unityPose.translation_z = position.z;

            Quaternion rotation = Quaternion.LookRotation(unityTransform.GetColumn(2),
                                                          unityTransform.GetColumn(1));

            unityPose.orientation_x = rotation.x;
            unityPose.orientation_y = rotation.y;
            unityPose.orientation_z = rotation.z;
            unityPose.orientation_w = rotation.w;
            return(unityPose);
        }
        private bool _UpdateMostRecentApiPlanes()
        {
            IntPtr apiPlanesPtr = IntPtr.Zero;
            int    planeCount   = 0;

            if (TangoClientApi.TangoService_Experimental_getPlanes(ref apiPlanesPtr, ref planeCount).IsTangoFailure())
            {
                for (int i = 0; i < m_mostRecentApiPlanes.Count; i++)
                {
                    ApiPlaneData planeData = m_mostRecentApiPlanes[i];
                    planeData.isValid        = false;
                    m_mostRecentApiPlanes[i] = planeData;
                }

                return(true);
            }

            // The planes api is handling a COM reset, and the current state is not available. Leave the most recent
            // Api planes collection unchanged.
            if (apiPlanesPtr == null)
            {
                return(false);
            }

            // Marshal the most recent planes returned from the Api into m_mostRecentApiPlanes.
            m_mostRecentApiPlanes.Clear();
            MarshalingHelper.AddUnmanagedStructArrayToList <ApiPlaneData>(apiPlanesPtr, planeCount,
                                                                          m_mostRecentApiPlanes);

            if (TangoClientApi.TangoPlaneData_free(apiPlanesPtr, planeCount).IsTangoFailure())
            {
                ARDebug.LogErrorFormat("Failed to deallocate planes from the ARCore API.");
            }

            return(false);
        }
示例#4
0
        public bool TryGetValues(IntPtr cameraMetadataHandle,
                                 CameraMetadataTag tag, List <CameraMetadataValue> resultList)
        {
            IntPtr ndkMetadataHandle = IntPtr.Zero;

            ExternApi.ArImageMetadata_getNdkCameraMetadata(m_NativeSession.SessionHandle,
                                                           cameraMetadataHandle, ref ndkMetadataHandle);

            resultList.Clear();
            NdkCameraMetadata entry  = new NdkCameraMetadata();
            NdkCameraStatus   status = ExternApi.ACameraMetadata_getConstEntry(ndkMetadataHandle, tag, ref entry);

            if (status != NdkCameraStatus.Ok)
            {
                ARDebug.LogErrorFormat("ACameraMetadata_getConstEntry error with native camera error code: {0}",
                                       status);
                return(false);
            }

            for (int i = 0; i < entry.Count; i++)
            {
                switch (entry.Type)
                {
                case NdkCameraMetadataType.Byte:
                    sbyte byteValue = (sbyte)Marshal.PtrToStructure(
                        MarshalingHelper.GetPtrToUnmanagedArrayElement <sbyte>(entry.Value, i),
                        typeof(sbyte));
                    resultList.Add(new CameraMetadataValue(byteValue));
                    break;

                case NdkCameraMetadataType.Int32:
                    int intValue = (int)Marshal.PtrToStructure(
                        MarshalingHelper.GetPtrToUnmanagedArrayElement <int>(entry.Value, i),
                        typeof(int));
                    resultList.Add(new CameraMetadataValue(intValue));
                    break;

                case NdkCameraMetadataType.Float:
                    float floatValue = (float)Marshal.PtrToStructure(
                        MarshalingHelper.GetPtrToUnmanagedArrayElement <float>(entry.Value, i),
                        typeof(float));
                    resultList.Add(new CameraMetadataValue(floatValue));
                    break;

                case NdkCameraMetadataType.Int64:
                    long longValue = (long)Marshal.PtrToStructure(
                        MarshalingHelper.GetPtrToUnmanagedArrayElement <long>(entry.Value, i),
                        typeof(long));
                    resultList.Add(new CameraMetadataValue(longValue));
                    break;

                case NdkCameraMetadataType.Double:
                    double doubleValue = (double)Marshal.PtrToStructure(
                        MarshalingHelper.GetPtrToUnmanagedArrayElement <double>(entry.Value, i),
                        typeof(double));
                    resultList.Add(new CameraMetadataValue(doubleValue));
                    break;

                case NdkCameraMetadataType.Rational:
                    CameraMetadataRational rationalValue = (CameraMetadataRational)Marshal.PtrToStructure(
                        MarshalingHelper.GetPtrToUnmanagedArrayElement <CameraMetadataRational>(entry.Value, i),
                        typeof(CameraMetadataRational));
                    resultList.Add(new CameraMetadataValue(rationalValue));
                    break;

                default:
                    return(false);
                }
            }

            return(true);
        }
示例#5
0
        public bool TryGetValues(IntPtr cameraMetadataHandle,
                                 CameraMetadataTag tag, List <CameraMetadataValue> resultList)
        {
            resultList.Clear();
            uint             utag   = (uint)tag;
            ArCameraMetadata entry  = new ArCameraMetadata();
            ApiArStatus      status =
                ExternApi.ArImageMetadata_getConstEntry(_nativeSession.SessionHandle,
                                                        cameraMetadataHandle, utag,
                                                        ref entry);

            if (status != ApiArStatus.Success)
            {
                ARDebug.LogErrorFormat(
                    "ArImageMetadata_getConstEntry error with native camera error code: {0}",
                    status);
                return(false);
            }

            if (entry.Count > _maximumTagCountForWarning && !_warningTags.Contains((int)tag))
            {
                Debug.LogWarningFormat(
                    "TryGetValues for tag {0} has {1} values. Accessing tags with a large " +
                    "number of values may impede performance.", tag, entry.Count);
                _warningTags.Add((int)tag);
            }

            for (int i = 0; i < entry.Count; i++)
            {
                switch (entry.Type)
                {
                case ArCameraMetadataType.Byte:
                    sbyte byteValue = (sbyte)Marshal.PtrToStructure(
                        MarshalingHelper.GetPtrToUnmanagedArrayElement <sbyte>(entry.Value, i),
                        typeof(sbyte));
                    resultList.Add(new CameraMetadataValue(byteValue));
                    break;

                case ArCameraMetadataType.Int32:
                    int intValue = (int)Marshal.PtrToStructure(
                        MarshalingHelper.GetPtrToUnmanagedArrayElement <int>(entry.Value, i),
                        typeof(int));
                    resultList.Add(new CameraMetadataValue(intValue));
                    break;

                case ArCameraMetadataType.Float:
                    float floatValue = (float)Marshal.PtrToStructure(
                        MarshalingHelper.GetPtrToUnmanagedArrayElement <float>(entry.Value, i),
                        typeof(float));
                    resultList.Add(new CameraMetadataValue(floatValue));
                    break;

                case ArCameraMetadataType.Int64:
                    long longValue = (long)Marshal.PtrToStructure(
                        MarshalingHelper.GetPtrToUnmanagedArrayElement <long>(entry.Value, i),
                        typeof(long));
                    resultList.Add(new CameraMetadataValue(longValue));
                    break;

                case ArCameraMetadataType.Double:
                    double doubleValue = (double)Marshal.PtrToStructure(
                        MarshalingHelper.GetPtrToUnmanagedArrayElement <double>(entry.Value, i),
                        typeof(double));
                    resultList.Add(new CameraMetadataValue(doubleValue));
                    break;

                case ArCameraMetadataType.Rational:
                    CameraMetadataRational rationalValue =
                        (CameraMetadataRational)Marshal.PtrToStructure(
                            MarshalingHelper
                            .GetPtrToUnmanagedArrayElement <CameraMetadataRational>(
                                entry.Value, i),
                            typeof(CameraMetadataRational));
                    resultList.Add(new CameraMetadataValue(rationalValue));
                    break;

                default:
                    return(false);
                }
            }

            return(true);
        }