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);
        }
Exemple #3
0
        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);
        }
    }
Exemple #5
0
        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);
        }
Exemple #6
0
    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);
        }