/// <summary> /// Serializes file data to a stream. /// </summary> protected override void Write(BinaryWriterEx bw) { Entries entries; entries.Models = Models.GetEntries(); entries.Events = Events.GetEntries(); entries.Regions = Regions.GetEntries(); entries.Parts = Parts.GetEntries(); foreach (Model model in entries.Models) { model.CountInstances(entries.Parts); } foreach (Event evt in entries.Events) { evt.GetIndices(this, entries); } foreach (Part part in entries.Parts) { part.GetIndices(this, entries); } bw.BigEndian = false; MSB.WriteHeader(bw); Models.Write(bw, entries.Models); bw.FillInt64("NextParamOffset", bw.Position); Events.Write(bw, entries.Events); bw.FillInt64("NextParamOffset", bw.Position); Regions.Write(bw, entries.Regions); bw.FillInt64("NextParamOffset", bw.Position); Parts.Write(bw, entries.Parts); bw.FillInt64("NextParamOffset", 0); }
/// <summary> /// Serializes file data to a stream. /// </summary> protected override void Write(BinaryWriterEx bw) { Entries entries; entries.Models = Models.GetEntries(); entries.Events = Events.GetEntries(); entries.Regions = Regions.GetEntries(); entries.Parts = Parts.GetEntries(); foreach (Model model in entries.Models) { model.CountInstances(entries.Parts); } foreach (Event evt in entries.Events) { evt.GetIndices(this, entries); } foreach (Part part in entries.Parts) { part.GetIndices(this, entries); } bw.BigEndian = true; Models.Write(bw, entries.Models); bw.FillInt32("NextParamOffset", (int)bw.Position); Events.Write(bw, entries.Events); bw.FillInt32("NextParamOffset", (int)bw.Position); Regions.Write(bw, entries.Regions); bw.FillInt32("NextParamOffset", (int)bw.Position); Parts.Write(bw, entries.Parts); bw.FillInt32("NextParamOffset", (int)bw.Position); new MapstudioTree().Write(bw, Trees); bw.FillInt32("NextParamOffset", 0); }
internal override void Write(BinaryWriterEx bw) { Entries entries; entries.Models = Models.GetEntries(); List <Event> events = Events.GetEntries(); entries.Regions = Regions.GetEntries(); List <Route> routes = Routes.GetEntries(); entries.Parts = Parts.GetEntries(); foreach (Model model in entries.Models) { model.CountInstances(entries.Parts); } foreach (Event evt in events) { evt.GetIndices(entries); } foreach (Region region in entries.Regions) { region.GetIndices(entries); } foreach (Part part in entries.Parts) { part.GetIndices(this, entries); } bw.WriteASCII("MSB "); bw.WriteInt32(1); bw.WriteInt32(0x10); bw.WriteBoolean(false); bw.WriteBoolean(false); bw.WriteByte(1); bw.WriteByte(0xFF); Models.Write(bw, entries.Models); bw.FillInt64("NextParamOffset", bw.Position); Events.Write(bw, events); bw.FillInt64("NextParamOffset", bw.Position); Regions.Write(bw, entries.Regions); bw.FillInt64("NextParamOffset", bw.Position); Routes.Write(bw, routes); bw.FillInt64("NextParamOffset", bw.Position); Layers.Write(bw, Layers.GetEntries()); bw.FillInt64("NextParamOffset", bw.Position); Parts.Write(bw, entries.Parts); bw.FillInt64("NextParamOffset", bw.Position); PartsPoses.Write(bw, Layers.GetEntries()); bw.FillInt64("NextParamOffset", bw.Position); BoneNames.Write(bw, Layers.GetEntries()); bw.FillInt64("NextParamOffset", 0); }
internal override void Write(BinaryWriterEx bw) { Entries entries; entries.Models = Models.GetEntries(); entries.Events = Events.GetEntries(); entries.Regions = Regions.GetEntries(); entries.Parts = Parts.GetEntries(); entries.BoneNames = new List <BoneName>(); Lookups lookups; lookups.Models = MakeNameLookup(entries.Models); lookups.Parts = MakeNameLookup(entries.Parts); lookups.Collisions = MakeNameLookup(Parts.Collisions); lookups.BoneNames = new Dictionary <string, int>(); Models.DiscriminateModels(); foreach (Part part in entries.Parts) { part.GetIndices(lookups); } foreach (PartPose pose in PartPoses) { pose.GetIndices(lookups, entries); } bw.BigEndian = false; bw.WriteASCII("MSB "); bw.WriteInt32(1); bw.WriteInt32(0x10); bw.WriteBoolean(false); bw.WriteBoolean(false); bw.WriteByte(1); bw.WriteByte(0xFF); Models.Write(bw, entries.Models); bw.FillInt64("NextParamOffset", bw.Position); Events.Write(bw, entries.Events); bw.FillInt64("NextParamOffset", bw.Position); Regions.Write(bw, entries.Regions); bw.FillInt64("NextParamOffset", bw.Position); new RouteParam().Write(bw, new List <Entry>()); bw.FillInt64("NextParamOffset", bw.Position); new LayerParam().Write(bw, new List <Entry>()); bw.FillInt64("NextParamOffset", bw.Position); Parts.Write(bw, entries.Parts); bw.FillInt64("NextParamOffset", bw.Position); new MapstudioPartsPose().Write(bw, PartPoses); bw.FillInt64("NextParamOffset", bw.Position); new MapstudioBoneName().Write(bw, entries.BoneNames); bw.FillInt64("NextParamOffset", 0); }
/// <summary> /// Serializes file data to a stream. /// </summary> protected override void Write(BinaryWriterEx bw) { Entries entries; entries.Models = Models.GetEntries(); entries.Events = Events.GetEntries(); entries.Regions = Regions.GetEntries(); entries.Parts = Parts.GetEntries(); entries.BoneNames = new List <BoneName>(); foreach (Model model in entries.Models) { model.CountInstances(entries.Parts); } foreach (Event evt in entries.Events) { evt.GetIndices(this, entries); } foreach (Region region in entries.Regions) { region.GetIndices(this, entries); } foreach (Part part in entries.Parts) { part.GetIndices(this, entries); } foreach (PartsPose pose in PartsPoses) { pose.GetIndices(this, entries); } bw.BigEndian = false; MSB.WriteHeader(bw); Models.Write(bw, entries.Models); bw.FillInt64("NextParamOffset", bw.Position); Events.Write(bw, entries.Events); bw.FillInt64("NextParamOffset", bw.Position); Regions.Write(bw, entries.Regions); bw.FillInt64("NextParamOffset", bw.Position); new RouteParam().Write(bw, Routes); bw.FillInt64("NextParamOffset", bw.Position); new LayerParam().Write(bw, Layers); bw.FillInt64("NextParamOffset", bw.Position); Parts.Write(bw, entries.Parts); bw.FillInt64("NextParamOffset", bw.Position); new MapstudioPartsPose().Write(bw, PartsPoses); bw.FillInt64("NextParamOffset", bw.Position); new MapstudioBoneName().Write(bw, entries.BoneNames); bw.FillInt64("NextParamOffset", 0); }
/// <summary> /// Serializes file data to a stream. /// </summary> protected override void Write(BinaryWriterEx bw) { Entries entries; entries.Models = Models.GetEntries(); entries.Events = Events.GetEntries(); entries.Regions = Regions.GetEntries(); entries.Parts = Parts.GetEntries(); entries.BoneNames = new List <BoneName>(); Lookups lookups; lookups.Models = MakeNameLookup(entries.Models); lookups.Parts = MakeNameLookup(entries.Parts); lookups.Collisions = MakeNameLookup(Parts.Collisions); lookups.BoneNames = new Dictionary <string, int>(); foreach (Part part in entries.Parts) { part.GetIndices(lookups); } foreach (PartPose pose in PartPoses) { pose.GetIndices(lookups, entries); } bw.BigEndian = Format == MSBFormat.DarkSouls2BE; bw.VarintLong = Format == MSBFormat.DarkSouls2Scholar; if (Format == MSBFormat.DarkSouls2Scholar) { MSB.WriteHeader(bw); } Models.Write(bw, entries.Models); bw.FillVarint("NextParamOffset", bw.Position); Events.Write(bw, entries.Events); bw.FillVarint("NextParamOffset", bw.Position); Regions.Write(bw, entries.Regions); bw.FillVarint("NextParamOffset", bw.Position); new RouteParam().Write(bw, new List <Entry>()); bw.FillVarint("NextParamOffset", bw.Position); new LayerParam().Write(bw, new List <Entry>()); bw.FillVarint("NextParamOffset", bw.Position); Parts.Write(bw, entries.Parts); bw.FillVarint("NextParamOffset", bw.Position); new MapstudioPartsPose().Write(bw, PartPoses); bw.FillVarint("NextParamOffset", bw.Position); new MapstudioBoneName().Write(bw, entries.BoneNames); bw.FillVarint("NextParamOffset", 0); }