#region License // Copyright 2020 Kastellanos Nikolaos // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #endregion using System; using Microsoft.Xna.Framework.Content.Pipeline; namespace nkast.Aether.Content.Pipeline { struct VoxHeader { static readonly int VoxSignature = (BitConverter.IsLittleEndian) ? 0x20584F56 : 0x564F5820; public readonly Int32 Signature; public readonly Int32 Version; public VoxHeader(System.IO.BinaryReader reader) { Signature = reader.ReadInt32(); if (Signature != VoxHeader.VoxSignature) throw new InvalidContentException("This does not appear to be a VOX file"); Version = reader.ReadInt32(); if (Version != 150) throw new InvalidContentException("Unknown version"); } } struct Chunk { public readonly int ChunkId; public readonly int NumBytesOfChunkContent; public readonly int NumBytesOfChildrenChunks; public Chunk(System.IO.BinaryReader reader) { ChunkId = reader.ReadInt32(); NumBytesOfChunkContent = reader.ReadInt32(); NumBytesOfChildrenChunks = reader.ReadInt32(); } public const int MAIN = 0x4E49414D; public const int PACK = 0x4B434150; public const int SIZE = 0x455A4953; public const int XYZI = 0x495A5958; public const int RGBA = 0x41424752; public const int MATT = 0x5454414D; } struct XYZI { public Point3 Point; public byte ColorIndex; public Sides SharedSides; } }