/// <summary> /// Imports the data from the specified file. /// </summary> /// <param name="metadata">The asset metadata for the asset to import.</param> /// <param name="stream">The stream that contains the data to import.</param> /// <returns>The data structure that was imported from the file.</returns> public override String Import(IContentImporterMetadata metadata, Stream stream) { using (var reader = new StreamReader(stream)) { return(reader.ReadToEnd()); } }
/// <inheritdoc/> public override MemoryStream Import(IContentImporterMetadata metadata, Stream stream) { var buffer = new Byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); return(new MemoryStream(buffer)); }
/// <inheritdoc/> public override JObject Import(IContentImporterMetadata metadata, Stream stream) { using (var reader = new StreamReader(stream)) { var json = reader.ReadToEnd(); return(JObject.Parse(json)); } }
/// <inheritdoc/> public override JObject Import(IContentImporterMetadata metadata, Stream stream) { using (var sreader = new StreamReader(stream)) using (var jreader = new JsonTextReader(sreader)) { return(JObject.Load(jreader)); } }
/// <inheritdoc/> public override ModelRoot Import(IContentImporterMetadata metadata, Stream stream) { if (!metadata.IsFile) { throw new NotSupportedException(); } return(ModelRoot.Load(metadata.AssetFilePath)); }
/// <inheritdoc/> public override FreeTypeFontInfo Import(IContentImporterMetadata metadata, Stream stream) { var fileSystemService = new FileSystemService(); var fontMetadata = metadata.As <FreeTypeFontImporterMetadata>(); var faceBoldAsset = default(String); var faceItalicAsset = default(String); var faceBoldItalicAsset = default(String); if (metadata.IsFile) { var faceRegularAsset = metadata.AssetFilePath; faceBoldAsset = String.IsNullOrEmpty(fontMetadata.BoldFace) ? null : ResolveDependencyAssetFilePath(metadata, fontMetadata.BoldFace); faceItalicAsset = String.IsNullOrEmpty(fontMetadata.ItalicFace) ? null : ResolveDependencyAssetFilePath(metadata, fontMetadata.ItalicFace); faceBoldItalicAsset = String.IsNullOrEmpty(fontMetadata.BoldItalicFace) ? null : ResolveDependencyAssetFilePath(metadata, fontMetadata.BoldItalicFace); } var faceRegularData = ReadStreamIntoNativeMemory(stream, out var faceRegularDataLength); var faceBoldDataLength = 0; var faceBoldData = IntPtr.Zero; if (faceBoldAsset != null) { using (var faceBoldStream = fileSystemService.OpenRead(faceBoldAsset)) faceBoldData = ReadStreamIntoNativeMemory(faceBoldStream, out faceBoldDataLength); } var faceItalicDataLength = 0; var faceItalicData = IntPtr.Zero; if (faceItalicAsset != null) { using (var faceItalicStream = fileSystemService.OpenRead(faceItalicAsset)) faceItalicData = ReadStreamIntoNativeMemory(faceItalicStream, out faceItalicDataLength); } var faceBoldItalicDataLength = 0; var faceBoldItalicData = IntPtr.Zero; if (faceBoldItalicAsset != null) { using (var faceBoldItalicStream = fileSystemService.OpenRead(faceBoldItalicAsset)) faceBoldItalicData = ReadStreamIntoNativeMemory(faceBoldItalicStream, out faceBoldItalicDataLength); } return(new FreeTypeFontInfo( faceRegularData, faceRegularDataLength, faceBoldData, faceBoldDataLength, faceItalicData, faceItalicDataLength, faceBoldItalicData, faceBoldItalicDataLength)); }
/// <summary> /// Imports the data from the specified file. /// </summary> /// <param name="metadata">The asset metadata for the asset to import.</param> /// <param name="stream">The stream that contains the data to import.</param> /// <returns>The data structure that was imported from the file.</returns> public override PlatformNativeSurface Import(IContentImporterMetadata metadata, Stream stream) { var data = new Byte[stream.Length]; stream.Read(data, 0, data.Length); using (var mstream = new MemoryStream(data)) using (var source = SurfaceSource.Create(mstream)) { return(new SDL2PlatformNativeSurface(source)); } }
/// <summary> /// Imports an ASCII-format STL file. /// </summary> private StlModelDescription ImportAscii(IContentImporterMetadata metadata, Stream stream) { using (var reader = new StreamReader(stream, Encoding.ASCII, false, 1024, true)) { // Read the model's name. var name = reader.ReadLine().Trim(); // Read the model's facets. var triangles = new List <StlModelTriangleDescription>(); while (!reader.EndOfStream) { String Advance(StreamReader r) => r.ReadLine().Trim(); var line = Advance(reader); if (Accept(ref line, "endsolid")) { var endsolidName = line.Trim(); if (!endsolidName.Equals(name, StringComparison.Ordinal)) { throw new InvalidDataException(UltravioletStrings.MalformedContentFile); } break; } ExpectCoordinates(ref line, "facet normal", out var normal); line = Advance(reader); Expect(ref line, "outer loop"); line = Advance(reader); ExpectCoordinates(ref line, "vertex", out var v1); line = Advance(reader); ExpectCoordinates(ref line, "vertex", out var v2); line = Advance(reader); ExpectCoordinates(ref line, "vertex", out var v3); line = Advance(reader); Expect(ref line, "endloop"); line = Advance(reader); Expect(ref line, "endfacet"); triangles.Add(new StlModelTriangleDescription(normal, v1, v2, v3)); } return(new StlModelDescription { Name = name, Triangles = triangles }); } }
/// <inheritdoc/> public override FMODMediaDescription Import(IContentImporterMetadata metadata, Stream stream) { if (metadata.IsFile) { return(new FMODMediaDescription(metadata.AssetFilePath)); } var buffer = new Byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); return(new FMODMediaDescription(buffer)); }
/// <summary> /// Imports the data from the specified file. /// </summary> /// <param name="metadata">The asset metadata for the asset to import.</param> /// <param name="stream">The <see cref="Stream"/> that contains the data to import.</param> /// <returns>The data structure that was imported from the file.</returns> public override String[] Import(IContentImporterMetadata metadata, Stream stream) { var lines = new List <String>(); using (var reader = new StreamReader(stream)) { while (reader.Peek() >= 0) { var line = reader.ReadLine(); lines.Add(line); } } return(lines.ToArray()); }
/// <summary> /// Resolves the asset file path of the specified dependency. /// </summary> /// <param name="metadata">The content processor metadata.</param> /// <param name="dependency">The relative path of the dependency to resolve.</param> /// <returns>The asset path of the specified dependency.</returns> protected static String ResolveDependencyAssetFilePath(IContentImporterMetadata metadata, String dependency) { Contract.Require(metadata, nameof(metadata)); if (dependency == null) { return(null); } if (metadata.AssetFilePath == null) { return(dependency); } return(ContentManager.NormalizeAssetPath(Path.Combine(Path.GetDirectoryName(metadata.AssetFilePath), dependency))); }
/// <summary> /// Imports a binary-format STL file. /// </summary> private StlModelDescription ImportBinary(IContentImporterMetadata metadata, Stream stream) { // Skip the rest of the header. stream.Seek(75, SeekOrigin.Current); // Read triangles. using (var reader = new BinaryReader(stream, Encoding.ASCII, true)) { var triangleCount = reader.ReadUInt32(); var triangles = new StlModelTriangleDescription[triangleCount]; for (var i = 0u; i < triangleCount; i++) { var nx = reader.ReadSingle(); var ny = reader.ReadSingle(); var nz = reader.ReadSingle(); var normal = Vector3.Normalize(new Vector3(nx, ny, nz)); var v1x = reader.ReadSingle(); var v1y = reader.ReadSingle(); var v1z = reader.ReadSingle(); var v1 = new Vector3(v1x, v1y, v1z); var v2x = reader.ReadSingle(); var v2y = reader.ReadSingle(); var v2z = reader.ReadSingle(); var v2 = new Vector3(v2x, v2y, v2z); var v3x = reader.ReadSingle(); var v3y = reader.ReadSingle(); var v3z = reader.ReadSingle(); var v3 = new Vector3(v3x, v3y, v3z); var attributeByteCount = reader.ReadUInt16(); if (attributeByteCount > 0) { throw new NotSupportedException(UltravioletStrings.MalformedContentFile); } triangles[i] = new StlModelTriangleDescription(normal, v1, v2, v3); } return(new StlModelDescription { Triangles = triangles }); } }
/// <inheritdoc/> public override StlModelDescription Import(IContentImporterMetadata metadata, Stream stream) { var header = new Byte[5]; stream.Read(header, 0, header.Length); if (header[0] == (Byte)'s' && header[1] == (Byte)'o' && header[2] == (Byte)'l' && header[3] == (Byte)'i' && header[4] == (Byte)'d') { return(ImportAscii(metadata, stream)); } else { return(ImportBinary(metadata, stream)); } }
/// <inheritdoc/> public override ModelRoot Import(IContentImporterMetadata metadata, Stream stream) { return(ModelRoot.ReadGLB(stream)); }
/// <inheritdoc/> public override XDocument Import(IContentImporterMetadata metadata, Stream stream) => XDocument.Load(stream);
/// <summary> /// Imports the data from the specified file. /// </summary> /// <param name="metadata">The asset metadata for the asset to import.</param> /// <param name="stream">The stream that contains the data to import.</param> /// <returns>The data structure that was imported from the file.</returns> public override SDL_Surface Import(IContentImporterMetadata metadata, Stream stream) { return(SDL_Surface.CreateFromStream(stream)); }
/// <inheritdoc/> public override String Import(IContentImporterMetadata metadata, Stream stream) { return(metadata.AssetFilePath); }
/// <summary> /// Imports the data from the specified file. /// </summary> /// <param name="metadata">The asset metadata for the asset to import.</param> /// <param name="stream">The <see cref="Stream"/> that contains the data to import.</param> /// <returns>The data structure that was imported from the file.</returns> public abstract T Import(IContentImporterMetadata metadata, Stream stream);
/// <summary> /// Imports the data from the specified file. /// </summary> /// <param name="metadata">The asset metadata for the asset to import.</param> /// <param name="stream">The <see cref="Stream"/> that contains the data to import.</param> /// <returns>The data structure that was imported from the file.</returns> Object IContentImporter.Import(IContentImporterMetadata metadata, Stream stream) { return(Import(metadata, stream)); }
/// <inheritdoc/> public override XDocument Import(IContentImporterMetadata metadata, Stream stream) { return(XmlUtil.Load(stream)); }