///<summary> Creates and adds <see cref="ECSEntity"/> to ECS </summary>
        internal ECSEntity CreateEntity(string archetype)
        {
            ECSEntity e = CreateEntity();

            m_entityFactory.SetupEntity(e, archetype);
            return(e);
        }
        ///<summary> Creates and adds <see cref="ECSEntity"/> to ECS </summary>
        internal ECSEntity CreateEntity()
        {
            ECSEntity e = m_entityFactory.CreateEntity();

            AddEntity(e);
            return(e);
        }
        ///<summary> Adds <see cref="ECSEntity"/> to ECS </summary>
        public ECSEntity AddEntity(ECSEntity entity)
        {
            int entityID = m_entityBag.GetSize();

            m_entityBag.Set(entityID, entity);
            entity.EntityID = entityID;

            if (OnEntityCreated != null)
            {
                OnEntityCreated(entity);
            }

            return(entity);
        }
        private void OnEntityDestroyedPre(ECSEntity entity)
        {
            int       entityID = entity.EntityID;
            Bag <int> query    = null;

            foreach (Type[] type in m_queries.Keys)
            {
                query = GetQuery(type);

                if (query.Has(entityID) > -1)
                {
                    query.RemoveIndex(query.Has(entityID));
                    query.ResizeToFit();
                }
            }
        }
        public void DestroyEntity(int entityID)
        {
            ECSEntity entity = m_entityBag.Get(entityID);

            if (entity == null)
            {
                ECSDebug.LogWarning("Tried to destroy entity " + entityID + " but is already destroyed");
                return;
            }

            if (OnEntityDestroyedPre != null)
            {
                OnEntityDestroyedPre(entity);
            }

            m_entityFactory.DestroyEntity(entity);
            m_entityBag.Set(entityID, null);

            if (OnEntityDestroyedPost != null)
            {
                OnEntityDestroyedPost(entity);
            }
        }
Exemple #6
0
 public ECSComponent[] GetComponents(ECSEntity entity)
 {
     return(SafeGetComponentBag(entity.EntityID).GetAll());
 }
Exemple #7
0
 public virtual void OnEntityDestroyedPost(ECSEntity entity)
 {
 }
Exemple #8
0
 public virtual void OnEntityCreated(ECSEntity entity)
 {
 }