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()); }
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); }
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); }
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) { } }
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); }
public ExteriorChunkSection(ExteriorChunkArea area, int index, BinaryReader reader) : base(area, index, reader) { Unknowns.Add(reader.ReadUInt16()); Unknowns.Add(reader.ReadUInt16()); }