public static void Serialize(this Path path, LevelSerializeContext context) { context.bw.WriteBoolean(path.looped); context.bw.Write(path.positions.Count); foreach (var position in path.positions) { position.Serialize(context); } context.bw.Write(path.properties.Count); foreach (var kvp in path.properties) { context.bw.Write(kvp.Key); context.bw.Write(kvp.Value ?? string.Empty); // (null value should probably be blocked by editor, but being safe...) } }
public static Path DeserializePath(this LevelDeserializeContext context) { var path = new Path(); path.looped = context.br.ReadBoolean(); var positionsCount = context.br.ReadInt32(); path.positions = new List <LevelPosition>(positionsCount); for (var i = 0; i < positionsCount; i++) { path.positions.Add(new LevelPosition(context)); } var count = context.br.ReadInt32(); for (var i = 0; i < count; i++) { path.properties.Add(context.br.ReadString(), context.br.ReadString()); } return(path); }