internal override void Write(BinaryWriterEx bw) { var connectorPoints = new ConnectorPointSection(); var connectorConditions = new ConnectorConditionSection(); foreach (Connector connector in Connectors) { connector.GivePointsAndConds(connectorPoints, connectorConditions); } bw.BigEndian = false; bw.WriteASCII("NVMA"); bw.WriteUInt32((uint)Version); bw.ReserveUInt32("FileSize"); bw.WriteInt32(Version == NVAVersion.OldBloodborne ? 8 : 9); Navmeshes.Write(bw, 0); Entries1.Write(bw, 1); Entries2.Write(bw, 2); new Section3().Write(bw, 3); Connectors.Write(bw, 4); connectorPoints.Write(bw, 5); connectorConditions.Write(bw, 6); Entries7.Write(bw, 7); if (Version != NVAVersion.OldBloodborne) { Entries8.Write(bw, 8); } bw.FillUInt32("FileSize", (uint)bw.Position); }
internal override void Read(BinaryReaderEx br) { br.BigEndian = false; br.AssertASCII("NVMA"); Version = br.ReadEnum32 <NVAVersion>(); br.ReadUInt32(); // File size br.AssertInt32(Version == NVAVersion.OldBloodborne ? 8 : 9); // Section count Navmeshes = new NavmeshSection(br); Entries1 = new Section1(br); Entries2 = new Section2(br); new Section3(br); Connectors = new ConnectorSection(br); var connectorPoints = new ConnectorPointSection(br); var connectorConditions = new ConnectorConditionSection(br); Entries7 = new Section7(br); if (Version == NVAVersion.OldBloodborne) { Entries8 = new Section8(1); } else { Entries8 = new Section8(br); } foreach (Connector connector in Connectors) { connector.TakePointsAndConds(connectorPoints, connectorConditions); } }
internal void GivePointsAndConds(ConnectorPointSection points, ConnectorConditionSection conds) { PointsIndex = points.Count; points.AddRange(Points); ConditionsIndex = conds.Count; conds.AddRange(Conditions); }
internal void TakePointsAndConds(ConnectorPointSection points, ConnectorConditionSection conds) { Points = new List <ConnectorPoint>(PointCount); for (int i = 0; i < PointCount; i++) { Points.Add(points[PointsIndex + i]); } PointCount = -1; Conditions = new List <ConnectorCondition>(ConditionCount); for (int i = 0; i < ConditionCount; i++) { Conditions.Add(conds[ConditionsIndex + i]); } ConditionCount = -1; }