internal void Load(List <System.Object> l, bool prefab) { bool need_prefab = prefab; prefab = true; Dictionary <string, object> fid2json = new Dictionary <string, object>(); foreach (Dictionary <string, System.Object> d in l) { var type = d["_type"].ToString(); var fileID = d["fileID"].ToString(); if (type == "GameObject") { var o = UnityEngine.Config.GameObject.FromJson(d); GameObject go = new GameObject(o.m_Name, prefab); go.SetSelfActive(o.m_IsActive == 1); go.m_IsStaticInScene = (o.m_StaticEditorFlags == 4294967295); go.layer = o.m_Layer; go.hideFlags = (HideFlags)o.m_ObjectHideFlags; tl[fileID] = go; fid2Object[fileID] = go; } else if (type == "Transform") { var o = UnityEngine.Config.Transform.FromJson(d); var transform = tl[o.m_GameObject.fileID].AddComponent <Transform>(); transform_helper[transform] = o.m_Father.fileID; transform_helper2[o.fileID] = transform; if (transform.gameObject.GetComponent <SkinnedMeshRenderer>() != null) { transform.__Reset(); } else { transform.localPosition = new Vector3(o.m_LocalPosition.x, o.m_LocalPosition.y, o.m_LocalPosition.z); transform.localRotation = new Quaternion(o.m_LocalRotation.x, o.m_LocalRotation.y, o.m_LocalRotation.z, o.m_LocalRotation.w); transform.localScale = new Vector3(o.m_LocalScale.x, o.m_LocalScale.y, o.m_LocalScale.z); } fid2Object[fileID] = transform; } else if (type == "MonoBehaviour") { var o = UnityEngine.Config.MonoBehaviour.FromJson(d); var filemap = rmm.GetFromInfo(o.m_Script); if (filemap == null) { Debug.LogError("Missing behaviour in map. guid = " + o.guid); continue; } var comp = tl[o.m_GameObject.fileID].AddComponent(TypeUtil.GetTypeFromString(filemap.name), d); if (comp == null) { Debug.LogError("Missing behaviour in type. guid = " + o.guid); continue; } MonoBehaviour mb = comp as MonoBehaviour; mb.SetEnabled(o.m_Enabled == 1); fid2Object[fileID] = mb; fid2json[fileID] = d; } else if (type == "Camera") { var o = UnityEngine.Config.Camera.FromJson(d); var camera = tl[o.m_GameObject.fileID].AddComponent <Camera>(); camera.fieldOfView = o.field_of_view; camera.nearClipPlane = o.near_clip_plane; camera.farClipPlane = o.far_clip_plane; camera.orthographicSize = o.orthographic_size; camera.orthographic = o.orthographic == 1; camera.SetEnabled(o.m_Enabled == 1); camera.cullingMask = (int)o.m_CullingMask.m_Bits; camera.depth = o.m_Depth; camera.clearFlags = (CameraClearFlags)o.m_ClearFlags; camera.backgroundColor = new Color(o.m_BackGroundColor.r, o.m_BackGroundColor.g, o.m_BackGroundColor.b, o.m_BackGroundColor.a); fid2Object[fileID] = camera; } else if (type == "MeshFilter") { var o = UnityEngine.Config.MeshFilter.FromJson(d); var meshFilter = tl[o.m_GameObject.fileID].AddComponent <MeshFilter>(); meshFilter.SetMesh(o.m_Mesh); fid2Object[fileID] = meshFilter; } else if (type == "Renderer") { var o = UnityEngine.Config.Renderer.FromJson(d); var renderer = tl[o.m_GameObject.fileID].AddComponent(typeof(MeshRenderer), o); fid2Object[fileID] = renderer; } else if (type == "SkinnedMeshRenderer") { var o = UnityEngine.Config.SkinnedMeshRenderer.FromJson(d); var skinnedMeshRenderer = tl[o.m_GameObject.fileID].AddComponent(typeof(SkinnedMeshRenderer), o); fid2Object[fileID] = skinnedMeshRenderer; } else if (type == "Animation") { var o = UnityEngine.Config.Animation.FromJson(d); var anim = tl[o.m_GameObject.fileID].AddComponent(typeof(Animation), o); fid2Object[fileID] = anim; } else if (type == "Light") { var o = UnityEngine.Config.Light.FromJson(d); var light = tl[o.m_GameObject.fileID].AddComponent(typeof(Light), o); fid2Object[fileID] = light; } else if (type == "BoxCollider") { var o = UnityEngine.Config.BoxCollider.FromJson(d); var boxCollider = tl[o.m_GameObject.fileID].AddComponent(typeof(BoxCollider), o); fid2Object[fileID] = boxCollider; } else if (type == "AudioSource") { var o = UnityEngine.Config.AudioSource.FromJson(d); var boxCollider = tl[o.m_GameObject.fileID].AddComponent(typeof(AudioSource), o); fid2Object[fileID] = boxCollider; } } foreach (var kvp in tl) { var transform = kvp.Value.transform; string father = transform_helper[transform]; if (father == "0") { // root. all.Add(kvp.Value); } else { var fatherTr = transform_helper2[father]; transform.SetParent(fatherTr, false); } } foreach (var item in fid2json) { MonoBehaviour mb = fid2Object[item.Key] as MonoBehaviour; initMonoBehaviour(mb, item.Value); } foreach (var kvp in tl) { if (!need_prefab) { kvp.Value.ClearPrefabFlag(); } kvp.Value.SetSelfActive(kvp.Value.m_IsActive); } }
internal Component AddComponent(string className) { return(AddComponent(TypeUtil.GetTypeFromString(className))); }