public AssetBundleLoadStatus LoadMasterManifest()
        {
            string bundleName = BundlesHelper.GetPlatformName();

            loadHandlers.Add(bundleName, OnMasterManifestLoaded);
            BundleLoadOperation loadOp = AddLoadOp(bundleName);

            return(new AssetBundleLoadStatus(loadOp));
        }
        public void Update()
        {
            if (freeStreams == 0)
            {
                return;
            }

            for (int i = 0; i < loadOps.numSpawned; ++i)
            {
                BundleLoadOperation op = loadOps.GetInstance(i);

                // This prevents the manager from loading bundles from a single loadop in parallell
                // Should check number of bundles left to load.
                // A LoadOp is not necessarily done just because there are no mor bundles to load.
                //if (op.bundlesLeftToLoad == 0) {
                //    continue;
                //}
                if (!op.canLoadBundle)
                {
                    continue;
                }

                if (freeStreams == 0)
                {
                    return;
                }

//                Debug.Log("LoadOp "+i+" has "+op.bundlesLeftToLoad+" bundles left to load");
//                Debug.Log("LoadOp "+i+" is ready");

                ITransporter transporter = BundlesHelper.GetTransporter(config);
//                Debug.Log("Got transporter "+transporter.GetType());
//                Debug.Log("Start transporter on stream "+streams.Count);
                string path = BundlesHelper.GetPath(config, BundlesHelper.GetPlatformName());
                streams.Add(loader.StartCoroutine(transporter.Load(op, streams.Count, path)));
//                Debug.Log("Streams: "+streams.Count);
                --freeStreams;
//                Debug.Log("Started loading stream. Streams: "+streams.Count+" free streams: "+freeStreams);
            }
        }