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 );
            }
        }
Esempio n. 2
0
        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());
        }