Example #1
0
        public ComponentID <TEntity, TComponent> RegisterComponentType <TComponent>() where TComponent : class
        {
            _threadAffinity.Validate();

            Assert.Debug(_componentCount < _maxComponentsPerEntity, "max component count exceeded");
            int component = _componentCount++;
            var id        = new ComponentID <TEntity, TComponent>(component);

            return(id);
        }
Example #2
0
        public bool HasCommponent <TComponent>(Entity <TEntity> entity, ComponentID <TEntity, TComponent> id) where TComponent : class
        {
            _threadAffinity.Validate();

            Assert.Debug((ushort)id.ComponentIndex < _maxComponentsPerEntity, "Component index out of range");

            int entityIndex    = entity.Index;
            int componentIndex = id.ComponentIndex;

            return(componentFlags[entityIndex][componentIndex]);
        }
Example #3
0
        public void AddComponent <TComponent>(Entity <TEntity> entity, ComponentID <TEntity, TComponent> id, TComponent component) where TComponent : class
        {
            _threadAffinity.Validate();

            Assert.Debug(IsValid(entity), $"Invalid entity: Index: {entity.Index} CreationID: {entity.CreationIDCheck}");
            Assert.Debug((ushort)id.ComponentIndex < _maxComponentsPerEntity, "Component index out of range");
            Assert.Debug(!HasCommponent(entity, id), $"Entity already has component {Utility.Reflection.GetType<TComponent>.kFullName}");

            int entityIndex    = entity.Index;
            int componentIndex = id.ComponentIndex;
            int offset         = entityIndex * _maxComponentsPerEntity + componentIndex;

            componentFlags[entityIndex][componentIndex] = true;
        }
Example #4
0
        public void RemoveComponent <TComponent>(Entity <TEntity> entity, ComponentID <TEntity, TComponent> id) where TComponent : class
        {
            _threadAffinity.Validate();
            Assert.Debug(IsValid(entity), $"Invalid entity: Index: {entity.Index} CreationID: {entity.CreationIDCheck}");

            Assert.Debug((ushort)id.ComponentIndex < _maxComponentsPerEntity, "Component index out of range");

            int entityIndex    = entity.Index;
            int componentIndex = id.ComponentIndex;
            int offset         = entityIndex * _maxComponentsPerEntity + componentIndex;

            object      component           = _components[offset];
            IReleasable releasableComponent = component as IReleasable;

            if (releasableComponent != null)
            {
                releasableComponent.Release();
            }

            _components[offset] = null;

            componentFlags[entityIndex][componentIndex] = false;
        }
Example #5
0
 public EntityQuery <TEntity> HasNot <TComponent>(ComponentID <TEntity, TComponent> id) where TComponent : class
 {
     _hasNone[id.ComponentIndex] = true;
     return(this);
 }
Example #6
0
        public TComponent GetComponentNoAffinityCheck <TComponent>(Entity <TEntity> entity, ComponentID <TEntity, TComponent> id) where TComponent : class
        {
            Assert.Debug((ushort)id.ComponentIndex < _maxComponentsPerEntity, "Component index out of range");
            Assert.Debug(IsValidNoAffinitCheck(entity), $"Invalid entity: Index: {entity.Index} CreationID: {entity.CreationIDCheck}");

            int offset = entity.Index * _maxComponentsPerEntity + id.ComponentIndex;

            return((TComponent)_components[offset]);
        }
Example #7
0
        public TComponent GetComponent <TComponent>(Entity <TEntity> entity, ComponentID <TEntity, TComponent> id) where TComponent : class
        {
            _threadAffinity.Validate();

            return(GetComponentNoAffinityCheck(entity, id));
        }
Example #8
0
 public bool Equals(ComponentID <TEntity, TComponent> other)
 {
     return(ComponentIndex == other.ComponentIndex);
 }
Example #9
0
 public bool Equals <TOtherComponent>(ComponentID <TEntity, TOtherComponent> other) where TOtherComponent : class
 {
     return(ComponentIndex == other.ComponentIndex);
 }
Example #10
0
 protected static void ShutdownComponentID()
 {
     Assert.Debug(_componentID != ComponentID <TEntity, TComponent> .None, $"Non-initialized component type {Utility.Reflection.GetType<TComponent>.kFullName} is being shutdown!");
     _componentID = ComponentID <TEntity, TComponent> .None;
 }
Example #11
0
 protected static void InitializeComponentID(EntityContext <TEntity> entityContext)
 {
     Assert.Debug(_componentID == ComponentID <TEntity, TComponent> .None, $"Component type {Utility.Reflection.GetType<TComponent>.kFullName}");
     _componentID = entityContext.RegisterComponentType <TComponent>();
 }
Example #12
0
 public static void HasComponent <TEntity, TComponent>(this Entity <TEntity> entity, ComponentID <TEntity, TComponent> componentID)
     where TEntity : EntityType
     where TComponent : class
 {
     EntityContext <TEntity> .Instance.HasCommponent(entity, componentID);
 }
Example #13
0
 public static void AddComponent <TEntity, TComponent>(this Entity <TEntity> entity, ComponentID <TEntity, TComponent> componentID, TComponent component)
     where TEntity : EntityType
     where TComponent : class
 {
     EntityContext <TEntity> .Instance.AddComponent(entity, componentID, component);
 }
Example #14
0
 public static TComponent GetComponent <TEntity, TComponent>(this Entity <TEntity> entity, ComponentID <TEntity, TComponent> componentID)
     where TEntity : EntityType
     where TComponent : class
 {
     return(EntityContext <TEntity> .Instance.GetComponent(entity, componentID));
 }