public ObjectModel Disassemble(Component component, DisassemblyContext context) { var converter = GetComponentConverter(component.GetType()); if (converter != null) { Component converted = converter.ConvertComponent(component, component.gameObject); return(context.MakeReferencable(component, (ObjectModel)Disassemble(converted, context).MakeExplicit(converted.GetType()))); } var assembler = GetEngineComponentAssembler(component.GetType()); if (assembler != null) { return(context.MakeReferencable(component, (ObjectModel)assembler.Disassemble(component, context).MakeExplicit(component.GetType()))); // Components are always explicit. } ObjectPopulator populator = new ObjectPopulator(); return((ObjectModel)populator.Extract(component, context).MakeExplicit(component.GetType())); }
public void Assemble(ObjectModel model, GameObject target, AssemblyContext context) { var serializer = GetEngineComponentAssembler(model.GetModelType()); if (serializer != null) { Component comp = target.GetComponent(model.GetModelType()); if (comp == null) { comp = target.AddComponent(model.GetModelType()); } serializer.Assemble(model, comp, context); context.MakeReferencable(comp, model.Guid); return; } Component component = target.AddComponent(model.GetModelType()); ObjectPopulator populator = new ObjectPopulator(); populator.Populate(component, model, context); }