|
@@ -4,21 +4,91 @@ using UnityEngine;
|
|
|
|
|
|
namespace KairoEngine.Core
|
|
|
{
|
|
|
+ // Todo: Refactor components to use lists instead of a dictionary
|
|
|
+ // Todo: Refactor ScriptableObjects to use lists instead of a dictionary
|
|
|
[System.Serializable]
|
|
|
public class ObjectSerializer
|
|
|
{
|
|
|
- [SerializeField, HideInInspector] public Dictionary<string, object> objects = new Dictionary<string, object>();
|
|
|
- [SerializeField, HideInInspector] public Dictionary<string, GameObject> gameObjecs = new Dictionary<string, GameObject>();
|
|
|
- [SerializeField, HideInInspector] public Dictionary<string, Component> components = new Dictionary<string, Component>();
|
|
|
- [SerializeField, HideInInspector] public Dictionary<string, ScriptableObject> scriptableObjects = new Dictionary<string, ScriptableObject>();
|
|
|
+ //[HideInInspector] public Dictionary<string, Component> components = new Dictionary<string, Component>();
|
|
|
+ //[HideInInspector] public Dictionary<string, ScriptableObject> scriptableObjects = new Dictionary<string, ScriptableObject>();
|
|
|
|
|
|
public void Clear()
|
|
|
{
|
|
|
- objects.Clear();
|
|
|
- gameObjecs.Clear();
|
|
|
- components.Clear();
|
|
|
- scriptableObjects.Clear();
|
|
|
+ objectKeyList.Clear();
|
|
|
+ objectList.Clear();
|
|
|
+ gameObjectKeyList.Clear();
|
|
|
+ gameObjectList.Clear();
|
|
|
+ //components.Clear();
|
|
|
+ //scriptableObjects.Clear();
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
+ #region Objects
|
|
|
+ [SerializeField] private List<string> objectKeyList = new List<string>();
|
|
|
+ [SerializeField] private List<object> objectList = new List<object>();
|
|
|
+
|
|
|
+ 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 return objectList[index];
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region gameObjects
|
|
|
+
|
|
|
+ [SerializeField] private List<string> gameObjectKeyList = new List<string>();
|
|
|
+ [SerializeField] private List<GameObject> gameObjectList = new List<GameObject>();
|
|
|
+
|
|
|
+ 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 return gameObjectList[index];
|
|
|
+ }
|
|
|
+
|
|
|
+ public int GameObjectCount() => gameObjectList.Count;
|
|
|
+
|
|
|
+ #endregion
|
|
|
+ }
|
|
|
}
|