Beispiel #1
0
        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);
        }
Beispiel #2
0
        /// <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();
            }
        }