public IEnumerator Load() { var www = UnityWebRequest.Get(_gltfUrl); yield return(www.Send()); var gltfData = www.downloadHandler.data; if (Multithreaded) { yield return(asyncAction.RunOnWorkerThread(() => ParseGLTF(gltfData))); } else { ParseGLTF(gltfData); } var scene = _root.GetDefaultScene(); if (scene == null) { throw new Exception("No default scene in gltf file."); } if (_root.Buffers != null) { foreach (var buffer in _root.Buffers) { yield return(LoadBuffer(buffer)); } } if (_root.Images != null) { foreach (var image in _root.Images) { yield return(LoadImage(image)); } } if (Multithreaded) { yield return(asyncAction.RunOnWorkerThread(() => BuildMeshAttributes())); } else { BuildMeshAttributes(); } var sceneObj = CreateScene(scene); if (_sceneParent != null) { sceneObj.transform.SetParent(_sceneParent, false); } _root = null; }
public IEnumerator Load(int sceneIndex = -1) { if (_root == null) { if (Multithreaded) { yield return(asyncAction.RunOnWorkerThread(() => ParseGLTF(_gltfData))); } else { ParseGLTF(_gltfData); } } Scene scene; if (sceneIndex >= 0 && sceneIndex < _root.Scenes.Count) { scene = _root.Scenes[sceneIndex]; } else { scene = _root.GetDefaultScene(); } if (scene == null) { throw new Exception("No default scene in gltf file."); } if (_lastLoadedScene == null) { if (_root.Buffers != null) { foreach (var buffer in _root.Buffers) { yield return(LoadBuffer(buffer)); } } if (_root.Images != null) { foreach (var image in _root.Images) { yield return(LoadImage(image)); } } if (Multithreaded) { yield return(asyncAction.RunOnWorkerThread(() => BuildMeshAttributes())); } else { BuildMeshAttributes(); } } else { _meshCache = new Dictionary <Mesh, GameObject>(); } var sceneObj = CreateScene(scene); if (_sceneParent != null) { sceneObj.transform.SetParent(_sceneParent, false); } _lastLoadedScene = sceneObj; }
public virtual IEnumerator Load(int sceneIndex = -1) { if (_root == null) { var www = UnityWebRequest.Get(_gltfUrl); yield return(www.Send()); if (www.responseCode >= 400 || www.responseCode == 0) { throw new WebRequestException(www); } var gltfData = www.downloadHandler.data; if (Multithreaded) { yield return(asyncAction.RunOnWorkerThread(() => ParseGLTF(gltfData))); } else { ParseGLTF(gltfData); } } Scene scene; if (sceneIndex >= 0 && sceneIndex < _root.Scenes.Count) { scene = _root.Scenes[sceneIndex]; } else { scene = _root.GetDefaultScene(); } if (scene == null) { throw new Exception("No default scene in gltf file."); } if (_lastLoadedScene == null) { if (_root.Buffers != null) { foreach (var buffer in _root.Buffers) { yield return(LoadBuffer(buffer)); } } if (_root.Images != null) { foreach (var image in _root.Images) { yield return(LoadImage(image)); } } // generate these in advance instead of as-needed if (Multithreaded) { yield return(asyncAction.RunOnWorkerThread(() => BuildMeshAttributes())); } } var sceneObj = CreateScene(scene); if (_sceneParent != null) { sceneObj.transform.SetParent(_sceneParent, false); } _lastLoadedScene = sceneObj; }