コード例 #1
0
        public void Execute()
        {
            if (_observer.collectedEntities.Count != 0)
            {
                if (_ensureComponents != null)
                {
                    if (_excludeComponents != null)
                    {
                        foreach (var e in _observer.collectedEntities)
                        {
                            if (_ensureComponents.Matches(e) && !_excludeComponents.Matches(e))
                            {
                                _buffer.Add(e.Retain());
                            }
                        }
                    }
                    else
                    {
                        foreach (var e in _observer.collectedEntities)
                        {
                            if (_ensureComponents.Matches(e))
                            {
                                _buffer.Add(e.Retain());
                            }
                        }
                    }
                }
                else if (_excludeComponents != null)
                {
                    foreach (var e in _observer.collectedEntities)
                    {
                        if (!_excludeComponents.Matches(e))
                        {
                            _buffer.Add(e.Retain());
                        }
                    }
                }
                else
                {
                    foreach (var e in _observer.collectedEntities)
                    {
                        _buffer.Add(e.Retain());
                    }
                }

                _observer.ClearCollectedEntities();
                if (_buffer.Count != 0)
                {
                    _subsystem.Execute(_buffer);
                    for (int i = 0, bufferCount = _buffer.Count; i < bufferCount; i++)
                    {
                        _buffer[i].Release();
                    }
                    _buffer.Clear();
                }
            }
        }
コード例 #2
0
 public void Execute()
 {
     if (_observer.collectedEntities.Count != 0)
     {
         _buffer.AddRange(_observer.collectedEntities);
         _observer.ClearCollectedEntities();
         _subsystem.Execute(_buffer);
         _buffer.Clear();
     }
 }
コード例 #3
0
        public void Execute()
        {
            if (_observer.collectedEntities.Count != 0)
            {
                if (_ensureComponents != null)
                {
                    if (_excludeComponents != null)
                    {
                        foreach (var e in _observer.collectedEntities)
                        {
                            if (_ensureComponents.Matches(e) && !_excludeComponents.Matches(e))
                            {
                                _buffer.Add(e);
                            }
                        }
                    }
                    else
                    {
                        foreach (var e in _observer.collectedEntities)
                        {
                            if (_ensureComponents.Matches(e))
                            {
                                _buffer.Add(e);
                            }
                        }
                    }
                }
                else if (_excludeComponents != null)
                {
                    foreach (var e in _observer.collectedEntities)
                    {
                        if (!_excludeComponents.Matches(e))
                        {
                            _buffer.Add(e);
                        }
                    }
                }
                else
                {
                    _buffer.AddRange(_observer.collectedEntities);
                }

                _observer.ClearCollectedEntities();
                if (_buffer.Count != 0)
                {
                    _subsystem.Execute(_buffer);
                    _buffer.Clear();
                }
            }
        }
コード例 #4
0
        /// Will call subsystem.Execute() with changed entities if there are any. Otherwise it will not call subsystem.Execute().
        public void Execute()
        {
            if (_observer.collectedEntities.Count != 0)
            {
                if (_ensureComponents != null)
                {
                    if (_excludeComponents != null)
                    {
                        foreach (var e in _observer.collectedEntities)
                        {
                            if (_ensureComponents.Matches(e) && !_excludeComponents.Matches(e))
                            {
                                _buffer.Add(e.Retain(this));
                            }
                        }
                    }
                    else
                    {
                        foreach (var e in _observer.collectedEntities)
                        {
                            if (_ensureComponents.Matches(e))
                            {
                                _buffer.Add(e.Retain(this));
                            }
                        }
                    }
                }
                else if (_excludeComponents != null)
                {
                    foreach (var e in _observer.collectedEntities)
                    {
                        if (!_excludeComponents.Matches(e))
                        {
                            _buffer.Add(e.Retain(this));
                        }
                    }
                }
                else
                {
                    foreach (var e in _observer.collectedEntities)
                    {
                        _buffer.Add(e.Retain(this));
                    }
                }

                _observer.ClearCollectedEntities();
                if (_buffer.Count != 0)
                {
                    _subsystem.Execute(_buffer);
                    for (int i = 0; i < _buffer.Count; i++)
                    {
                        _buffer[i].Release(this);
                    }
                    _buffer.Clear();
                    if (_clearAfterExecute)
                    {
                        _observer.ClearCollectedEntities();
                    }
                }
            }

            if (_isExecutable)
            {
                ((IExecuteSystem)Subsystem).Execute();
            }
        }