コード例 #1
0
 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();
 }
コード例 #2
0
            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));
                }
            }
コード例 #3
0
            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);
            }
コード例 #4
0
            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);
            }
コード例 #5
0
        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));
                }
            }
        }
コード例 #6
0
            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);
            }
コード例 #7
0
 public BSEQEngineCreatorEntry(EndianBinaryReaderEx er, BSEQNameTable nameTable)
 {
     CreatorName = new BSEQNameOffset(er, nameTable);
     TargetName  = new BSEQNameOffset(er, nameTable);
 }
コード例 #8
0
 public BSEQCodeNamePair(EndianBinaryReaderEx er, BSEQNameTable nameTable)
 {
     ID         = er.ReadUInt16();
     NameOffset = new BSEQNameOffset(er, nameTable);
 }
コード例 #9
0
            public BSEQNameOffset(EndianBinaryReaderEx er, BSEQNameTable nameTable)
            {
                UInt16 offset = er.ReadUInt16();

                Value = nameTable.GetNameFromOffset(offset);
            }