示例#1
0
        public T GetAsset <T>(string assetName) where T : class
        {
            // Check in Resources
            var resourceResults = Resources.LoadAll(assetName);

            if (resourceResults?.Count() != 0)
            {
                return(resourceResults.SingleOrDefault() as T);
            }
            // Check in asset bundles
#if UNITY_EDITOR
            foreach (var path in AssetDatabase.GetAssetPathsFromAssetBundle(ModuleType.ToLower() + "assets"))
            {
                if (!path.ToLower().EndsWith(assetName.ToLower()))
                {
                    continue;
                }
                return(AssetDatabase.LoadAssetAtPath(path, typeof(T)) as T);
            }
#endif
            if (Application.ModuleAssetBundles.ContainsKey(ModuleType))
            {
                var moduleAssetBundle = Application.ModuleAssetBundles[ModuleType];
                foreach (var name in moduleAssetBundle.GetAllAssetNames())
                {
                    if (!name.ToLower().EndsWith(assetName.ToLower()))
                    {
                        continue;
                    }
                    return(moduleAssetBundle.LoadAsset(name, typeof(T)) as T);
                }
            }
            // Check in user asset directories
            if (Application.ModuleAssetDirectories.ContainsKey(ModuleType))
            {
                foreach (var directory in Application.ModuleAssetDirectories[ModuleType])
                {
                    foreach (var path in Directory.GetFiles(directory))
                    {
                        if (!path.ToLower().EndsWith(assetName.ToLower()))
                        {
                            continue;
                        }
                        // TODO not yet implemented
                    }
                }
            }
            return(default(T));
        }
示例#2
0
        public List <Texture2D> GetTextureAssets(string searchFilter = "")
        {
            var textures = new List <Texture2D>();

#if UNITY_EDITOR
            foreach (var path in AssetDatabase.GetAssetPathsFromAssetBundle(ModuleType.ToLower() + "assets"))
            {
                if (searchFilter != "" && !path.ToLower().Contains(searchFilter.ToLower()))
                {
                    continue;
                }
                if (!path.IsTexturePath())
                {
                    continue;
                }
                var texture = new Texture2D(1, 1);
                textures.Add(texture);
                // load textures without blocking
                MainThreadDispatcher.Enqueue(() => {
                    if (texture == null)
                    {
                        return;
                    }
                    var data = System.IO.File.ReadAllBytes(path);
                    texture.LoadImage(data);
                });
            }
#endif
            // Check in asset bundles
            if (Application.ModuleAssetBundles.ContainsKey(ModuleType))
            {
                var moduleAssetBundles = Application.ModuleAssetBundles[ModuleType];
                foreach (var name in moduleAssetBundles.GetAllAssetNames())
                {
                    if (searchFilter != "" && !name.ToLower().Contains(searchFilter.ToLower()))
                    {
                        continue;
                    }
                    if (!name.IsTexturePath())
                    {
                        continue;
                    }
                    var texture = new Texture2D(1, 1);
                    textures.Add(texture);
                    // load textures without blocking
                    MainThreadDispatcher.Enqueue(() =>
                    {
                        if (texture == null)
                        {
                            return;
                        }
                        texture = moduleAssetBundles.LoadAsset <Texture2D>(name);
                    });
                }
            }
            // Check in user asset directories
            if (Application.ModuleAssetDirectories.ContainsKey(ModuleType))
            {
                foreach (var directory in Application.ModuleAssetDirectories[ModuleType])
                {
                    foreach (var path in Directory.GetFiles(directory))
                    {
                        if (path != "" && !path.ToLower().Contains(searchFilter.ToLower()))
                        {
                            continue;
                        }
                        if (!path.IsTexturePath())
                        {
                            continue;
                        }
                        var texture = new Texture2D(1, 1);
                        textures.Add(texture);
                        // load textures without blocking
                        MainThreadDispatcher.Enqueue(() =>
                        {
                            if (texture == null)
                            {
                                return;
                            }
                            var data = System.IO.File.ReadAllBytes(path);
                            texture.LoadImage(data);
                        });
                    }
                }
            }

            return(textures);
        }
示例#3
0
        public List <PointCloud> GetPointCloudAssets(string searchFilter = "")
        {
            var pointClouds = new List <PointCloud>();

            if (ModuleType == null || ModuleType == "")
            {
                return(pointClouds);
            }

            // Check in resources
            var resourceResults = Resources.LoadAll <PointCloud>(searchFilter).ToList();

            if (resourceResults?.Count != 0)
            {
                resourceResults.ForEach(pc => pointClouds.Add(pc));
            }

            // Check in asset bundles
#if UNITY_EDITOR
            foreach (var path in AssetDatabase.GetAssetPathsFromAssetBundle(ModuleType.ToLower() + "assets"))
            {
                if (searchFilter != "" && !path.ToLower().Contains(searchFilter.ToLower()))
                {
                    continue;
                }
                if (!path.IsPointCloudPath())
                {
                    continue;
                }
                var pointCloud = PlyImporter.ImportAsPointCloud(path);
                pointClouds.Add(pointCloud);
            }
#endif
            if (Application.ModuleAssetBundles.ContainsKey(ModuleType))
            {
                var moduleAssetBundles = Application.ModuleAssetBundles[ModuleType];
                foreach (var name in moduleAssetBundles.GetAllAssetNames())
                {
                    if (searchFilter != "" && !name.ToLower().Contains(searchFilter.ToLower()))
                    {
                        continue;
                    }
                    if (!name.IsPointCloudPath())
                    {
                        continue;
                    }
                    // TODO not yet implemented
                }
            }
            // Check in user asset directories
            if (Application.ModuleAssetDirectories.ContainsKey(ModuleType))
            {
                foreach (var directory in Application.ModuleAssetDirectories[ModuleType])
                {
                    foreach (var path in Directory.GetFiles(directory))
                    {
                        if (path != "" && !path.ToLower().Contains(searchFilter.ToLower()))
                        {
                            continue;
                        }
                        if (!path.IsPointCloudPath())
                        {
                            continue;
                        }
                        var pointCloud = PlyImporter.ImportAsPointCloud(path);
                        pointClouds.Add(pointCloud);
                    }
                }
            }
            return(pointClouds);
        }