using System; using UnityEngine; namespace MU3 { // Token: 0x020004C1 RID: 1217 public class ObjectCache { // Token: 0x06001DF9 RID: 7673 RVA: 0x000BE4C0 File Offset: 0x000BE4C0 public ObjectCache(Transform parent, GameObject prefab, int capacity = 8) { this.size_ = 0; this.objects_ = new GameObject[capacity]; this.parent_ = parent; this.prefab_ = prefab; } // Token: 0x1700034D RID: 845 // (get) Token: 0x06001DFA RID: 7674 RVA: 0x000BE4EC File Offset: 0x000BE4EC // (set) Token: 0x06001DFB RID: 7675 RVA: 0x000BE4F8 File Offset: 0x000BE4F8 public int Capacity { get { return this.objects_.Length; } set { if (value <= this.objects_.Length) { return; } Array.Resize(ref this.objects_, value); } } // Token: 0x1700034E RID: 846 // (get) Token: 0x06001DFC RID: 7676 RVA: 0x000BE518 File Offset: 0x000BE518 public int Size { get { return this.size_; } } // Token: 0x06001DFD RID: 7677 RVA: 0x000BE520 File Offset: 0x000BE520 public GameObject pop() { if (0 < this.size_) { this.size_--; GameObject gameObject = this.objects_[this.size_]; this.objects_[this.size_] = null; gameObject.SetActive(true); return gameObject; } return UnityEngine.Object.Instantiate(this.prefab_); } // Token: 0x06001DFE RID: 7678 RVA: 0x000BE578 File Offset: 0x000BE578 public bool tryPop(out GameObject obj, Vector3 position, Quaternion rotation, bool create = true) { if (0 < this.size_) { this.size_--; obj = this.objects_[this.size_]; this.objects_[this.size_] = null; obj.transform.position = position; obj.transform.localRotation = rotation; obj.SetActive(true); return true; } if (create) { obj = UnityEngine.Object.Instantiate(this.prefab_, position, rotation); } else { obj = null; } return false; } // Token: 0x06001DFF RID: 7679 RVA: 0x000BE600 File Offset: 0x000BE600 public void push(GameObject obj) { if (this.objects_.Length <= this.size_) { Array.Resize(ref this.objects_, this.objects_.Length << 1); } obj.transform.SetParent(this.parent_); obj.SetActive(false); this.objects_[this.size_] = obj; this.size_++; } // Token: 0x06001E00 RID: 7680 RVA: 0x000BE66C File Offset: 0x000BE66C public void fillCapacity() { int num = this.Capacity - this.size_; for (int i = 0; i < num; i++) { this.push(UnityEngine.Object.Instantiate(this.prefab_)); } } // Token: 0x04004868 RID: 18536 protected int size_; // Token: 0x04004869 RID: 18537 protected Transform parent_; // Token: 0x0400486A RID: 18538 protected GameObject prefab_; // Token: 0x0400486B RID: 18539 protected GameObject[] objects_; } }