Files
Matt Nadareski 7689c6dd07 Libraries
This change looks dramatic, but it's just separating out the already-split namespaces into separate top-level folders. In theory, every single one could be built into their own Nuget package. `SabreTools.Serialization` still builds the normal Nuget package that is used by all other projects and includes all namespaces.
2026-03-21 16:26:56 -04:00

49 lines
1.5 KiB
C#

using System.Runtime.InteropServices;
namespace SabreTools.Data.Models.WAD3
{
/// <see href="https://twhl.info/wiki/page/Specification:_WAD3"/>
public sealed class MipTex : FileEntry
{
/// <summary>
/// Null-terminated texture name
/// </summary>
/// <remarks>16 bytes</remarks>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public string Name = string.Empty;
/// <summary>
/// Dimensions of the texture (must be divisible by 16)
/// </summary>
public uint Width;
/// <summary>
/// Dimensions of the texture (must be divisible by 16)
/// </summary>
public uint Height;
/// <summary>
/// Offset from start of this struct to each mipmap level's image
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public uint[] MipOffsets = new uint[4];
/// <summary>
/// One MipMap for each mipmap level
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public MipMap[] MipImages = new MipMap[4];
/// <summary>
/// Number of colors used in the palette (always 256 for GoldSrc)
/// </summary>
public ushort ColorsUsed;
/// <summary>
/// The color palette for the mipmaps (always 256 * 3 = 768 for GoldSrc)
/// </summary>
/// <remarks>[ColorsUsed][3]</remarks>
public byte[][]? Palette { get; set; }
}
}