コード例 #1
0
        private bool IgnoredPredicate(Transform t)
        {
            if (unignoredTransforms.Contains(t.name))
            {
                return(false);
            }

            if (ignoredTransforms.Contains(t.name))
            {
                return(true);
            }

            if (t.gameObject.layer != ignoreLayer0)
            {
                Transform prefabTransform = part.partInfo.partPrefab?.FindModelTransform(t.gameObject.name);
                if (prefabTransform is null || prefabTransform.gameObject.layer != ignoreLayer0)
                {
                    return(false);
                }
            }

            FARLogger.DebugFormat("Ignoring {2} ({0}::{1}) for voxelization: layer is ignored",
                                  part.name,
                                  t.gameObject.name,
                                  t.name);
            return(true);
        }
コード例 #2
0
        public IEnumerator Load(IAssetRequest <Texture2D> assetRequest)
        {
            assetRequest.State = Progress.InProgress;

            if (loadedTextures.TryGetValue(assetRequest.Url, out Texture2D texture))
            {
                FARLogger.DebugFormat("Using already loaded texture {0}", assetRequest.Url);
                assetRequest.State = Progress.Completed;
                assetRequest.OnLoad(texture);
                yield break;
            }

            string path = $@"file:///{PathUtil.Combine(PathUtil.ParentDir, assetRequest.Url)}";

            FARLogger.DebugFormat("Loading texture from {0}", path);
            using UnityWebRequest request = UnityWebRequestTexture.GetTexture(path);
            yield return(request.SendWebRequest());

            if (!string.IsNullOrEmpty(request.error))
            {
                FARLogger.Error($"Error loading texture from {request.url}: {request.error}");
                assetRequest.State = Progress.Error;
                assetRequest.OnError();
            }
            else
            {
                FARLogger.DebugFormat("Texture loaded from from {0}", request.url);
                Texture2D content = DownloadHandlerTexture.GetContent(request);
                loadedTextures.Add(assetRequest.Url, content);
                assetRequest.State = Progress.Completed;
                assetRequest.OnLoad(content);
            }
        }
コード例 #3
0
        public IEnumerator Load(IAssetRequest <Shader> assetRequest)
        {
            assetRequest.State = Progress.InProgress;

            var shader = Shader.Find(assetRequest.Url);

            if (shader == null)
            {
                FARLogger.DebugFormat("Could not find shader {0}", assetRequest.Url);
                assetRequest.State = Progress.Error;
                assetRequest.OnError();
            }
            else
            {
                FARLogger.DebugFormat("Found shader {0}", assetRequest.Url);
                assetRequest.State = Progress.Completed;
                assetRequest.OnLoad(shader);
            }

            yield break;
        }
コード例 #4
0
        public IEnumerator Load(IAssetRequest <ComputeShader> assetRequest)
        {
            assetRequest.State = Progress.InProgress;

            ComputeShader shader = UnityEngine.Resources.Load <ComputeShader>(assetRequest.Url);

            if (shader == null)
            {
                FARLogger.DebugFormat("Could not find compute shader {0}", assetRequest.Url);
                assetRequest.State = Progress.Error;
                assetRequest.OnError();
            }
            else
            {
                FARLogger.DebugFormat("Found compute shader {0}", assetRequest.Url);
                assetRequest.State = Progress.Completed;
                assetRequest.OnLoad(shader);
            }

            yield break;
        }
コード例 #5
0
        public IEnumerator Load()
        {
            // wait for the other loading to be done
            if (State == Progress.InProgress)
            {
                yield return(new WaitWhile(() => State == Progress.InProgress));

                yield break;
            }

            State = Progress.InProgress;

            // wait for config to be loaded fully
            while (FARConfig.IsLoading)
            {
                yield return(null);
            }

            NeedsReload = false;

            string path = Url;

            FARLogger.DebugFormat("Loading asset bundle from {0}", path);
            AssetBundleCreateRequest createRequest = AssetBundle.LoadFromFileAsync(path);

            yield return(createRequest);

            AssetBundle assetBundle = createRequest.assetBundle;

            if (assetBundle == null)
            {
                FARLogger.Error($"Could not load asset bundle from {path}");
                State = Progress.Error;
                yield break;
            }

            AssetBundleRequest loadRequest = assetBundle.LoadAllAssetsAsync <T>();

            yield return(loadRequest);

            LoadedAssets.Clear();
            foreach (Object asset in loadRequest.allAssets)
            {
                if (!LoadedAssets.ContainsKey(asset.name))
                {
                    if (asset is T t)
                    {
                        LoadedAssets.Add(asset.name, t);
                    }
                    else
                    {
                        FARLogger
                        .Warning($"Invalid asset type {asset.GetType().ToString()}, expected {typeof(T).ToString()}");
                    }
                }
                else
                {
                    FARLogger.DebugFormat("Asset {0} is duplicated", asset);
                }
            }

            FARLogger.DebugFormat("Completed loading assets from {0}", path);

            State = Progress.Completed;
        }
コード例 #6
0
 /// <inheritdoc />
 public void OnLoad(T resource)
 {
     FARLogger.DebugFormat("Loaded {0} from {1}", resource, Url);
     Asset = resource;
     AssetLoaded();
 }