using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Linq; using System.IO; using System; #if UNITY_EDITOR using UnityEditor; #endif public class Database : SingletonBehaviour { #if UNITY_EDITOR [Header("Editor section")] [SerializeField] private List _folders; public List Folders => _folders; #endif public const string TYPE = nameof(TYPE); [Serializable] public class DataList : IEnumerable where T : UnityEngine.Object { [SerializeField] private List elements; public DataList() => elements = new List(); public T this[string key] => elements.Find(x => x.name == key); public void Add(T element) => elements.Add(element); public IEnumerator GetEnumerator() { return elements.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return elements.GetEnumerator(); } public static implicit operator DataList(List list) => new DataList() { elements = list }; } [SerializeField] private List _prefabs; [SerializeField] private List _scriptableObjects; public DataList Prefabs => _prefabs; public DataList ScriptableObjects => _scriptableObjects; public Database() { _prefabs = new List(); _scriptableObjects = new List(); } #if UNITY_EDITOR #endif }