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(); } } }
public void Execute() { if (_observer.collectedEntities.Count != 0) { _buffer.AddRange(_observer.collectedEntities); _observer.ClearCollectedEntities(); _subsystem.Execute(_buffer); _buffer.Clear(); } }
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(); } } }
/// Clears all accumulated changes. public void Clear() { _observer.ClearCollectedEntities(); }