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); }
private GameObject RecursiveAssemble(ObjectModel model, AssemblyContext context, Transform parent) { GameObject obj = new GameObject(model.GetValue <string>("Name")) { tag = model.GetValue <string>("Tag"), layer = model.GetValue <int>("Layer"), isStatic = model.GetValue <bool>("Static") }; Vector3 pos = obj.transform.position; Quaternion rot = obj.transform.rotation; Vector3 scale = obj.transform.localScale; obj.transform.SetParent(parent, true); obj.transform.localPosition = pos; obj.transform.localRotation = rot; obj.transform.localScale = scale; obj.SetActive(false); var components = model.GetArray("Components"); foreach (var component in components) { _componentAssembler.Assemble(component as ObjectModel, obj, context); } var children = model.GetArray("Children"); foreach (var child in children) { GameObject childObj = RecursiveAssemble(child as ObjectModel, context, obj.transform); } obj.SetActive(true); return(context.MakeReferencable(obj, model.Guid)); }