public void WriteChildIndices(BINAWriter writer, string prefix) { foreach (var node in Nodes) { node.WriteChildIndices(writer, prefix); } }
public override void Save(Stream fileStream) { var writer = new BINAWriter(fileStream, Header); writer.AddOffset("VertexCountOffsetOffset"); writer.Write(0); //PostFaceOffset (Not needed???) writer.FillInOffset("VertexCountOffsetOffset", false); writer.AddOffset("VertexCountOffset"); writer.AddOffset("FaceCountOffset"); writer.FillInOffset("VertexCountOffset", false); writer.Write(Vertices.Count); for (int i = 0; i < Vertices.Count; i++) { writer.Write(Vertices[i]); } writer.FillInOffset("FaceCountOffset", false); writer.Write(Faces.Count); for (int i = 0; i < Faces.Count; i++) { writer.Write(Faces[i].Vertex1); writer.Write(Faces[i].Vertex2); writer.Write(Faces[i].Vertex3); writer.WriteNulls(2); writer.Write(Faces[i].Flags); } writer.FinishWrite(Header); }
public override void Save(Stream fileStream) { var writer = new BINAWriter(fileStream, Header); char[] WTXTMagic = { 'W', 'T', 'X', 'T' }; writer.Write(WTXTMagic); writer.AddString($"mstName", $"{Name}"); writer.Write(entries.Count); for (int i = 0; i < entries.Count; i++) { writer.AddString($"nameOffset{i}", $"{entries[i].Name}"); writer.AddOffset($"textOffset{i}"); writer.AddOffset($"placeholderOffset{i}"); } for (int i = 0; i < entries.Count; i++) { writer.FillInOffset($"textOffset{i}", false); writer.WriteNullTerminatedStringUTF16(entries[i].Text); } for (int i = 0; i < entries.Count; i++) { writer.FillInOffset($"placeholderOffset{i}", false); writer.WriteNullTerminatedString(entries[i].Placeholder); } writer.FinishWrite(Header); }
public override void Save(Stream fileStream) { // Header var header = new BINAv1Header(); var writer = new BINAWriter(fileStream, header); writer.WriteSignature(Signature); // Texture writer.AddString("textureName", Texture); // Placeholders writer.Write((uint)Entries.Count); writer.AddOffset("placeholderEntriesPos"); writer.FillInOffset("placeholderEntriesPos", false); for (int i = 0; i < Entries.Count; i++) { writer.AddString($"placeholderName{i}", Entries[i].Placeholder); writer.Write(Entries[i].X); writer.Write(Entries[i].Y); writer.Write(Entries[i].Width); writer.Write(Entries[i].Height); } writer.FinishWrite(header); }
public override void Save(Stream fileStream) { // Header var writer = new BINAWriter(fileStream, Header); writer.AddString("gismOffset", Signature); writer.Write(UnknownBoolean1); writer.Write((uint)Gismos.Length); // Containers writer.AddOffset("containerOffset"); writer.FillInOffset("containerOffset", false); // Container 1 for (int i = 0; i < Gismos.Length; ++i) { var gismo = Gismos[i]; writer.AddString($"fileNameOffset_{i}", gismo.FileName); writer.AddString($"fileNameOffset2_{i}", gismo.FileName); writer.AddString($"unknownOffset1_{i}", gismo.FileName); // TODO writer.Write(gismo.Unknown1); writer.Write(gismo.Unknown2); writer.Write(gismo.Unknown3); writer.Write((gismo.DoesAnimate) ? 1u : 0u); writer.AddOffset($"havokOffset_{i}"); writer.Write((gismo.UnknownBoolean1) ? 1u : 0u); writer.AddOffset($"containerTwoOffset_{i}"); } // Havok Array for (int i = 0; i < Gismos.Length; ++i) { writer.FillInOffset($"havokOffset_{i}", false); writer.WriteNulls(4); // TODO: Figure out what this is writer.AddString($"havokNameOffset_{i}", Gismos[i].HavokName); } // Container 2 for (int i = 0; i < Gismos.Length; ++i) { var gismo = Gismos[i]; writer.FillInOffset($"containerTwoOffset_{i}", false); writer.Write((gismo.UnknownBoolean2) ? 1u : 0u); writer.Write((gismo.UnknownBoolean3) ? 1u : 0u); writer.Write(gismo.Unknown5); writer.Write(gismo.Unknown6); writer.Write(gismo.Unknown7); writer.Write(gismo.Unknown8); writer.Write(gismo.RotationAmount); writer.Write(gismo.Unknown9); } writer.FinishWrite(Header); }
public void WriteDataEntries(BINAWriter writer, string prefix, string extension, uint id) { foreach (var node in Nodes) { node.WriteDataEntries(writer, prefix, extension, id); } }
public override void Write(BINAWriter writer) { for (uint i = 0; i < CaptionCount; ++i) { writer.FixPadding(8); Captions[i].Write(writer, i); } }
public void WriteData(BINAWriter writer, string extension) { // Write File Data if (Data != null && Data is DataEntry dataEntry) { dataEntry.WriteData(writer, extension, DataIndex); } }
public void WriteData(BINAWriter writer, string prefix, string extension) { foreach (var node in Nodes) { node.WriteData(writer, extension); } }
public override sealed void Save(Stream fileStream) { // BINA Header var writer = new BINAWriter(fileStream, Header); // Data Write(writer); writer.FinishWrite(Header); }
public override void Save(Stream fileStream) { // Header var writer = new BINAWriter(fileStream, Header); // SOBJ Data SOBJ.Write(writer, Objects, SOBJ.SOBJType.Colors); writer.FinishWrite(Header); }
public void Write(BINAWriter writer, uint index) { for (uint i = 0; i < LineCount; ++i) { Lines[i].Write(writer, index, i); } writer.Write(Unknown1); }
public void WriteDataIndices(BINAWriter writer, string prefix) { writer.FillInOffsetLong($"{prefix}dataNodeIndicesOffset", true, false); for (int i = 0; i < DataNodeIndices.Count; ++i) { writer.Write(DataNodeIndices[i]); } writer.FixPadding(8); }
public override void Write(BINAWriter writer) { i = 0; // Stage Entries foreach (var entry in StageEntries) { entry.Write(writer); } }
public static void ExportScfnt(Stream stream, string name, byte[] data) { var writer = new BINAWriter(stream, Header); writer.WriteSignature("KFCS1000"); // "KFC" signature writer.AddString("FontName", name, 8); // Pointer to file name writer.WriteNulls(0x10); // Unknown writer.Write((long)data.Length); // Font size writer.Write(data); // Font data writer.FinishWrite(Header); // Finalise writing }
public void WriteDataEntries(BINAWriter writer, string prefix, string extension, uint id) { if (Data != null && Data is DataEntry dataEntry) { writer.FillInOffsetLong( $"{prefix}nodeDataOffset{Index}", true, false); dataEntry.Write(writer, extension, id, DataIndex); } }
protected bool WriteExtraParamLength(BINAWriter writer, KeyValuePair <string, SetObjectParam> customData) { switch (customData.Key) { case "RangeIn": writer.Write(8UL); return(true); } return(false); }
protected void WriteTreeDataIndices( BINAWriter writer, NodeTree tree, string prefix) { // Data Node Indices writer.FillInOffsetLong($"{prefix}dataNodeIndicesOffset", true, false); for (int i = 0; i < tree.DataNodeIndices.Count; ++i) { writer.Write(tree.DataNodeIndices[i]); } writer.FixPadding(8); }
public void WriteData(BINAWriter writer, string extension, int index) { if (DataType == DataEntryTypes.NotHere) { return; } writer.FixPadding(16); writer.FillInOffsetLong( $"{extension}fileDataOffset{index}", true, false); writer.Write(Data); }
public void Write(BINAWriter writer, string prefix) { writer.Write(Nodes.Count); writer.Write(DataNodeIndices.Count); writer.AddOffset($"{prefix}nodesOffset", 8); writer.AddOffset($"{prefix}dataNodeIndicesOffset", 8); // Nodes writer.FillInOffsetLong($"{prefix}nodesOffset", true, false); foreach (var node in Nodes) { node.Write(writer, this, prefix); } }
public override void Write(BINAWriter writer) { // Slots WriteSlot(Unknown1); WriteSlot(CustomizeBody); WriteSlot(CustomizeHead); WriteSlot(CustomizeGlass); WriteSlot(Unknown2); WriteSlot(CustomizeGlove); WriteSlot(CustomizeShoes); WriteSlot(CustomizePattern); WriteSlot(EventMovie); WriteSlot(GameScore); WriteSlot(StageScore); WriteSlot(Unknown3); // Paths uint i = 0; WritePath(MiscPAC); WritePath(UnknownPath1); WritePath(StgMissionLUA); WritePath(UnknownPath2); writer.FinishWrite(Header); // Sub-Methods void WriteSlot(Slot slot) { if (slot == null) { writer.Write((ushort)0); } else { slot.Write(writer); } } void WritePath(string path) { if (string.IsNullOrEmpty(path)) { writer.Write(0UL); return; } writer.AddString($"path{++i}", path, 8); } }
public override void Save(Stream fileStream) { var writer = new BINAWriter(fileStream, Header); writer.Write(RangeIn); writer.Write(RangeDistance); writer.AddString("modelName", ModelName, 8); writer.WriteNulls(8); writer.AddString("skeletonName", SkeletonName, 8); writer.WriteNulls(8); writer.Write((uint)BoundingShape); writer.Write(BoundingSize); writer.AddString("meshName", MeshName, 8); writer.WriteNulls(16); writer.Write(ShapeOffset); writer.WriteNulls(4); writer.Write(ShapeSizeOffset); writer.Write((byte)RigidBodyType); writer.Write((byte)RigidBodyMaterial); writer.WriteNulls(2); writer.Write(_PhysicsParam.Mass); writer.Write(_PhysicsParam.Friction); writer.Write(_PhysicsParam.GravityFactor); writer.Write(_PhysicsParam.Restitution); writer.Write(_PhysicsParam.LinearDamping); writer.Write(_PhysicsParam.AngularDamping); writer.Write(_PhysicsParam.MaxLinearVelocity); writer.Write((byte)ContactDamageType); writer.Write(RideOnDamage); writer.Write(AerialBounce); writer.WriteNulls(9); // ReactionData for (int i = 0; i < ReactionDataCount; i++) { _ReactionData[i].Write(writer, i); } writer.FinishWrite(Header); }
protected bool WriteExtraParamData( BINAWriter writer, SetObject obj, KeyValuePair <string, SetObjectParam> customData) { var param = customData.Value; switch (customData.Key) { case "RangeIn": writer.Write((float)param.Data); writer.Write(obj.GetCustomDataValue <float>("RangeOut")); return(true); } return(false); }
public override void Save(Stream fileStream) { // Header var header = new BINAv1Header(); var writer = new BINAWriter(fileStream, header); uint filesCount = 0; for (int i = 0; i < Types.Count; i++) { for (int c = 0; c < Types[i].Files.Count; c++) { filesCount++; } } writer.Write(filesCount); writer.AddOffset("fileEntriesPos"); writer.Write(Types.Count); writer.AddOffset("typeEntriesPos"); writer.FillInOffset("typeEntriesPos", false); for (int i = 0; i < Types.Count; i++) { writer.AddString($"typeName{i}", Types[i].TypeName); writer.Write(Types[i].Files.Count); writer.AddOffset($"typeFilesOffset{i}"); } writer.FillInOffset("fileEntriesPos", false); int objectNum = 0; for (int i = 0; i < Types.Count; i++) { writer.FillInOffset($"typeFilesOffset{i}", false); for (int f = 0; f < Types[i].Files.Count; f++) { writer.AddString($"friendlyName{objectNum}", Types[i].Files[f].FriendlyName); writer.AddString($"filePath{objectNum}", Types[i].Files[f].FilePath); objectNum++; } } writer.FinishWrite(header); }
public void WriteChildIndices(BINAWriter writer, string prefix) { if (ChildIndices.Count < 1) { return; } writer.FillInOffsetLong( $"{prefix}nodeChildIDTableOffset{Index}", true, false); for (int i = 0; i < ChildIndices.Count; ++i) { writer.Write(ChildIndices[i]); } writer.FixPadding(8); }
public void Write(BINAWriter writer, string extension, uint id, int index) { writer.Write(id); writer.Write((ulong)Data.Length); writer.Write(0U); if (DataType == DataEntryTypes.NotHere) { writer.Write(0UL); } else { writer.AddOffset($"{extension}fileDataOffset{index}", 8); } writer.Write(0UL); writer.AddString($"{extension}extDataOffset{index}", extension, 8); writer.Write((ulong)DataType); }
public override void Save(Stream fileStream) { // Header var writer = new BINAWriter(fileStream, Header); writer.WriteSignature(Signature); writer.Write(1u); // TODO: Figure out what this value is. writer.Write(SoundEntries.Length); writer.AddOffset("soundEntriesOffset"); // Data writer.FillInOffset("soundEntriesOffset", false); for (uint i = 0; i < SoundEntries.Length; ++i) { writer.Write(i); writer.AddString($"soundEntry_{i}", SoundEntries[i]); } writer.FinishWrite(Header); }
public override void Save(Stream fileStream) { // Header var header = new BINAv1Header(); var writer = new BINAWriter(fileStream, header); writer.Write((uint)Files.Count); writer.AddOffset("fileEntriesPos"); writer.Write((uint)Types.Count); writer.AddOffset("typeEntriesPos"); // Types writer.FillInOffset("typeEntriesPos", false); for (int i = 0; i < Types.Count; i++) { writer.AddString($"typeName{i}", Types[i].TypeName); writer.Write(Types[i].FileCount); writer.AddOffset($"typeFilesOffset{i}"); } // Files uint fileEntriesPos = (uint)writer.BaseStream.Position; writer.FillInOffset("fileEntriesPos", false); for (int i = 0; i < Files.Count; i++) { writer.AddString($"friendlyName{i}", Files[i].FriendlyName); writer.AddString($"filePath{i}", Files[i].FilePath); } // Fill-in type file offsets for (int i = 0; i < Types.Count; i++) { writer.FillInOffset($"typeFilesOffset{i}", (fileEntriesPos + (Types[i].FileStartIndex * 8U)), false, false); } writer.FinishWrite(header); }
public void Write(BINAWriter writer, uint captionIndex, uint index) { writer.Write((uint)LineType); writer.Write(0); if (string.IsNullOrEmpty(Name)) { writer.Write(0UL); } else { writer.AddString($"Caption{captionIndex}Line{index}Name", Name, 8); } writer.Write(0UL); writer.Write(UnknownFloat1); writer.Write((byte)FirstCharacter); writer.Write((byte)FirstCharAnimation); writer.Write((byte)SecondCharacter); writer.Write((byte)SecondCharAnimation); writer.Write(TalkingCharacter); }
public void Write(BINAWriter writer) { // Stage Index writer.Write(StageIndex); writer.WriteNulls(3); // Time Bonus writer.Write(TimeBasis); writer.Write(TimeDown); // Miss Bonuses writer.Write(NoMissBonus); writer.Write(OneMissBonus); writer.Write(TwoMissBonus); writer.Write(ThreeMissBonus); writer.Write(FourMissBonus); writer.Write(FivePlusMissBonus); // Rank Scores writer.Write(SRankScore); writer.Write(ARankScore); writer.Write(BRankScore); writer.Write(0); // C Rank (not really used) writer.Write(0); // D Rank (unused) // Stage ID if (!string.IsNullOrEmpty(StageID)) { writer.AddString($"stageID{++i}", StageID, 8); } else { writer.Write(0UL); } writer.Write(0UL); }