public IEnumerator SampleModelsTestLoadAllGlb() { yield return(GltfSampleModels.LoadGlbFileUrls()); var deferAgent = new UninterruptedDeferAgent(); foreach (var file in GltfSampleModels.glbFileUrls) { var path = string.Format( #if UNITY_ANDROID && !UNITY_EDITOR "{0}" #else "file://{0}" #endif , file ); Debug.LogFormat("Testing {0}", path); var go = new GameObject(); var gltfAsset = go.AddComponent <GltfAsset>(); bool done = false; gltfAsset.onLoadComplete += (asset, success) => { done = true; Assert.IsTrue(success); }; gltfAsset.loadOnStartup = false; gltfAsset.Load(path, null, deferAgent); while (!done) { yield return(null); } Object.Destroy(go); } }
// [UnityTest] // [UseGltfSampleSetTestCase(localSampleSetJsonPath)] // [Performance] // public IEnumerator UninterruptedLoadingLocal(SampleSetItem testCase) { // yield return UninterruptedLoadingTemplate(testCase); // } static IEnumerator UninterruptedLoadingTemplate(SampleSetItem testCase) { Debug.Log($"Testing {testCase.path}"); var go = new GameObject(); var deferAgent = new UninterruptedDeferAgent(); var task = LoadGltfSampleSetItem(testCase, go, deferAgent); yield return(Utils.WaitForTask(task)); Object.Destroy(go); }
public IEnumerator QuickLoad(SampleSetItem testCase) { #if UNITY_EDITOR Debug.Log($"Testing {testCase.path}"); var go = new GameObject(); var deferAgent = new UninterruptedDeferAgent(); var task = LoadGltfSampleSetItem(testCase, go, deferAgent); yield return(WaitForTask(task)); Object.Destroy(go); #endif }
public IEnumerator SampleModelsTestLoadAllGltf() { yield return(GltfSampleModels.LoadGltfFileUrls()); var deferAgent = new UninterruptedDeferAgent(); foreach (var file in GltfSampleModels.gltfFileUrls) { var path = string.Format( #if UNITY_ANDROID && !UNITY_EDITOR "{0}" #else "file://{0}" #endif , file ); Debug.LogFormat("Testing {0}", path); var webRequest = UnityWebRequest.Get(path); yield return(webRequest.SendWebRequest()); Assert.Null(webRequest.error, webRequest.error); Assert.IsFalse(webRequest.isNetworkError); Assert.IsFalse(webRequest.isHttpError); var json = webRequest.downloadHandler.text; Assert.NotNull(json); Assert.Greater(json.Length, 0); var go = new GameObject(GltfSampleModels.GetNameFromPath(path)); var gltfAsset = go.AddComponent <GltfAsset>(); bool done = false; gltfAsset.onLoadComplete += (asset, success) => { done = true; Assert.IsTrue(success); }; gltfAsset.loadOnStartup = false; gltfAsset.Load(path, null, deferAgent); while (!done) { yield return(null); } Object.Destroy(go); } }
public IEnumerator LoadGlbFromMemory(SampleSetItem testCase) { Debug.Log($"Testing {testCase.path}"); var data = File.ReadAllBytes(testCase.path); var go = new GameObject(); var deferAgent = new UninterruptedDeferAgent(); var gltf = new GLTFast(); var task = gltf.LoadGltfBinary(data, new Uri(testCase.path)); yield return(WaitForTask(task)); var success = task.Result; Assert.IsTrue(success); success = gltf.InstantiateGltf(go.transform); Assert.IsTrue(success); Object.Destroy(go); }
async Task CustomDeferAgent() { // Recommended: Use a common defer agent across multiple GLTFast instances! // For a stable frame rate: IDeferAgent deferAgent = gameObject.AddComponent <TimeBudgetPerFrameDeferAgent>(); // Or for faster loading: deferAgent = new UninterruptedDeferAgent(); var tasks = new List <Task>(); foreach (var url in manyUrls) { #if GLTFAST_4_OR_NEWER var gltf = new GLTFast.GltfImport(null, deferAgent); #else var gltf = new GLTFast.GLTFast(null, deferAgent); #endif var task = gltf.Load(url).ContinueWith( t => { if (t.Result) { #if GLTFAST_4_OR_NEWER gltf.InstantiateMainScene(transform); for (int sceneId = 0; sceneId < gltf.sceneCount; sceneId++) { gltf.InstantiateScene(transform, sceneId); } #else gltf.InstantiateGltf(transform); #endif } }, TaskScheduler.FromCurrentSynchronizationContext() ); tasks.Add(task); } await Task.WhenAll(tasks); }
// [UnityTest] // [UseGltfSampleSetTestCase(localSampleSetJsonPath)] // [Performance] // public IEnumerator UninterruptedLoadingLocal(SampleSetItem testCase) { // yield return UninterruptedLoadingTemplate(testCase); // } static IEnumerator UninterruptedLoadingTemplate(SampleSetItem testCase) { Debug.Log($"Testing {testCase.path}"); var go = new GameObject(); var deferAgent = new UninterruptedDeferAgent(); var loadTime = new SampleGroup("LoadTime"); // First time without measuring var task = SampleModelsTest.LoadGltfSampleSetItem(testCase, go, deferAgent, loadTime); yield return(Utils.WaitForTask(task)); using (Measure.Frames().Scope()) { for (int i = 0; i < k_Repetitions; i++) { task = SampleModelsTest.LoadGltfSampleSetItem(testCase, go, deferAgent, loadTime); yield return(Utils.WaitForTask(task)); } } Object.Destroy(go); }
public IEnumerator LoadGlbFromMemory(SampleSetItem testCase) { Debug.Log($"Testing {testCase.path}"); var data = File.ReadAllBytes(testCase.path); var go = new GameObject(); var deferAgent = new UninterruptedDeferAgent(); var logger = new ConsoleLogger(); var gltf = new GltfImport(deferAgent: deferAgent, logger: logger); var task = gltf.LoadGltfBinary(data, new Uri(testCase.path)); yield return(Utils.WaitForTask(task)); var success = task.Result; Assert.IsTrue(success); var instantiator = new GameObjectInstantiator(gltf, go.transform, logger); success = gltf.InstantiateMainScene(instantiator); Assert.IsTrue(success); Object.Destroy(go); }