using System.Collections; using System.Collections.Generic; using UnityEngine; namespace KairoEngine.Core { [System.Serializable] public class ObjectSerializer { public void Clear() { objectKeyList.Clear(); objectList.Clear(); gameObjectKeyList.Clear(); gameObjectList.Clear(); scriptableObjectKeyList.Clear(); scriptableObjecttList.Clear(); unityObjectKeyList.Clear(); unityObjectList.Clear(); } #region Objects [SerializeField] private List objectKeyList = new List(); [SerializeField] private List objectList = new List(); private int GetObjectIndex(string key) { for (int i = 0; i < objectKeyList.Count; i++) { if(objectKeyList[i] == key) return i; } return -1; } public void AddObject(string key, object obj) { int index = GetObjectIndex(key); if(index == -1) { objectKeyList.Add(key); objectList.Add(obj); } else objectList[index] = obj; } public object GetObject(string key) { int index = GetObjectIndex(key); if(index == -1) return null; else if(index >= objectList.Count) return null; else return objectList[index]; } #endregion #region gameObjects [SerializeField] private List gameObjectKeyList = new List(); [SerializeField] private List gameObjectList = new List(); private int GetGameObjectIndex(string key) { for (int i = 0; i < gameObjectKeyList.Count; i++) { if(gameObjectKeyList[i] == key) return i; } return -1; } public void AddGameObject(string key, GameObject obj) { int index = GetGameObjectIndex(key); if(index == -1) { gameObjectKeyList.Add(key); gameObjectList.Add(obj); } else gameObjectList[index] = obj; } public GameObject GetGameObject(string key) { int index = GetGameObjectIndex(key); if(index == -1) return null; else if(index >= gameObjectList.Count) return null; else return gameObjectList[index]; } public int GameObjectCount() => gameObjectList.Count; #endregion #region scriptablebjects [SerializeField] private List scriptableObjectKeyList = new List(); [SerializeField] private List scriptableObjecttList = new List(); private int GetScriptableObjectIndex(string key) { for (int i = 0; i < scriptableObjectKeyList.Count; i++) { if(scriptableObjectKeyList[i] == key) return i; } return -1; } public void AddScriptableObject(string key, ScriptableObject obj) { int index = GetScriptableObjectIndex(key); if(index == -1) { scriptableObjectKeyList.Add(key); scriptableObjecttList.Add(obj); } else scriptableObjecttList[index] = obj; } public ScriptableObject GetScriptableObject(string key) { int index = GetScriptableObjectIndex(key); if(index == -1) return null; else if(index >= scriptableObjecttList.Count) return null; else return scriptableObjecttList[index]; } public int ScriptableObjectCount() => scriptableObjecttList.Count; #endregion #region UnityObjects [SerializeField] private List unityObjectKeyList = new List(); [SerializeField] private List unityObjectList = new List(); private int GetUnityObjectIndex(string key) { for (int i = 0; i < unityObjectKeyList.Count; i++) { if(unityObjectKeyList[i] == key) return i; } return -1; } public void AddUnityObject(string key, UnityEngine.Object obj) { int index = GetUnityObjectIndex(key); if(index == -1) { unityObjectKeyList.Add(key); unityObjectList.Add(obj); } else unityObjectList[index] = obj; } public object GetUnityObject(string key) { int index = GetUnityObjectIndex(key); if(index == -1) return null; else if(index >= unityObjectList.Count) return null; else return unityObjectList[index]; } #endregion } }