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); }