1 using System.Collections.Generic;
14 get {
return _collectedEntities; }
17 readonly HashSet<Entity> _collectedEntities;
18 readonly
Group[] _groups;
19 readonly GroupEventType[] _eventTypes;
20 Group.GroupChanged _addEntityCache;
21 string _toStringCache;
26 : this(new [] { group },
new [] { eventType }) {
33 _collectedEntities =
new HashSet<Entity>(
36 _eventTypes = eventTypes;
38 if(groups.Length != eventTypes.Length) {
40 "Unbalanced count with groups (" + groups.Length +
41 ") and event types (" + eventTypes.Length +
").",
42 "Group and event type count must be equal." 46 _addEntityCache = addEntity;
53 for (
int i = 0; i < _groups.Length; i++) {
54 var group = _groups[i];
55 var eventType = _eventTypes[i];
56 if(eventType == GroupEventType.OnEntityAdded) {
57 group.OnEntityAdded -= _addEntityCache;
59 }
else if(eventType == GroupEventType.OnEntityRemoved) {
62 }
else if(eventType == GroupEventType.OnEntityAddedOrRemoved) {
75 for (
int i = 0; i < _groups.Length; i++) {
76 var group = _groups[i];
77 group.OnEntityAdded -= _addEntityCache;
85 foreach(var entity
in _collectedEntities) {
88 _collectedEntities.Clear();
91 void addEntity(
Group group,
95 var added = _collectedEntities.Add(entity);
101 public override string ToString() {
102 if(_toStringCache == null) {
103 var sb =
new StringBuilder().Append(
"Collector(");
105 const string separator =
", ";
106 var lastSeparator = _groups.Length - 1;
107 for (
int i = 0; i < _groups.Length; i++) {
108 sb.Append(_groups[i]);
109 if(i < lastSeparator) {
110 sb.Append(separator);
115 _toStringCache = sb.ToString();
118 return _toStringCache;
128 base(message, hint) {
EntityCollector(Group group, GroupEventType eventType)
void ClearCollectedEntities()
Clears all collected entities.
EntityCollector(Group[] groups, GroupEventType[] eventTypes)
HashSet< Entity > collectedEntities
GroupChanged OnEntityRemoved
Occurs when an entity gets removed.
GroupChanged OnEntityAdded
Occurs when an entity gets added.
Base exception used by Entitas.
Entity Retain(object owner)