public void LoadProjectileAssetsAndCreatePools(List <IAssetVO> assets) { if (assets == null || assets.Count == 0) { return; } HashSet <string> hashSet = null; int i = 0; int count = assets.Count; while (i < count) { IAssetVO assetVO = assets[i]; if (this.loadedAssets.Add(assetVO)) { List <string> assetNames = ProjectileUtils.GetAssetNames(assetVO); int j = 0; int count2 = assetNames.Count; while (j < count2) { string text = assetNames[j]; if (!this.loadedAssetNames.ContainsKey(text)) { if (hashSet == null) { hashSet = new HashSet <string>(); hashSet.Add(text); } else if (!hashSet.Contains(text)) { hashSet.Add(text); } } j++; } } i++; } if (hashSet != null) { List <string> list = new List <string>(hashSet); List <object> list2 = new List <object>(); List <AssetHandle> list3 = new List <AssetHandle>(); int k = 0; int count3 = list.Count; while (k < count3) { list2.Add(list[k]); list3.Add(AssetHandle.Invalid); k++; } Service.Get <AssetManager>().MultiLoad(list3, list, new AssetSuccessDelegate(this.OnProjectileLoaded), null, list2, null, null); int l = 0; int count4 = list.Count; while (l < count4) { this.loadedAssetNames.Add(list[l], list3[l]); l++; } } }