/// <summary> /// Save the metadata for this area description. /// </summary> /// <returns>Returns <c>true</c> if the metadata was successfully saved, <c>false</c> otherwise.</returns> /// <param name="metadata">Metadata to save.</param> public bool SaveMetadata(Metadata metadata) { IntPtr rawMetadata = _GetMetadataPtr(); if (rawMetadata == IntPtr.Zero) { return(false); } bool anyErrors = false; if (!_MetadataSetString(rawMetadata, "name", metadata.m_name)) { anyErrors = true; } if (!_MetadataSetInt64(rawMetadata, "date_ms_since_epoch", (metadata.m_dateTime.Ticks - METADATA_EPOCH.Ticks) / DATETIME_TICKS_PER_MS)) { anyErrors = true; } double[] tform = new double[7]; tform[0] = metadata.m_transformationPosition[0]; tform[1] = metadata.m_transformationPosition[1]; tform[2] = metadata.m_transformationPosition[2]; tform[3] = metadata.m_transformationRotation[0]; tform[4] = metadata.m_transformationRotation[1]; tform[5] = metadata.m_transformationRotation[2]; tform[6] = metadata.m_transformationRotation[3]; if (!_MetadataSetDoubleArray(rawMetadata, "transformation", tform)) { anyErrors = true; } if (!anyErrors) { int returnValue = AreaDescriptionAPI.TangoService_saveAreaDescriptionMetadata(m_uuid, rawMetadata); if (returnValue != Common.ErrorType.TANGO_SUCCESS) { Debug.Log("Could not save metadata values.\n" + Environment.StackTrace); anyErrors = true; } } _FreeMetadataPtr(rawMetadata); return(!anyErrors); }
/// <summary> /// Save the metadata for this area description. /// </summary> /// <returns>Returns <c>true</c> if the metadata was successfully saved, <c>false</c> otherwise.</returns> /// <param name="metadata">Metadata to save.</param> public bool SaveMetadata(Metadata metadata) { #if UNITY_EDITOR try { using (StreamWriter streamWriter = new StreamWriter(File.Open(EMULATED_ADF_SAVE_PATH + m_uuid + EMULATED_ADF_EXTENSION, FileMode.Create))) { metadataXmlSerializer.Serialize(streamWriter, metadata); } } catch (IOException ioException) { Debug.LogError("IO error in Area Description save/load emulation:\n" + ioException.Message); return(false); } return(true); #else IntPtr rawMetadata = _GetMetadataPtr(); if (rawMetadata == IntPtr.Zero) { return(false); } bool anyErrors = false; if (!_MetadataSetString(rawMetadata, "name", metadata.m_name)) { anyErrors = true; } if (!_MetadataSetInt64(rawMetadata, "date_ms_since_epoch", (metadata.m_dateTime.Ticks - METADATA_EPOCH.Ticks) / DATETIME_TICKS_PER_MS)) { anyErrors = true; } double[] tform = new double[7]; tform[0] = metadata.m_transformationPosition[0]; tform[1] = metadata.m_transformationPosition[1]; tform[2] = metadata.m_transformationPosition[2]; tform[3] = metadata.m_transformationRotation[0]; tform[4] = metadata.m_transformationRotation[1]; tform[5] = metadata.m_transformationRotation[2]; tform[6] = metadata.m_transformationRotation[3]; if (!_MetadataSetDoubleArray(rawMetadata, "transformation", tform)) { anyErrors = true; } if (!anyErrors) { int returnValue = AreaDescriptionAPI.TangoService_saveAreaDescriptionMetadata(m_uuid, rawMetadata); if (returnValue != Common.ErrorType.TANGO_SUCCESS) { Debug.Log("Could not save metadata values.\n" + Environment.StackTrace); anyErrors = true; } } _FreeMetadataPtr(rawMetadata); return(!anyErrors); #endif }