summaryrefslogtreecommitdiff
path: root/Client/Assets/Scripts/XUtliPoolLib/XUpdater/XBundle.cs
blob: acb8fa4264abdaf4bb7751c4bc2d0e11cd5a3009 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
using System.Collections;
using UnityEngine;

namespace XUpdater
{
	internal sealed class XBundle : MonoBehaviour
	{
		private AssetBundleRequest _assetloader = null;

		public void GetBundle(WWW www, byte[] data, HandleLoadBundle callback, bool load)
		{
			base.StartCoroutine(this.LoadBundle(www, data, callback, load));
		}

		public void GetAsset(AssetBundle bundle, XResPackage package, HandleLoadAsset callback)
		{
			base.StartCoroutine(this.LoadAsset(bundle, package, callback));
		}

		private IEnumerator LoadBundle(WWW www, byte[] data, HandleLoadBundle callback, bool load)
		{
			AssetBundle bundle = null;
			if (load)
			{
				bool flag = www != null;
				if (flag)
				{
					bundle = www.assetBundle;
				}
				else
				{
					bundle = AssetBundle.LoadFromMemory(data);
				}
				yield return null;
			}
			bool flag2 = callback != null;
			if (flag2)
			{
				callback(bundle);
			}
			bool flag3 = www != null;
			if (flag3)
			{
				www.Dispose();
			}
			www = null;
			yield break;
		}

		private IEnumerator LoadAsset(AssetBundle bundle, XResPackage package, HandleLoadAsset callback)
		{
			this._assetloader = bundle.LoadAssetAsync(base.name, XUpdater.Ass.GetType(package.type));
			yield return this._assetloader;
			bool flag = callback != null;
			if (flag)
			{
				callback(package, this._assetloader.asset);
			}
			this._assetloader = null;
			yield break;
		}
	}
}