public ModelRoot(byte[] inData) { using (MemoryStream ms = new MemoryStream(inData)) { using (BinaryReader br = new BinaryReader(ms)) { this.Version = br.ReadIFFChunk <TerrainVersion>(); this.Header = br.ReadIFFChunk <ModelRootHeader>(); this.Textures = br.ReadIFFChunk <ModelTextures>(); this.Materials = br.ReadIFFChunk <ModelMaterials>(); this.GroupNames = br.ReadIFFChunk <ModelGroupNames>(); this.GroupInformation = br.ReadIFFChunk <ModelGroupInformation>(); this.Skybox = br.ReadIFFChunk <ModelSkybox>(); this.PortalVertices = br.ReadIFFChunk <ModelPortalVertices>(); this.Portals = br.ReadIFFChunk <ModelPortals>(); this.PortalReferences = br.ReadIFFChunk <ModelPortalReferences>(); this.VisibleVertices = br.ReadIFFChunk <ModelVisibleVertices>(); this.VisibleBlocks = br.ReadIFFChunk <ModelVisibleBlocks>(); this.StaticLighting = br.ReadIFFChunk <ModelStaticLighting>(); this.DoodadSets = br.ReadIFFChunk <ModelDoodadSets>(); this.DoodadPaths = br.ReadIFFChunk <ModelDoodadPaths>(); this.DoodadInstances = br.ReadIFFChunk <ModelDoodadInstances>(); this.Fog = br.ReadIFFChunk <ModelFog>(); // Optional chunk if ((br.BaseStream.Position != br.BaseStream.Length) && br.PeekChunkSignature() == ModelConvexPlanes.Signature) { this.ConvexPlanes = br.ReadIFFChunk <ModelConvexPlanes>(); } // Version-dependent chunk if ((br.BaseStream.Position != br.BaseStream.Length) && br.PeekChunkSignature() == ModelGameObjectFileID.Signature) { this.GameObjectFileID = br.ReadIFFChunk <ModelGameObjectFileID>(); } } } }
/// <summary> /// Initializes a new instance of the <see cref="ModelRoot"/> class. /// </summary> /// <param name="inData">The binary data.</param> public ModelRoot(byte[] inData) { using (var ms = new MemoryStream(inData)) { using (var br = new BinaryReader(ms)) { Version = br.ReadIFFChunk <TerrainVersion>(); Header = br.ReadIFFChunk <ModelRootHeader>(); Textures = br.ReadIFFChunk <ModelTextures>(); Materials = br.ReadIFFChunk <ModelMaterials>(); GroupNames = br.ReadIFFChunk <ModelGroupNames>(); GroupInformation = br.ReadIFFChunk <ModelGroupInformation>(); Skybox = br.ReadIFFChunk <ModelSkybox>(); PortalVertices = br.ReadIFFChunk <ModelPortalVertices>(); Portals = br.ReadIFFChunk <ModelPortals>(); PortalReferences = br.ReadIFFChunk <ModelPortalReferences>(); VisibleVertices = br.ReadIFFChunk <ModelVisibleVertices>(); VisibleBlocks = br.ReadIFFChunk <ModelVisibleBlocks>(); StaticLighting = br.ReadIFFChunk <ModelStaticLighting>(); DoodadSets = br.ReadIFFChunk <ModelDoodadSets>(); DoodadPaths = br.ReadIFFChunk <ModelDoodadPaths>(); DoodadInstances = br.ReadIFFChunk <ModelDoodadInstances>(); Fog = br.ReadIFFChunk <ModelFog>(); // Optional chunk if ((br.BaseStream.Position != br.BaseStream.Length) && br.PeekChunkSignature() == ModelConvexPlanes.Signature) { ConvexPlanes = br.ReadIFFChunk <ModelConvexPlanes>(); } } } }