private static void WriteEntry(BinaryWriter writer, int entryIndex, StateMachineEntry entry) { writer.Write(Magics.Entry); writer.Write(entryIndex); writer.WriteNullTerminatedString(entry.Name); for (int conditionIndex = 0; conditionIndex < entry.Conditions.Count; conditionIndex++) { StateMachineCondition condition = entry.Conditions[conditionIndex]; WriteCondition(writer, entryIndex, conditionIndex, condition); } }
/// <inheritdoc /> public void Serialize(Stream stream, Controller controller) { StateMachineController smc = EnsureControllerType(controller); using (var writer = new BinaryWriter(stream, FileEncoding.Default, true)) { writer.Write(smc.Unknown0); writer.WriteNullTerminatedString(smc.GraphName); writer.Write(smc.Unknown1); writer.Write(smc.StateEntries.Count); writer.Write(smc.Unknown2); writer.Write(smc.Unknown3); for (int entryIndex = 0; entryIndex < smc.StateEntries.Count; entryIndex++) { StateMachineEntry entry = smc.StateEntries[entryIndex]; WriteEntry(writer, entryIndex, entry); } } }
private static StateMachineEntry ReadEntry(Stream stream, BinaryReader reader) { var newEntry = new StateMachineEntry { Index = reader.ReadInt32(), Name = reader.ReadNullTerminatedString() }; while (stream.Position < stream.Length) { if (reader.ReadInt32() != Magics.Condition) { stream.Position -= 4; break; } newEntry.Conditions.Add(ReadCondition(stream, reader)); } return(newEntry); }