コード例 #1
0
 public ExteriorChunkPerson(ExteriorChunkArea area, int index, BinaryReader reader)
     : base(area, index, reader)
 {
     TextureIndex = new TextureIndex(reader.ReadUInt16());
     FactionIndex = new FactionIndex(reader.ReadUInt16());
     Unknowns.Add(reader.ReadByte());
 }
コード例 #2
0
 public ExteriorChunkDoor(ExteriorChunkArea area, int index, BinaryReader reader)
     : base(area, index, reader)
 {
     Unknowns.Add(reader.ReadUInt16());
     Rotation = Angle.Daggerfall(reader.ReadInt16());
     Unknowns.Add(reader.ReadUInt16());
     reader.ReadZeroes(1);
 }
コード例 #3
0
        internal ExteriorChunk(ExteriorBlock block, BinaryReader reader, int index)
            : base(block.State)
        {
            this.Index           = index;
            Unknowns.Add("g", u1 = reader.ReadInt32());
            Unknowns.Add("h", u2 = reader.ReadInt32());
            this.X     = reader.ReadInt32();
            this.Z     = reader.ReadInt32();
            this.Angle = Angle.Daggerfall(reader.ReadInt32());
            this.Block = block;

            var b1 = State.Models.RecordMap.ContainsKey(u1);
            var b2 = State.Models.RecordMap.ContainsKey(u2);
        }
コード例 #4
0
        internal ExteriorChunkArea(ExteriorChunk chunk, bool isExterior, BinaryReader reader)
            : base(chunk.State)
        {
            Chunk = chunk;

            byte modelCount   = reader.ReadByte();
            byte flatCount    = reader.ReadByte();
            byte sectionCount = reader.ReadByte();
            byte personCount  = reader.ReadByte();
            byte doorCount    = reader.ReadByte();

            Unknowns.Add("a", reader.ReadUInt16());
            Unknowns.Add("b", reader.ReadUInt16()); // always non-zero
            Unknowns.Add("c", reader.ReadUInt16());
            Unknowns.Add("d", reader.ReadUInt16()); // always non-zero
            Unknowns.Add("e", reader.ReadUInt16()); // always non-zero
            Unknowns.Add("f", reader.ReadUInt16()); // always non-zero

            ExteriorChunkModel[] models = new ExteriorChunkModel[modelCount];
            for (int index = 0; index < modelCount; index++)
            {
                models[index] = new ExteriorChunkModel(this, index, reader);
            }
            Models = new ReadOnlyCollection <ExteriorChunkModel>(models);

            ExteriorChunkFlat[] flats = new ExteriorChunkFlat[flatCount];
            for (int index = 0; index < flatCount; index++)
            {
                flats[index] = new ExteriorChunkFlat(this, index, reader);
            }
            Flats = new ReadOnlyCollection <ExteriorChunkFlat>(flats);

            ExteriorChunkSection[] sections = new ExteriorChunkSection[sectionCount];
            for (int index = 0; index < sectionCount; index++)
            {
                sections[index] = new ExteriorChunkSection(this, index, reader);
            }
            Sections = new ReadOnlyCollection <ExteriorChunkSection>(sections);

            ExteriorChunkPerson[] persons = new ExteriorChunkPerson[personCount];
            for (int index = 0; index < personCount; index++)
            {
                persons[index] = new ExteriorChunkPerson(this, index, reader);
            }
            Persons = new ReadOnlyCollection <ExteriorChunkPerson>(persons);

            ExteriorChunkDoor[] doors = new ExteriorChunkDoor[doorCount];
            for (int index = 0; index < doorCount; index++)
            {
                doors[index] = new ExteriorChunkDoor(this, index, reader);
            }
            Doors = new ReadOnlyCollection <ExteriorChunkDoor>(doors);
            if (doorCount > 0 || sectionCount > 0 || personCount > 0)
            {
            }
        }
コード例 #5
0
        internal ExteriorChunkModel(ExteriorChunkArea area, int index, BinaryReader reader) : base(area.State)
        {
            this.Area  = area;
            this.Index = index;
            ModelId    = reader.ReadUInt16() * 100 + reader.ReadByte();
            Unknowns.Add(reader.ReadByte());
            Unknowns.Add(reader.ReadInt32()); // Nonzero in 1297 of 236250 records; sames to repeast within the same file. Could be two or four separate fields.
            Unknowns.Add(reader.ReadInt32());
            Unknowns.Add(reader.ReadInt32()); // Non-zero only in 272 of 236250 records. Seems to repeat within the same file. Could be two or four seperate fields.
            reader.ReadZeroes(8);
            UnknownPoint = reader.ReadVector3i();
            var position = Position = reader.ReadVector3i();

            reader.ReadZeroes(4);
            YRotation = Angle.Daggerfall(reader.ReadInt16());
            Unknowns.Add(reader.ReadUInt16());
            Unknowns.Add(reader.ReadInt32());
            Unknowns.Add(reader.ReadInt32()); // Only non-zero in CUSTAA45.RMB where it is 0x200; this is referenced only by Wayrest.
            reader.ReadZeroes(2);

            transform = Matrix.CreateRotationY(YRotation.InRadians) * Matrix.CreateTranslation(position);
        }
コード例 #6
0
 public ExteriorChunkSection(ExteriorChunkArea area, int index, BinaryReader reader)
     : base(area, index, reader)
 {
     Unknowns.Add(reader.ReadUInt16());
     Unknowns.Add(reader.ReadUInt16());
 }