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); }