///<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); } }
public ECSComponent[] GetComponents(ECSEntity entity) { return(SafeGetComponentBag(entity.EntityID).GetAll()); }
public virtual void OnEntityDestroyedPost(ECSEntity entity) { }
public virtual void OnEntityCreated(ECSEntity entity) { }