public int Add <T>(int entityId, T component) where T : class, IComponent
        {
            var underlyingType  = component.GetType();
            var componentTypeId = ComponentLookup.GetComponentType(underlyingType);

            Database.Add(componentTypeId, entityId, component);
            return(componentTypeId);
        }
        public void Remove(int entityId, Type componentType)
        {
            var componentTypeId = ComponentLookup.GetComponentType(componentType);

            Remove(entityId, componentTypeId);
        }
        public bool Has(int entityId, Type componentType)
        {
            var componentTypeId = ComponentLookup.GetComponentType(componentType);

            return(Has(entityId, componentTypeId));
        }
        public IComponent Get(int entityId, Type componentType)
        {
            var componentTypeId = ComponentLookup.GetComponentType(componentType);

            return(Get(entityId, componentTypeId));
        }