Example #1
0
        /// <summary>
        /// Creates the loader.
        /// </summary>
        /// <returns>
        /// The loader.
        /// </returns>
        /// <param name='path'>
        /// Path.
        /// </param>
        /// <param name='version'>
        /// Version.
        /// </param>
        /// <param name='useCaching'>
        /// Use caching.
        /// </param>
        public static WwwLoader CreateLoader(string path, int version, bool useCaching)
        {
            // Unify path.
            StringBuilder bd = new StringBuilder();

            bd.AppendFormat("{0}", PathUtil.CombinePath(BasePath, path));
            //bd.AppendFormat("{0}_{2}.{1}", PathUtil.CombinePath(BasePath, path), Defines.ASSET_BUNDLE_EXTENSION,version);
            path = PathUtil.UnifyPathNoLower(bd.ToString());

            // Check if the asset in the loader table
            if (_loaders.ContainsKey(path))
            {
                WwwLoader existingLoader = _loaders[path].Value;
                existingLoader.AddRef();

                return(existingLoader);
            }

            // Check if system caching is enabled
            if (EnableCache == false || Caching.enabled == false)
            {
                useCaching = false;
            }

            // Create loader
            WwwLoader loader = new WwwLoader(path, version, useCaching);

            loader.AddRef();

            // Add to existing loader
            _loaders.Add(path, _pendingLoaders.AddLast(loader));

            return(loader);
        }
Example #2
0
        /// <summary>
        /// Destroies the loader.
        /// </summary>
        /// <param name='loader'>
        /// Loader.
        /// </param>
        public static void DestroyLoader(WwwLoader loader)
        {
            if (loader == null)
            {
                return;
            }

            loader.ReleaseRef();

            if (loader.RefCount == 0)
            {
                Debug.Assert(_loaders.ContainsKey(loader.AssetPath), "Must exist");

                LinkedListNode <WwwLoader> loaderNode = _loaders[loader.AssetPath];
                _loaders.Remove(loader.AssetPath);
                loaderNode.List.Remove(loaderNode);
                loaderNode.Value.Destroy();
            }

            loader = null;
        }