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; }
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); } } }
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; }
private void AddAssetProvider(AssetLibrary.AssetProviderKey key, AssetProvider provider) { this.AssetProviders[key] = provider; provider.AssetsChanged += new EventHandler(this.ProviderAssetsChanged); provider.NeedsUpdateChanged += new EventHandler(this.ProviderNeedsUpdateChanged); }