Elin Decompiled Documentation EA 23.321 Nightly Patch 1
Loading...
Searching...
No Matches
DynamicAsset.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using UnityEngine;
4
5[Serializable]
6public class DynamicAsset<T> where T : MonoBehaviour
7{
8 [NonSerialized]
9 public static List<Func<string, T>> assetLoaders = new List<Func<string, T>> { Resources.Load<T> };
10
11 public string groupId = "";
12
13 public List<T> list = new List<T>();
14
15 public Dictionary<string, T> map;
16
17 public bool usePool;
18
19 public bool instantiate = true;
20
21 private bool initialized;
22
23 public DynamicAsset()
24 {
25 }
26
27 public DynamicAsset(string groupId, bool instantiate)
28 {
29 this.groupId = groupId;
30 this.instantiate = instantiate;
31 }
32
33 private void Init()
34 {
35 map = new Dictionary<string, T>();
36 foreach (T item in list)
37 {
38 map.Add(item.name, item);
39 }
40 initialized = true;
41 }
42
43 public T GetNew(string id, Transform parent = null)
44 {
45 T original = GetOriginal(id);
46 if (!instantiate || original == null)
47 {
48 return original;
49 }
50 T val = (usePool ? PoolManager.Spawn<T>(groupId + "/" + id, groupId + "/" + id) : UnityEngine.Object.Instantiate(original).GetComponent<T>());
51 if ((bool)parent)
52 {
53 val.transform.SetParent(parent, worldPositionStays: false);
54 }
55 return val;
56 }
57
58 public T GetOriginal(string id)
59 {
60 if (!initialized)
61 {
62 Init();
63 }
64 if (map.TryGetValue(id, out var value))
65 {
66 return value;
67 }
68 string arg = groupId + "/" + id;
69 for (int i = 0; i < assetLoaders.Count; i++)
70 {
71 try
72 {
73 value = assetLoaders[i](arg);
74 if ((bool)value)
75 {
76 break;
77 }
78 }
79 catch
80 {
81 }
82 }
83 map[id] = value;
84 list.Add(value);
85 return value;
86 }
87}
bool initialized
Definition: DynamicAsset.cs:21
List< T > list
Definition: DynamicAsset.cs:13
string groupId
Definition: DynamicAsset.cs:11
static List< Func< string, T > > assetLoaders
Definition: DynamicAsset.cs:9
DynamicAsset(string groupId, bool instantiate)
Definition: DynamicAsset.cs:27
bool instantiate
Definition: DynamicAsset.cs:19
T GetNew(string id, Transform parent=null)
Definition: DynamicAsset.cs:43
T GetOriginal(string id)
Definition: DynamicAsset.cs:58
Dictionary< string, T > map
Definition: DynamicAsset.cs:15
static Transform Spawn(string id, string path, Transform parent)
Definition: PoolManager.cs:86