コード例 #1
0
 /// <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;
     }
 }
コード例 #2
0
        /// <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;
        }
コード例 #3
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;
        }
コード例 #4
0
ファイル: Domain.cs プロジェクト: jtferson/Jtfer.Ecp
 public Domain()
 {
     _supervisor    = new EntitySupervisor();
     _containerPool = new ContainerPool();
 }
コード例 #5
0
 internal EntityManager(EntitySupervisor supervisor, int pipelineIdex)
 {
     _supervisor    = supervisor;
     _pipelineIndex = pipelineIdex;
 }