using System.Collections.Generic; using UnityEngine; using static Extensions; /// /// can be inherited by MonoBehaviours in order to be added to the level manager /// public abstract class LevelObject : MonoBehaviour, ILevelObject { [LevelSerialize] public Vector3 Position => transform.position; [LevelSerialize] public string Name => name; void Awake() { if (LevelManager.Instance.Has(obj => obj.Equals(this))) return; LevelManager.Instance.Add(this); } public virtual void LevelStart() { } public virtual void LevelDestroy() { } public virtual void LevelUpdate() { } public virtual bool Equals(ILevelObject other) { if (!other.GetType().Equals(this.GetType())) return false; var otherObject = other as LevelObject; return otherObject.Name == Name && otherObject.Position == Position; } public abstract Dictionary ToDictionary(); }