internal void Write(BinaryWriterEx bw, BTPBVersion version, long nameOffset, long probesOffset) { bw.WriteVarint(nameOffset); bw.WriteInt32(Flags08); bw.WriteInt32(Probes.Count); bw.WriteInt32(Unk10); bw.WriteInt32(Unk14); bw.WriteInt32(Unk18); bw.WriteSingle(Unk1C); bw.WriteSingle(Unk20); bw.WriteSingle(Unk24); bw.WriteVector3(Unk28); bw.WriteVector3(Unk34); bw.WriteVarint(probesOffset); if (version >= BTPBVersion.DarkSouls3) { bw.WriteSingle(Unk48); bw.WriteSingle(Unk4C); bw.WriteSingle(Unk50); bw.WritePattern(0x40, 0x00); bw.WriteByte(Unk94); bw.WriteByte(Unk95); bw.WriteByte(Unk96); bw.WriteByte(0); } }
internal void Write(BinaryWriterEx bw, BTPBVersion version) { bw.WriteInt16s(Coefficients); bw.WriteInt16(LightMask); bw.WriteInt16(Unk1A); if (version >= BTPBVersion.Bloodborne) { bw.WriteVector3(Position); bw.WritePattern(0x20, 0x00); } }
internal Probe(BinaryReaderEx br, BTPBVersion version) { Coefficients = br.ReadInt16s(12); LightMask = br.ReadInt16(); Unk1A = br.ReadInt16(); if (version >= BTPBVersion.Bloodborne) { Position = br.ReadVector3(); br.AssertPattern(0x20, 0x00); } }
internal Group(BinaryReaderEx br, BTPBVersion version, long dataStart) { long nameOffset = br.ReadVarint(); Flags08 = br.ReadInt32(); int probeCount = br.ReadInt32(); Unk10 = br.ReadInt32(); Unk14 = br.ReadInt32(); Unk18 = br.ReadInt32(); Unk1C = br.ReadSingle(); Unk20 = br.ReadSingle(); Unk24 = br.ReadSingle(); Unk28 = br.ReadVector3(); Unk34 = br.ReadVector3(); long probesOffset = br.ReadVarint(); if (version >= BTPBVersion.DarkSouls3) { Unk48 = br.ReadSingle(); Unk4C = br.ReadSingle(); Unk50 = br.ReadSingle(); br.AssertPattern(0x40, 0x00); Unk94 = br.ReadByte(); Unk95 = br.ReadByte(); Unk96 = br.ReadByte(); br.AssertByte(0); } if ((Flags08 & 1) != 0) { Name = br.GetUTF16(dataStart + nameOffset); } br.StepIn(dataStart + probesOffset); { Probes = new List <Probe>(probeCount); for (int i = 0; i < probeCount; i++) { Probes.Add(new Probe(br, version)); } } br.StepOut(); }
internal void WriteData(BinaryWriterEx bw, BTPBVersion version, long dataStart, out long nameOffset, out long probesOffset) { if ((Flags08 & 1) != 0) { nameOffset = bw.Position - dataStart; bw.WriteUTF16(Name, true); if ((bw.Position - dataStart) % 8 != 0) { bw.Position += 8 - (bw.Position - dataStart) % 8; } } else { nameOffset = 0; } probesOffset = bw.Position - dataStart; foreach (Probe probe in Probes) { probe.Write(bw, version); } }