/// <summary> /// Creates new instance of ecs world container. /// </summary> /// <param name="useAsActive">Should this instance be set as Active or not.</param> public EntitySupervisor(bool useAsActive = true) { if (useAsActive) { Active = this; } }
/// <summary> /// Destroys all registered external data, full cleanup for internal data. /// </summary> public void Dispose() { #if DEBUG if (_isDisposed) { throw new Exception("World already disposed"); } _isDisposed = true; for (var i = _debugListeners.Count - 1; i >= 0; i--) { _debugListeners[i].OnWorldDestroyed(this); } #endif #if ECP_ENABLE_WORLD_EVENTS for (var i = _eventListeners.Count - 1; i >= 0; i--) { _eventListeners[i].OnWorldDestroyed(this); } #endif if (this == Active) { Active = null; } for (var i = 0; i < _entitiesCount; i++) { // already reserved entities cant contains components. if (_entities[i].ComponentsCount > 0) { var entity = _entities[i]; for (int ii = 0, iiMax = entity.ComponentsCount; ii < iiMax; ii += 2) { Internals.EcpHelpers.ComponentPools[entity.Components[ii]].RecycleById(entity.Components[ii + 1]); } } } // any next usage of this EcsWorld instance will throw exception. _entities = null; _entitiesCount = 0; _filters = null; _filtersCount = 0; _owners = null; _ownersCount = 0; _oneFrameFilters.Clear(); _reservedEntities = null; _reservedEntitiesCount = 0; _delayedUpdates = null; _delayedUpdatesCount = 0; }
/// <summary> /// Creates new instance of EcsSystems group. /// </summary> /// <param name="world">EcsWorld instance.</param> /// <param name="name">Custom name for this group.</param> public Pipeline(Domain domain, EntityManager entityManager, string name = null) { #if DEBUG if (domain == null) { throw new ArgumentNullException(); } if (entityManager == null) { throw new ArgumentNullException(); } #endif _domain = domain; _supervisor = _domain.GetSupervisor(); _entityManager = entityManager; Name = name; }
public Domain() { _supervisor = new EntitySupervisor(); _containerPool = new ContainerPool(); }
internal EntityManager(EntitySupervisor supervisor, int pipelineIdex) { _supervisor = supervisor; _pipelineIndex = pipelineIdex; }