public void TestAsyncLoad( ) { AssetManager assets = new AssetManager( ); assets.AddLoader( new XmlAssetLoader( 10 ) ); using ( AsyncAssetLoader loader = new AsyncAssetLoader( ) ) { int success = 0; int numLoads = 8; AsyncLoadResult[] results = new AsyncLoadResult[ numLoads ]; for ( int loadCount = 0; loadCount < numLoads; ++loadCount ) { AsyncLoadResult result = loader.QueueLoad( assets, new StreamSource( XmlContent, "test.xml" ), null, LoadPriority.High ); result.AddLoadCompleteCallback( delegate( object asset ) { CheckDocument( ( XmlNode )asset ); ++success; }, false ); results[ loadCount ] = result; } for ( int loadCount = 0; loadCount < numLoads; ++loadCount ) { results[ loadCount ].WaitUntilComplete( new TimeSpan( 0, 0, 2 ) ); } Assert.AreEqual( success, numLoads ); } }
internal void PrepareAssets() { //Open the file. if (File != null) { fileHandle = File.Open(); } //Create the asset repository var sources = new List <IContentSource>(); if (File != null) { sources.Add(new TModContentSource(File)); } var assetReaderCollection = new AssetReaderCollection(); if (!Main.dedServ) { //TODO: Now, how do we unhardcode this? //Ambiguous assetReaderCollection.RegisterReader(new XnbReader(Main.instance.Services), ".xnb"); //Textures assetReaderCollection.RegisterReader(new PngReader(Main.instance.Services.Get <IGraphicsDeviceService>().GraphicsDevice), ".png"); assetReaderCollection.RegisterReader(new RawImgReader(Main.instance.Services.Get <IGraphicsDeviceService>().GraphicsDevice), ".rawimg"); //Audio assetReaderCollection.RegisterReader(new WavReader(), ".wav"); assetReaderCollection.RegisterReader(new MP3Reader(), ".mp3"); assetReaderCollection.RegisterReader(new OggReader(), ".ogg"); } var delayedLoadTypes = new List <Type> { typeof(Texture2D), typeof(DynamicSpriteFont), typeof(SpriteFont), typeof(Effect) }; SetupAssetRepository(sources, assetReaderCollection, delayedLoadTypes); var asyncAssetLoader = new AsyncAssetLoader(assetReaderCollection, 20); foreach (var type in delayedLoadTypes) { asyncAssetLoader.RequireTypeCreationOnTransfer(type); } var assetLoader = new AssetLoader(assetReaderCollection); Assets = new ModAssetRepository(assetReaderCollection, assetLoader, asyncAssetLoader, sources.ToArray()); }