Exemplo n.º 1
0
        public static Prefab Load(JObject json)
        {
            // Transform:
            Transform t;

            if (json.ContainsKey("transform"))
            {
                t = Transform.FromJson(json["transform"] as JObject);
            }
            else
            {
                t = new Transform();
            }

            var res = new Prefab(t);

            // Components
            if (json.ContainsKey("components"))
            {
                foreach (var item in json["components"] as JArray)
                {
                    var o    = item as JObject;
                    var type = Type.GetType(o["type"] as JString);
                    if (o.ContainsKey("args"))
                    {
                        var jargs = o["args"] as JArray;
                        var args  = new List <object>();
                        foreach (var arg in jargs)
                        {
                            var resarg = arg.ToObject();
                            if (arg.IsString)
                            {
                                var str = (string)(arg as JString);
                                if (str.StartsWith("@"))
                                {
                                    // preprocessing directive:
                                    str    = str.Substring(1);
                                    resarg = PreProcessingDirective(str);
                                }
                            }
                            else if (arg.IsArray)
                            {
                            }
                            args.Add(resarg);
                        }
                        res.AddComp(type, args.ToArray());
                    }
                    else
                    {
                        res.AddComp(type);
                    }
                }
            }


            // Children:
            if (json.ContainsKey("children"))
            {
                foreach (var childjson in json["children"] as JArray)
                {
                    res.AddChild(Load(childjson as JObject));
                }
            }

            return(res);
        }
Exemplo n.º 2
0
 public Prefab AddChild(Prefab child)
 {
     children.Add(child);
     return(this);
 }