private void ReadLump(BinaryReader binaryReader, BSPLumpInfo lump, BspLumpType lumpType) { var startOffset = binaryReader.BaseStream.Position; binaryReader.BaseStream.Seek(lump.offset, SeekOrigin.Begin); // handle lump based on lumptype given switch (lumpType) { case BspLumpType.LumpPlanes: Lumps[(int)lumpType] = ReadPlaneLump(lump, binaryReader); break; case BspLumpType.LumpVertexes: Lumps[(int)lumpType] = ReadVertexesLump(lump, binaryReader); break; case BspLumpType.LumpEdges: Lumps[(int)lumpType] = ReadEdgesLump(lump, binaryReader); break; case BspLumpType.LumpSurfEdges: Lumps[(int)lumpType] = ReadSurfEdgesLump(lump, binaryReader); break; case BspLumpType.LumpFaces: Lumps[(int)lumpType] = ReadFacesLump(lump, binaryReader); break; case BspLumpType.LumpTexInfo: Lumps[(int)lumpType] = ReadTexInfoLump(lump, binaryReader); break; default: Logging.Log($"No lump reader for {lumpType}", Logging.Severity.Medium); break; } // seek back to original pos binaryReader.BaseStream.Seek(startOffset, SeekOrigin.Begin); }
public void WriteLumpData(BspLumpType lumpType, byte[] data) { WriteLumpData((int)lumpType, data); }
/// <summary> /// Writes lump info /// </summary> /// <param name="lumpId">Id of lump to override</param> public void WriteBspLumpInfo(BspLumpType lumpId, BspLumpInfo info) { //Write lump informations WriteBspLumpInfo((int)lumpId, info); }
/// <summary> /// Calculates offset of lump /// </summary> /// <param name="lump">Lump type</param> /// <returns></returns> public static int CalculateLumpOffset(BspLumpType lump) { return(CalculateLumpOffset((int)lump)); }
/// <summary> /// Reads lump data /// </summary> /// <param name="lumpType">Lump to read</param> public byte[] ReadLumpData(BspLumpType lumpType) { return(ReadLumpData((int)lumpType)); }
/// <summary> /// Reads lump info from file /// </summary> /// <param name="lumpId">Lump type</param> public BspLumpInfo ReadLumpInfo(BspLumpType lumpType) { return(ReadLumpInfo((int)lumpType)); }