public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { var texture2D = (Texture2D)value; var texData = new TextureRaw(); texData.width = texture2D.width; texData.height = texture2D.height; texData.format = texture2D.format; texData.mipMap = false; texData.data = texture2D.EncodeToPNG(); serializer.Serialize(writer, texData); }
/// <summary> /// Derializes an <see cref="TextureData"/> from a stream. /// </summary> /// <param name="stream">The stream to read from.</param> /// <returns>A new instance of <see cref="TextureData"/> with data read from the <paramref name="stream"/>.</returns> public static TextureData ReadTexture(this Stream stream) { int mode = stream.ReadByte(); switch (mode) { //texture case 0: TextureRaw raw = stream.ReadStructure <TextureRaw>(); var data = stream.ReadSpan <byte>(raw.Size); return(new Texture(raw.PixelFormat, raw.Width, raw.Height, raw.Depth, raw.MipmapLevels, raw.Layers, raw.TextureType, data)); //texture reference case 1: return(new TextureReference(stream.ReadString())); default: throw new InvalidDataException(); } }