private static void PopulateSectorWithObjects(XmlReader reader, Sector sector) { while (reader.Read() && !(!reader.IsStartElement() && reader.LocalName.Equals("OBJECTS"))) { if (reader.IsStartElement()) { Debug.Log(reader.LocalName); try{ DType deserializer = deserializers [reader.LocalName]; if (deserializer != null) { IUnityXmlSerializable deserializedThing = deserializer.Invoke(reader); if (deserializedThing) { sector.AddToSector(deserializedThing.gameObject); } } else { Debug.LogError("Cannot find deserialization method for: " + reader.LocalName); } } catch (KeyNotFoundException k) { Debug.LogError("Cannot find Type Mapping for: " + reader.LocalName + " " + k.Message); } } } }
public static void MyMonoSerializeToStream(XmlWriter xmlWriter, IUnityXmlSerializable thing) { xmlWriter.WriteStartElement(typeLookup [thing.GetType().Name]); thing.WriteXml(xmlWriter); xmlWriter.WriteEndElement(); }
public static void MyMonoSerializeToFile(IUnityXmlSerializable thing, string path) { FileStream fs = File.Create(path); byte[] bytes = Encoding.UTF8.GetBytes(MyMonoSerializeToString(thing)); int size = bytes.Length; fs.Write(bytes, 0, size); fs.Close(); fs.Dispose(); }
private static void DeserializeGameStateObjects(XmlReader reader) { // while has readable xml, and has not reached the end tag for objects while (reader.Read() && !(!reader.IsStartElement() && reader.LocalName.Equals("OBJECTS"))) { if (reader.IsStartElement()) { IUnityXmlSerializable serializable = MyMonoDeserialize(reader); if (serializable) { GameState.instance.AddObject(serializable); } } } }
public static string MyMonoSerializeToString(IUnityXmlSerializable thing) { MemoryStream memstrm = new MemoryStream(); XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.IndentChars = "\t"; settings.NewLineChars = "\n"; XmlWriter xmlWriter = XmlWriter.Create(memstrm, settings); { MyMonoSerializeToStream(xmlWriter, thing); } xmlWriter.Flush(); memstrm.Seek(0, SeekOrigin.Begin); string returnval = System.Text.Encoding.UTF8.GetString(memstrm.ToArray()); return(returnval); }
public void RemoveObject(IUnityXmlSerializable Object) { Objects.Remove(Object); }
public void AddObject(IUnityXmlSerializable Object) { Objects.Add(Object, Object); }