using System; using System.Collections.Generic; using System.Linq; namespace Encompass { public class Entity { public readonly uint id; private ComponentManager componentManager; internal Entity(uint id, ComponentManager componentManager) { this.id = id; this.componentManager = componentManager; } public TComponent AddComponent() where TComponent : Component, new() { return componentManager.CreateComponent(id); } public IEnumerable GetComponents() where TComponent : Component { return componentManager.GetComponentsByEntityAndType(id); } public TComponent GetComponent() where TComponent : Component { return GetComponents().First(); } public bool HasComponent() where TComponent : Component { return componentManager.EntityHasComponentOfType(id); } internal void RemoveAllComponents() { componentManager.RemoveAllComponentsFromEntity(id); } } }