using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Linq; using System.IO; using System; #if UNITY_EDITOR using UnityEditor; #endif /// /// cette classe sert à réunir les prefabs et les scriptable objects importants.
/// Elle permet d'éviter de devoir mettre tous nos prefabs et scriptable objects dans le dossier Resources
/// et permet d'accéder aux éléments qu'on cherche par leur nom directement ///
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 void Clear() => elements.Clear(); 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 }