private void ReadParticleManager(IList <IAetherManager> particleManagers) { string managerName = reader.ReadString(); string assemblyQualifiedName = reader.ReadString(); Type managerType = Type.GetType(assemblyQualifiedName); IAetherManager manager = null; foreach (IAetherManager mgr in particleManagers) { if (mgr.Name == managerName) { manager = mgr; break; } } if (manager == null) { manager = (IAetherManager)Activator.CreateInstance(managerType); particleManagers.Add(manager); if (manager is IInitializable) { ((IInitializable)manager).Initialize(this.Engine); } } IAetherSerialization serialisableParticle = manager as IAetherSerialization; bool isSerialisableParticle = reader.ReadBoolean(); if (isSerialisableParticle) { System.Diagnostics.Debug.Assert(manager != null, "According to the binary file, manager should be IAetherSerialization."); serialisableParticle.Load(this); } }
private void ReadParticleManager(IList <IAetherManager> particleManagers) { string elementName = reader.Name; //read attribute string managerName = string.Empty; string type = string.Empty; while (reader.MoveToNextAttribute()) { switch (reader.Name) { case "Name": managerName = reader.ReadContentAsString(); break; case "Type": type = reader.ReadContentAsString(); break; } } reader.MoveToElement(); bool isEmptyElement = reader.IsEmptyElement; reader.ReadStartElement(); if (elementName == "AetherParticleManager") { IAetherManager manager = null; foreach (IAetherManager mgr in particleManagers) { if (mgr.Name == managerName) { manager = mgr; break; } } if (manager == null) { manager = (IAetherManager)Activator.CreateInstance(Type.GetType(type, false)); particleManagers.Add(manager); if (manager is IInitializable) { ((IInitializable)manager).Initialize(this.Engine); } } IAetherSerialization serialisableParticle = manager as IAetherSerialization; if (serialisableParticle != null) { serialisableParticle.Load(this); } if (!isEmptyElement) { reader.ReadEndElement(); } } return; }
private void WriteParticleManager(IAetherManager manager) { writer.Write(manager.Name); Type managerType = manager.GetType(); string typeName = managerType.FullName + ", " + managerType.Assembly.GetName().Name; writer.Write(typeName); IAetherSerialization serialisableParticle = manager as IAetherSerialization; bool isSerialisableParticle = serialisableParticle != null; writer.Write(isSerialisableParticle); if (isSerialisableParticle) { serialisableParticle.Save(this); } }
private void WriteParticleManager(IAetherManager manager) { Type managerType = manager.GetType(); writer.WriteStartElement("AetherParticleManager"); writer.WriteAttributeString("Name", manager.Name); string typeName = managerType.FullName + ", " + managerType.Assembly.GetName().Name; writer.WriteAttributeString("Type", typeName); IAetherSerialization serialisableParticle = manager as IAetherSerialization; if (serialisableParticle != null) { serialisableParticle.Save(this); } writer.WriteEndElement(); }