using System; using System.Collections.Generic; using UnityEngine; namespace EditorPlus { [Serializable] public class EditorPlusHistorySceneObjects : MonoBehaviour { [SerializeField] public int ClearID = -1; [SerializeField] public List IDs; [SerializeField] public List OBJs; private void Start() { if (IDs == null) { IDs = new List(); } if (OBJs == null) { OBJs = new List(); } if (!Application.isEditor) { UnityEngine.Object.Destroy(this); } } public void Clear() { IDs.Clear(); OBJs.Clear(); } public void CheckConsistency() { if (IDs == null) { IDs = new List(); } if (OBJs == null) { OBJs = new List(); } if (IDs.Count != OBJs.Count) { Debug.LogWarning("Scene object data corrupted - discarding"); Clear(); return; } for (int i = 0; i < OBJs.Count; i++) { if (OBJs[i] == null) { OBJs.RemoveAt(i); IDs.RemoveAt(i); i--; } } } public void Set(int objId, UnityEngine.Object go) { if (IDs == null) { IDs = new List(); } if (OBJs == null) { OBJs = new List(); } if (!OBJs.Contains((GameObject)go) && !IDs.Contains(objId)) { OBJs.Add((GameObject)go); IDs.Add(objId); } } public int GetID(UnityEngine.Object go) { if (IDs == null) { IDs = new List(); } if (OBJs == null) { OBJs = new List(); } for (int i = 0; i < OBJs.Count; i++) { if (OBJs[i] != null && OBJs[i] == go) { return IDs[i]; } } return -1; } public UnityEngine.Object GetOBJ(int id) { if (IDs == null) { IDs = new List(); } if (OBJs == null) { OBJs = new List(); } int num = IDs.IndexOf(id); if (num != -1) { return OBJs[num]; } return null; } } }