Elin Decompiled Documentation EA 23.102 Nightly
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 public string groupId = "";
9
10 public List<T> list = new List<T>();
11
12 public Dictionary<string, T> map;
13
14 public bool usePool;
15
16 public bool instantiate = true;
17
18 private bool initialized;
19
20 public DynamicAsset()
21 {
22 }
23
24 public DynamicAsset(string groupId, bool instantiate)
25 {
26 this.groupId = groupId;
27 this.instantiate = instantiate;
28 }
29
30 private void Init()
31 {
32 map = new Dictionary<string, T>();
33 foreach (T item in list)
34 {
35 map.Add(item.name, item);
36 }
37 initialized = true;
38 }
39
40 public T GetNew(string id, Transform parent = null)
41 {
42 T original = GetOriginal(id);
43 if (!instantiate || original == null)
44 {
45 return original;
46 }
47 T val = (usePool ? PoolManager.Spawn<T>(groupId + "/" + id, groupId + "/" + id) : UnityEngine.Object.Instantiate(original).GetComponent<T>());
48 if ((bool)parent)
49 {
50 val.transform.SetParent(parent, worldPositionStays: false);
51 }
52 return val;
53 }
54
55 public T GetOriginal(string id)
56 {
57 if (!initialized)
58 {
59 Init();
60 }
61 if (map.TryGetValue(id, out var value))
62 {
63 return value;
64 }
65 value = Resources.Load<T>(groupId + "/" + id);
66 map[id] = value;
67 list.Add(value);
68 return value;
69 }
70}
bool initialized
Definition: DynamicAsset.cs:18
List< T > list
Definition: DynamicAsset.cs:10
string groupId
Definition: DynamicAsset.cs:8
DynamicAsset(string groupId, bool instantiate)
Definition: DynamicAsset.cs:24
bool instantiate
Definition: DynamicAsset.cs:16
T GetNew(string id, Transform parent=null)
Definition: DynamicAsset.cs:40
T GetOriginal(string id)
Definition: DynamicAsset.cs:55
Dictionary< string, T > map
Definition: DynamicAsset.cs:12
static Transform Spawn(string id, string path, Transform parent)
Definition: PoolManager.cs:86