Esempio n. 1
0
        private void ProcessLoadRequest(SAssetLoadRequest loadRequest)
        {
            Scene scene = m_importer.ImportFile(loadRequest.filename, PostProcessPreset.TargetRealTimeMaximumQuality | PostProcessPreset.ConvertToLeftHanded);

            if (loadRequest.type == EAssetType.Mesh)
            {
                if (scene.HasMeshes)
                {
                    CMeshAsset      meshAsset  = (CMeshAsset)loadRequest.targetAsset;
                    CMeshLoadingJob loadingJob = new CMeshLoadingJob(scene, Path.GetDirectoryName(loadRequest.filename));
                    LoadMeshInternal(0, meshAsset, loadingJob, loadRequest.assetPath, Path.GetFileNameWithoutExtension(loadRequest.filename));
                }
            }
            else if (loadRequest.type == EAssetType.Model)
            {
                if (scene.HasMeshes)
                {
                    CModelAsset modelAsset = (CModelAsset)loadRequest.targetAsset;
                    LoadModelInternal(loadRequest.filename, scene, modelAsset, loadRequest.assetPath);
                    modelAsset.Name = Path.GetFileNameWithoutExtension(loadRequest.filename);
                    if (CAssetRegistry.Instance.RequestRegisterAsset(modelAsset, loadRequest.assetPath + "Models/", out CModelAsset existingAsset))
                    {
                        existingAsset.WaitUntilLoaded();
                        modelAsset.CopyFrom(existingAsset);
                    }
                }
            }
            AssetLoadedCallback(loadRequest);
        }
Esempio n. 2
0
        public CMeshAsset LoadMeshAsync(string filename, bool bAlwaysImport = false)
        {
            CMeshAsset outAsset = new CMeshAsset();

            if (!bAlwaysImport && TryGetExistingAsset(filename, "Assets/", outAsset, out CMeshAsset existingAsset))
            {
                return(existingAsset);
            }

            SAssetLoadRequest loadRequest = new SAssetLoadRequest()
            {
                filename    = filename,
                targetAsset = outAsset,
                assetPath   = "Assets/",
                type        = EAssetType.Mesh
            };

            m_loadRequests.Enqueue(loadRequest);
            StartNextLoadRequest();
            return(outAsset);
        }
Esempio n. 3
0
 private void AssetLoadedCallback(SAssetLoadRequest finishedRequest)
 {
     m_bIsLoading = false;
     finishedRequest.targetAsset.LoadFinished();
 }