using System.Collections.Generic; using System.Linq; using System.Reflection; using UnityEngine; namespace Logging { public abstract class SensorDataLogger : MonoBehaviour, ILogable, ISerializableLog { public abstract string Key { get; } public IEnumerable HeaderNames => typeof(T).GetFields(BindingFlags.Instance | BindingFlags.NonPublic).Select((f) => f.Name); public IEnumerable> BufferLines => Buffer; protected List Buffer; public virtual void Awake() { gameObject.SetActive(GameManager.LOG_TO_FILE); } public virtual async void Start() { Buffer = new List(); await FileLogger.Instance.RegisterLogable(this); } public void ClearBuffer() { Buffer.Clear(); } public abstract void Log(T value); public abstract IEnumerable ReadLog(IEnumerable> lines); } }