public BSEQSceneSequenceProxyBlock(EndianBinaryReaderEx er, BSEQNameTable nameTable) { Count = er.ReadUInt16(); if (Count != 1) { throw new InvalidDataException("ProxyBlock Count not 1: (" + Count + ")"); } UnknownName = new BSEQNameOffset(er, nameTable); SceneName = new BSEQNameOffset(er, nameTable); Unknown = er.ReadUInt16(); }
public BSEQCodeNameList(EndianBinaryReaderEx er, BSEQNameTable nameTable) { UInt16 entryCount = er.ReadUInt16(); DefaultID = er.ReadUInt16(); Entries = new List <BSEQCodeNamePair>(); for (int i = 0; i < entryCount; i++) { Entries.Add(new BSEQCodeNamePair(er, nameTable)); } }
public BSEQPracticalBlock(EndianBinaryReaderEx er, BSEQNameTable nameTable) { long startPosition = er.BaseStream.Position; SequenceID2 = er.ReadUInt16(); PracticalName = new BSEQNameOffset(er, nameTable); UInt16 practicalSubNameListOffset = er.ReadUInt16(); Unknown = er.ReadUInt16(); er.BaseStream.Position = startPosition + practicalSubNameListOffset; PracticalSubNameList = new BSEQCodeNameList(er, nameTable); }
public BSEQSequenceBlock(EndianBinaryReaderEx er, BSEQNameTable nameTable, BSEQSequenceID seqID) { long startPos = er.BaseStream.Position; SequenceID2 = er.ReadUInt16(); SequenceName = new BSEQNameOffset(er, nameTable); UInt16 subSectionOffset = er.ReadUInt16(); UInt16 flowOffset = er.ReadUInt16(); er.BaseStream.Position = startPos + subSectionOffset; SubSectionTable = new BSEQSubSectionTable(er); er.BaseStream.Position = startPos + flowOffset; FlowTable = new BSEQFlowTable(er, seqID); }
public BSEQ(byte[] Data) { EndianBinaryReaderEx er = new EndianBinaryReaderEx(new MemoryStream(Data), Endianness.LittleEndian); Header = new BSEQHeader(er); UInt32[] sectionBlockOffsets = er.ReadUInt32s(Header.SectionBlockCount); er.BaseStream.Position = Header.NameTableOffset; NameTable = new BSEQNameTable(er); er.BaseStream.Position = Header.EngineCreatorTableOffset; EngineCreatorEntries = new List <BSEQEngineCreatorEntry>(); for (int i = 0; i < Header.EngineCreatorCount; i++) { EngineCreatorEntries.Add(new BSEQEngineCreatorEntry(er, NameTable)); } SectionBlocks = new List <BSEQSectionBlock>(); for (int i = 0; i < sectionBlockOffsets.Length; i++) { er.BaseStream.Position = sectionBlockOffsets[i]; UInt16 BlockType = BSEQSectionBlock.GetBlockType(er); switch ((BSEQSectionBlockType)BlockType) { case BSEQSectionBlockType.PracticalSectionTask: case BSEQSectionBlockType.PracticalSectionPage: SectionBlocks.Add(new BSEQPracticalSectionBlock(er, NameTable)); break; case BSEQSectionBlockType.SequenceSection: SectionBlocks.Add(new BSEQSecuenceSectionBlock(er, NameTable)); break; case BSEQSectionBlockType.SceneSequenceProxySection: SectionBlocks.Add(new BSEQSceneSequenceProxySectionBlock(er, NameTable)); break; default: throw new NotImplementedException("Unknown BlockType (" + BlockType + ") at position 0x" + String.Format("0x{0:X}", er.BaseStream.Position)); } } }
public BSEQSceneSequenceProxySectionBlock(EndianBinaryReaderEx er, BSEQNameTable nameTable) { long startPos = er.BaseStream.Position; SectionType = (SByte)er.ReadUInt32(); SequenceID = new BSEQSequenceID(er); Name = new BSEQNameOffset(er, nameTable); UInt16 enterTableOffset = er.ReadUInt16(); UInt16 exitTableOffset = er.ReadUInt16(); BlockType = er.ReadUInt16(); UInt16 proxyBlockOffset = er.ReadUInt16(); Unknown = er.ReadUInt16(); er.BaseStream.Position = startPos + enterTableOffset; EnterCodeList = new BSEQCodeNameList(er, nameTable); er.BaseStream.Position = startPos + exitTableOffset; ExitCodeList = new BSEQCodeNameList(er, nameTable); er.BaseStream.Position = startPos + proxyBlockOffset; ProxyBlock = new BSEQSceneSequenceProxyBlock(er, nameTable); SequenceID.RegisterSectionBlock(this); }
public BSEQEngineCreatorEntry(EndianBinaryReaderEx er, BSEQNameTable nameTable) { CreatorName = new BSEQNameOffset(er, nameTable); TargetName = new BSEQNameOffset(er, nameTable); }
public BSEQCodeNamePair(EndianBinaryReaderEx er, BSEQNameTable nameTable) { ID = er.ReadUInt16(); NameOffset = new BSEQNameOffset(er, nameTable); }
public BSEQNameOffset(EndianBinaryReaderEx er, BSEQNameTable nameTable) { UInt16 offset = er.ReadUInt16(); Value = nameTable.GetNameFromOffset(offset); }