Exemple #1
0
 public void AddProvider(AssetProvider provider)
 {
     provider.AssetsChanged      += new EventHandler(this.OnProviderAssetsChanged);
     provider.NeedsUpdateChanged += new EventHandler(this.Provider_NeedsUpdateChanged);
     this.assetProviders.Add(provider);
     this.NeedsUpdate = true;
 }
Exemple #2
0
        public IEnumerable <T> FindAssetProviders <T>() where T : class
        {
            if (!this.initialized)
            {
                this.Initialize();
            }
            Queue <AssetProvider> queue = new Queue <AssetProvider>((IEnumerable <AssetProvider>) this.AssetProviders.Values);

            while (queue.Count > 0)
            {
                AssetProvider   provider   = queue.Dequeue();
                AssetAggregator aggregator = provider as AssetAggregator;
                if (aggregator != null)
                {
                    EnumerableExtensions.ForEach <AssetProvider>((IEnumerable <AssetProvider>)aggregator.AssetProviders, (Action <AssetProvider>)(item => queue.Enqueue(item)));
                }
                T result = provider as T;
                if ((object)result != null)
                {
                    if (provider.NeedsUpdate)
                    {
                        provider.Update();
                    }
                    yield return(result);
                }
            }
        }
Exemple #3
0
 public void RemoveProvider(AssetProvider provider)
 {
     provider.AssetsChanged      -= new EventHandler(this.OnProviderAssetsChanged);
     provider.NeedsUpdateChanged -= new EventHandler(this.Provider_NeedsUpdateChanged);
     provider.Dispose();
     this.assetProviders.Remove(provider);
     this.NeedsUpdate = true;
 }
Exemple #4
0
 private void AddAssetProvider(AssetLibrary.AssetProviderKey key, AssetProvider provider)
 {
     this.AssetProviders[key]     = provider;
     provider.AssetsChanged      += new EventHandler(this.ProviderAssetsChanged);
     provider.NeedsUpdateChanged += new EventHandler(this.ProviderNeedsUpdateChanged);
 }