コード例 #1
0
        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);
            }
        }
コード例 #2
0
        /// <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);
                }
            }
        }
コード例 #3
0
        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);
        }