public void TestPersistAttributeTypeScope() { var s = new ModelSerializer(StringSerializer.Create(), new LoadedTypeSerializer()); // Add a new entity to the original model, it should not be serialized! new Engine.WorldRendering.Entity(); var strm = new MemoryStream(); var writer = new StreamWriter(strm); s.Serialize(model, writer); var deserialized = new Data.ModelContainer(); writer.Flush(); strm.Position = 0; // For testing string serialized = getStringFromStream(strm); SimpleModelObject.CurrentModelContainer = deserialized; s.Deserialize(new StreamReader(strm)); Assert.AreNotEqual(model.Objects.Count, deserialized.Objects.Count); Assert.AreEqual(model.Objects[0].ToString(), deserialized.Objects[0].ToString()); Assert.AreEqual(model.Objects[1].ToString(), deserialized.Objects[1].ToString()); }
public void UpdateFromModel(Data.ModelContainer model) { var array = new List <IModelObject>(); foreach (var el in model.Objects) { array.Add((IModelObject)el); } foreach (var obj in array) { if (obj is TypelessObject) { objects.Add((TypelessObject)obj); continue; } var t = new TypelessObject(); t.Type = obj.GetType().FullName; foreach (var att in getAllPersistentAttributes(obj.GetType())) { t.SetData(att.Name, att.GetData(obj)); } if (obj is EngineModelObject) { t.attached = ((EngineModelObject)obj).attached; } objects.Add(t); } }
public void Serialize(Data.ModelContainer model, StreamWriter wr) { foreach (var obj in model.Objects) { if (obj.GetType().GetCustomAttributes(false).Contains(typeof(PersistAttribute))) { QueueForSerialization((IModelObject)obj); } } Serialize(wr); }
public void SetUp() { SimpleModelObject.CurrentModelContainer = new Data.ModelContainer(); model = SimpleModelObject.CurrentModelContainer; object1 = new TestObject { Getal = 32, }; object2 = new TestObject() { Getal = 2 }; object1.Object = object2; }
public void AddToModel(Data.ModelContainer model, Assembly assembly) { foreach (var t in objects) { IModelObject obj; try { obj = (IModelObject)assembly.CreateInstance(t.Type); foreach (var att in getAllPersistentAttributes(obj.GetType())) { if (t.HasData(att.Name)) { att.SetData(obj, t.GetData(att.Name)); } } if (obj is EngineModelObject) { var bmo = obj as EngineModelObject; foreach (var entry in t.attached) { var type = entry.Key; var value = entry.Value; try { var newType = assembly.GetType(type.FullName); if (newType != null) { type = newType; } } catch (Exception) { } bmo.set(type, value); } } } catch (Exception ex) { model.AddObject(t); } } }
public void TestChangeEntity() { var container = new Data.ModelContainer(); SimpleModelObject.CurrentModelContainer = new Data.ModelContainer(); var ent = new Engine.WorldRendering.Entity(); ent.Mesh = new RAMMesh(); int length; Data.ModelContainer.ObjectChange[] array; container.GetObjectChanges(out array, out length); Assert.AreEqual(1, length); Assert.AreEqual(ent, array[0].ModelObject); }
public void TestSerializeArray() { var array = new TestObjectArray(); array.Objects = new List <TestObject>(); array.Objects.Add(object1); array.Objects.Add(object2); var s = new ModelSerializer(StringSerializer.Create(), new LoadedTypeSerializer()); var strm = new MemoryStream(); var writer = new StreamWriter(strm); s.Serialize(model, writer); var deserialized = new Data.ModelContainer(); writer.Flush(); strm.Position = 0; // For testing string serialized = getStringFromStream(strm); SimpleModelObject.CurrentModelContainer = deserialized; s = new ModelSerializer(StringSerializer.Create(), new LoadedTypeSerializer()); s.Deserialize(new StreamReader(strm)); Assert.AreEqual(model.Objects.Count, deserialized.Objects.Count); Assert.AreEqual(model.Objects[0].ToString(), deserialized.Objects[0].ToString()); Assert.AreEqual(model.Objects[1].ToString(), deserialized.Objects[1].ToString()); Assert.AreEqual(model.Objects[2].ToString(), deserialized.Objects[2].ToString()); }
public VirtualModelSyncer(Data.ModelContainer container, byte unqiueSyncerID) { this.container = container; unqiueSyncerId = unqiueSyncerID; }
public void Initialize(Data.ModelContainer container) { Container = container; }