internal static LayerAnimation Read(Stream input, Endian endian)
        {
            var layerId = input.ReadValueU32(endian);
            var visible = input.ReadValueB8();

            var frameCount = input.ReadValueU32(endian);

            if (frameCount >= 5000)
            {
                throw new FormatException("too many layer frames");
            }
            var frames = new LayerFrame[frameCount];

            for (uint i = 0; i < frameCount; i++)
            {
                frames[i] = LayerFrame.Read(input, endian);
            }

            LayerAnimation instance;

            instance.LayerId = layerId;
            instance.Visible = visible;
            instance.Frames  = frames;
            return(instance);
        }
 internal static void Write(Stream output, LayerFrame instance, Endian endian)
 {
     output.WriteValueF32(instance.XCrop, endian);
     output.WriteValueF32(instance.YCrop, endian);
     output.WriteValueF32(instance.Width, endian);
     output.WriteValueF32(instance.Height, endian);
     output.WriteValueF32(instance.XPosition, endian);
     output.WriteValueF32(instance.YPosition, endian);
     output.WriteValueF32(instance.XScale, endian);
     output.WriteValueF32(instance.YScale, endian);
     output.WriteValueF32(instance.XPivot, endian);
     output.WriteValueF32(instance.YPivot, endian);
     output.WriteValueS32(instance.Delay, endian);
     output.WriteValueB8(instance.Visible);
     output.WriteValueF32(instance.RedTint, endian);
     output.WriteValueF32(instance.GreenTint, endian);
     output.WriteValueF32(instance.BlueTint, endian);
     output.WriteValueF32(instance.AlphaTint, endian);
     output.WriteValueF32(instance.RedOffset, endian);
     output.WriteValueF32(instance.GreenOffset, endian);
     output.WriteValueF32(instance.BlueOffset, endian);
     output.WriteValueF32(instance.Rotation, endian);
     output.WriteValueB8(instance.Interpolated);
 }