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);
        }
Exemplo n.º 2
0
        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));
        }