Beispiel #1
0
        public override T Load <T>(string assetName)
        {
            object _loadLock
                = MainClass.GetInstanceField(typeof(GSGE.GameAssetManager), this, "_loadLock");
            Dictionary <string, object> _loadedAssets
                = MainClass.GetInstanceField(typeof(GSGE.GameAssetManager), this, "_loadedAssets") as Dictionary <string, object>;

            object asset = null;
            string name  = ContentManager.CleanPath(assetName);
            T      result;

            lock (_loadLock)
            {
                if (_loadedAssets.TryGetValue(name, out asset))
                {
                    result = (T)((object)asset);
                    return(result);
                }
            }
            asset = this.ReadAsset <T>(name, null, null);
            lock (_loadLock)
            {
                _loadedAssets[name] = asset;
            }
            result = (T)((object)asset);
            return(result);
        }