using System; using Syntriax.Engine.Core.Abstract; namespace Syntriax.Engine.Core; public class StateEnable : IStateEnable { public Action? OnUnassigned { get; set; } = null; public Action? OnEntityAssigned { get; set; } = null; public Action? OnEnabledChanged { get; set; } = null; private bool _enabled = true; private IEntity _entity = null!; public IEntity Entity => _entity; public bool Enabled { get => _enabled; set { if (value == _enabled) return; _enabled = value; OnEnabledChanged?.Invoke(this); } } public bool Assign(IEntity entity) { if (_entity is not null && _entity.Initialized) return false; _entity = entity; OnEntityAssigned?.Invoke(this); return true; } public bool Unassign() { if (_entity is null) return false; _entity = null!; OnUnassigned?.Invoke(this); return true; } }