-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
_context_8cs_source.html
147 lines (145 loc) · 79.6 KB
/
_context_8cs_source.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Entitas: Entitas/Entitas/Context/Context.cs Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="docs-logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Entitas
 <span id="projectnumber">1.10.0</span>
</div>
<div id="projectbrief">Entitas is a super fast Entity Component System (ECS) Framework specifically made for C# and Unity</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('_context_8cs_source.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Context.cs</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="keyword">using</span> <a class="code" href="namespace_system.html">System</a>;</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="keyword">using</span> <a class="code" href="namespace_system.html">System</a>.Collections.Generic;</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="keyword">using</span> <a class="code" href="namespace_system.html">System</a>.Linq;</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="keyword">using</span> DesperateDevs.Utils;</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">namespace </span><a class="code" href="namespace_entitas.html">Entitas</a> {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"></span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> /// A context manages the lifecycle of entities and groups.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> /// You can create and destroy entities and get groups of entities.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> /// The prefered way to create a context is to use the generated methods</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> /// from the code generator, e.g. var context = new GameContext();</span></div><div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html"> 12</a></span> <span class="comment"></span> <span class="keyword">public</span> <span class="keyword">class </span><a class="code" href="class_entitas_1_1_context.html">Context</a><TEntity> : <a class="code" href="interface_entitas_1_1_i_context.html">IContext</a><TEntity> where TEntity : class, <a class="code" href="interface_entitas_1_1_i_entity.html">IEntity</a> {</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"></span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> /// Occurs when an entity gets created.</span></div><div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#a2067db8aecab163ca35539554e9a78df"> 15</a></span> <span class="comment"></span> <span class="keyword">public</span> <span class="keyword">event</span> ContextEntityChanged <a class="code" href="class_entitas_1_1_context.html#a2067db8aecab163ca35539554e9a78df">OnEntityCreated</a>;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> /// Occurs when an entity will be destroyed.</span></div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#ab8c74cb2adee934df32ec2a86fc607b2"> 18</a></span> <span class="comment"></span> <span class="keyword">public</span> <span class="keyword">event</span> ContextEntityChanged <a class="code" href="class_entitas_1_1_context.html#ab8c74cb2adee934df32ec2a86fc607b2">OnEntityWillBeDestroyed</a>;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> /// Occurs when an entity got destroyed.</span></div><div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#a315b3628dc474c021d8eb6df3c514285"> 21</a></span> <span class="comment"></span> <span class="keyword">public</span> <span class="keyword">event</span> ContextEntityChanged <a class="code" href="class_entitas_1_1_context.html#a315b3628dc474c021d8eb6df3c514285">OnEntityDestroyed</a>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> /// Occurs when a group gets created for the first time.</span></div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#af08af71f91b512aee430ab4091709e3e"> 24</a></span> <span class="comment"></span> <span class="keyword">public</span> <span class="keyword">event</span> ContextGroupChanged <a class="code" href="class_entitas_1_1_context.html#af08af71f91b512aee430ab4091709e3e">OnGroupCreated</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> /// The total amount of components an entity can possibly have.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> /// This value is generated by the code generator,</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> /// e.g ComponentLookup.TotalComponents.</span></div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#a49fba33ba0488022060671ef79c86be3"> 29</a></span> <span class="comment"></span> <span class="keyword">public</span> <span class="keywordtype">int</span> <a class="code" href="class_entitas_1_1_context.html#a49fba33ba0488022060671ef79c86be3">totalComponents</a> { <span class="keyword">get</span> { <span class="keywordflow">return</span> _totalComponents; } }</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> /// Returns all componentPools. componentPools is used to reuse</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> /// removed components.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> /// Removed components will be pushed to the componentPool.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> /// Use entity.CreateComponent(index, type) to get a new or reusable</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> /// component from the componentPool.</span></div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#acc611e7de6414b1aafb06e22822b8316"> 36</a></span> <span class="comment"></span> <span class="keyword">public</span> Stack<IComponent>[] <a class="code" href="class_entitas_1_1_context.html#acc611e7de6414b1aafb06e22822b8316">componentPools</a> { <span class="keyword">get</span> { <span class="keywordflow">return</span> _componentPools; } }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment"></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment"> /// The contextInfo contains information about the context.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment"> /// It's used to provide better error messages.</span></div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#abdde35988b55cdbc905ba9b50326ed70"> 40</a></span> <span class="comment"></span> <span class="keyword">public</span> <a class="code" href="class_entitas_1_1_context_info.html">ContextInfo</a> <a class="code" href="class_entitas_1_1_context.html#abdde35988b55cdbc905ba9b50326ed70">contextInfo</a> { <span class="keyword">get</span> { <span class="keywordflow">return</span> _contextInfo; } }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment"></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment"> /// Returns the number of entities in the context.</span></div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#a318056a17297c9c7f645ee1177c00243"> 43</a></span> <span class="comment"></span> <span class="keyword">public</span> <span class="keywordtype">int</span> <a class="code" href="class_entitas_1_1_context.html#a318056a17297c9c7f645ee1177c00243">count</a> { <span class="keyword">get</span> { <span class="keywordflow">return</span> _entities.Count; } }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment"></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment"> /// Returns the number of entities in the internal ObjectPool</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment"> /// for entities which can be reused.</span></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#a08377b0def691faa04462f19e68fa3cc"> 47</a></span> <span class="comment"></span> <span class="keyword">public</span> <span class="keywordtype">int</span> <a class="code" href="class_entitas_1_1_context.html#a08377b0def691faa04462f19e68fa3cc">reusableEntitiesCount</a> { <span class="keyword">get</span> { <span class="keywordflow">return</span> _reusableEntities.Count; } }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment"></span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment"> /// Returns the number of entities that are currently retained by</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment"> /// other objects (e.g. Group, Collector, ReactiveSystem).</span></div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#a79d557c321f3e11ba8224a74873723f8"> 51</a></span> <span class="comment"></span> <span class="keyword">public</span> <span class="keywordtype">int</span> <a class="code" href="class_entitas_1_1_context.html#a79d557c321f3e11ba8224a74873723f8">retainedEntitiesCount</a> { <span class="keyword">get</span> { <span class="keywordflow">return</span> _retainedEntities.Count; } }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  readonly <span class="keywordtype">int</span> _totalComponents;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  readonly Stack<IComponent>[] _componentPools;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  readonly <a class="code" href="class_entitas_1_1_context_info.html">ContextInfo</a> _contextInfo;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  readonly Func<IEntity, IAERC> _aercFactory;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  readonly Func<TEntity> _entityFactory;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  readonly HashSet<TEntity> _entities = <span class="keyword">new</span> HashSet<TEntity>(<a class="code" href="class_entitas_1_1_entity_equality_comparer.html">EntityEqualityComparer<TEntity></a>.comparer);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  readonly Stack<TEntity> _reusableEntities = <span class="keyword">new</span> Stack<TEntity>();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  readonly HashSet<TEntity> _retainedEntities = <span class="keyword">new</span> HashSet<TEntity>(<a class="code" href="class_entitas_1_1_entity_equality_comparer.html">EntityEqualityComparer<TEntity></a>.comparer);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  readonly Dictionary<IMatcher<TEntity>, <a class="code" href="interface_entitas_1_1_i_group.html">IGroup<TEntity></a>> _groups = <span class="keyword">new</span> Dictionary<IMatcher<TEntity>, <a class="code" href="interface_entitas_1_1_i_group.html">IGroup<TEntity></a>>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  readonly List<IGroup<TEntity>>[] _groupsForIndex;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  readonly ObjectPool<List<GroupChanged<TEntity>>> _groupChangedListPool;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  readonly Dictionary<string, IEntityIndex> _entityIndices;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">int</span> _creationIndex;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  TEntity[] _entitiesCache;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// Cache delegates to avoid gc allocations</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  readonly EntityComponentChanged _cachedEntityChanged;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  readonly EntityComponentReplaced _cachedComponentReplaced;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  readonly EntityEvent _cachedEntityReleased;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  readonly EntityEvent _cachedDestroyEntity;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment"></span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment"> /// The prefered way to create a context is to use the generated methods</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment"> /// from the code generator, e.g. var context = new GameContext();</span></div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#a87933d1337245e5a0ff28396f85d8de5"> 82</a></span> <span class="comment"></span> <span class="keyword">public</span> <a class="code" href="class_entitas_1_1_context.html#a87933d1337245e5a0ff28396f85d8de5">Context</a>(<span class="keywordtype">int</span> <a class="code" href="class_entitas_1_1_context.html#a49fba33ba0488022060671ef79c86be3">totalComponents</a>, Func<TEntity> entityFactory) : this(<a class="code" href="class_entitas_1_1_context.html#a49fba33ba0488022060671ef79c86be3">totalComponents</a>, 0, null, null, entityFactory) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment"></span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment"> /// The prefered way to create a context is to use the generated methods</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment"> /// from the code generator, e.g. var context = new GameContext();</span></div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#abb7b862ad57b7cfe37ae3abd2e4223ac"> 87</a></span> <span class="comment"></span> <span class="keyword">public</span> <a class="code" href="class_entitas_1_1_context.html#abb7b862ad57b7cfe37ae3abd2e4223ac">Context</a>(<span class="keywordtype">int</span> <a class="code" href="class_entitas_1_1_context.html#a49fba33ba0488022060671ef79c86be3">totalComponents</a>, <span class="keywordtype">int</span> startCreationIndex, <a class="code" href="class_entitas_1_1_context_info.html">ContextInfo</a> <a class="code" href="class_entitas_1_1_context.html#abdde35988b55cdbc905ba9b50326ed70">contextInfo</a>, Func<IEntity, IAERC> aercFactory, Func<TEntity> entityFactory) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  _totalComponents = <a class="code" href="class_entitas_1_1_context.html#a49fba33ba0488022060671ef79c86be3">totalComponents</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  _creationIndex = startCreationIndex;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span> (<a class="code" href="class_entitas_1_1_context.html#abdde35988b55cdbc905ba9b50326ed70">contextInfo</a> != null) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  _contextInfo = <a class="code" href="class_entitas_1_1_context.html#abdde35988b55cdbc905ba9b50326ed70">contextInfo</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span> (<a class="code" href="class_entitas_1_1_context.html#abdde35988b55cdbc905ba9b50326ed70">contextInfo</a>.componentNames.Length != <a class="code" href="class_entitas_1_1_context.html#a49fba33ba0488022060671ef79c86be3">totalComponents</a>) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code" href="class_entitas_1_1_context_info_exception.html">ContextInfoException</a>(<span class="keyword">this</span>, <a class="code" href="class_entitas_1_1_context.html#abdde35988b55cdbc905ba9b50326ed70">contextInfo</a>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  _contextInfo = createDefaultContextInfo();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  _aercFactory = aercFactory ?? (entity => <span class="keyword">new</span> <a class="code" href="class_entitas_1_1_safe_a_e_r_c.html">SafeAERC</a>(entity));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  _entityFactory = entityFactory;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  _groupsForIndex = <span class="keyword">new</span> List<IGroup<TEntity>>[<a class="code" href="class_entitas_1_1_context.html#a49fba33ba0488022060671ef79c86be3">totalComponents</a>];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  _componentPools = <span class="keyword">new</span> Stack<IComponent>[<a class="code" href="class_entitas_1_1_context.html#a49fba33ba0488022060671ef79c86be3">totalComponents</a>];</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  _entityIndices = <span class="keyword">new</span> Dictionary<string, IEntityIndex>();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  _groupChangedListPool = <span class="keyword">new</span> ObjectPool<List<GroupChanged<TEntity>>>(</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  () => <span class="keyword">new</span> List<GroupChanged<TEntity>>(),</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  list => list.Clear()</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  );</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// Cache delegates to avoid gc allocations</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  _cachedEntityChanged = updateGroupsComponentAddedOrRemoved;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  _cachedComponentReplaced = updateGroupsComponentReplaced;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  _cachedEntityReleased = onEntityReleased;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  _cachedDestroyEntity = onDestroyEntity;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="class_entitas_1_1_context_info.html">ContextInfo</a> createDefaultContextInfo() {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  var componentNames = <span class="keyword">new</span> <span class="keywordtype">string</span>[_totalComponents];</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">const</span> <span class="keywordtype">string</span> prefix = <span class="stringliteral">"Index "</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < componentNames.Length; i++) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  componentNames[i] = prefix + i;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> <span class="keyword">new</span> ContextInfo(<span class="stringliteral">"Unnamed Context"</span>, componentNames, null);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment"></span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="comment"> /// Creates a new entity or gets a reusable entity from the</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="comment"> /// internal ObjectPool for entities.</span></div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#ad78318367db3cdeb5ccf9470a1916d71"> 130</a></span> <span class="comment"></span> <span class="keyword">public</span> TEntity <a class="code" href="class_entitas_1_1_context.html#ad78318367db3cdeb5ccf9470a1916d71">CreateEntity</a>() {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  TEntity entity;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span> (_reusableEntities.Count > 0) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  entity = _reusableEntities.Pop();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  entity.Reactivate(_creationIndex++);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  entity = _entityFactory();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  entity.Initialize(_creationIndex++, _totalComponents, _componentPools, _contextInfo, _aercFactory(entity));</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  _entities.Add(entity);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  entity.Retain(<span class="keyword">this</span>);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  _entitiesCache = null;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  entity.OnComponentAdded += _cachedEntityChanged;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  entity.OnComponentRemoved += _cachedEntityChanged;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  entity.OnComponentReplaced += _cachedComponentReplaced;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  entity.OnEntityReleased += _cachedEntityReleased;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  entity.OnDestroyEntity += _cachedDestroyEntity;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">if</span> (<a class="code" href="class_entitas_1_1_context.html#a2067db8aecab163ca35539554e9a78df">OnEntityCreated</a> != null) {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="class_entitas_1_1_context.html#a2067db8aecab163ca35539554e9a78df">OnEntityCreated</a>(<span class="keyword">this</span>, entity);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> entity;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="comment"></span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="comment"> /// Destroys all entities in the context.</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment"> /// Throws an exception if there are still retained entities.</span></div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#a6e2997c233e248d860cc85f33aa596af"> 160</a></span> <span class="comment"></span> <span class="keyword">public</span> <span class="keywordtype">void</span> <a class="code" href="class_entitas_1_1_context.html#a6e2997c233e248d860cc85f33aa596af">DestroyAllEntities</a>() {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  var entities = <a class="code" href="class_entitas_1_1_context.html#a7ec3a1e5b8e186d2dec13ebed26d2dcc">GetEntities</a>();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < entities.Length; i++) {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  entities[i].Destroy();</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  _entities.Clear();</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span> (_retainedEntities.Count != 0) {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code" href="class_entitas_1_1_context_still_has_retained_entities_exception.html">ContextStillHasRetainedEntitiesException</a>(<span class="keyword">this</span>, _retainedEntities.ToArray());</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="comment"></span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="comment"> /// Determines whether the context has the specified entity.</span></div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#a8dc55cc92fb7b80aaf48d18ed48346e6"> 174</a></span> <span class="comment"></span> <span class="keyword">public</span> <span class="keywordtype">bool</span> <a class="code" href="class_entitas_1_1_context.html#a8dc55cc92fb7b80aaf48d18ed48346e6">HasEntity</a>(TEntity entity) {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">return</span> _entities.Contains(entity);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="comment"></span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="comment"> /// Returns all entities which are currently in the context.</span></div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#a7ec3a1e5b8e186d2dec13ebed26d2dcc"> 179</a></span> <span class="comment"></span> <span class="keyword">public</span> TEntity[] <a class="code" href="class_entitas_1_1_context.html#a7ec3a1e5b8e186d2dec13ebed26d2dcc">GetEntities</a>() {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">if</span> (_entitiesCache == null) {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  _entitiesCache = <span class="keyword">new</span> TEntity[_entities.Count];</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  _entities.CopyTo(_entitiesCache);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">return</span> _entitiesCache;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="comment"></span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="comment"> /// Returns a group for the specified matcher.</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="comment"> /// Calling context.GetGroup(matcher) with the same matcher will always</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="comment"> /// return the same instance of the group.</span></div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#a5395e55b7d034cb6e33a86f4f73104c4"> 191</a></span> <span class="comment"></span> <span class="keyword">public</span> <a class="code" href="interface_entitas_1_1_i_group.html">IGroup<TEntity></a> <a class="code" href="class_entitas_1_1_context.html#a5395e55b7d034cb6e33a86f4f73104c4">GetGroup</a>(<a class="code" href="interface_entitas_1_1_i_matcher.html">IMatcher<TEntity></a> matcher) {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="interface_entitas_1_1_i_group.html">IGroup<TEntity></a> group;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">if</span> (!_groups.TryGetValue(matcher, out group)) {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  group = <span class="keyword">new</span> <a class="code" href="class_entitas_1_1_group.html">Group<TEntity></a>(matcher);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  var entities = <a class="code" href="class_entitas_1_1_context.html#a7ec3a1e5b8e186d2dec13ebed26d2dcc">GetEntities</a>();</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < entities.Length; i++) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  group.HandleEntitySilently(entities[i]);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  _groups.Add(matcher, group);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < matcher.indices.Length; i++) {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  var index = matcher.indices[i];</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">if</span> (_groupsForIndex[index] == null) {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  _groupsForIndex[index] = <span class="keyword">new</span> List<IGroup<TEntity>>();</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  _groupsForIndex[index].Add(group);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span> (<a class="code" href="class_entitas_1_1_context.html#af08af71f91b512aee430ab4091709e3e">OnGroupCreated</a> != null) {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="class_entitas_1_1_context.html#af08af71f91b512aee430ab4091709e3e">OnGroupCreated</a>(<span class="keyword">this</span>, group);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> group;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="comment"></span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="comment"> /// Adds the IEntityIndex for the specified name.</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="comment"> /// There can only be one IEntityIndex per name.</span></div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#a9921fe1978e800bb692d0c429d51e485"> 221</a></span> <span class="comment"></span> <span class="keyword">public</span> <span class="keywordtype">void</span> <a class="code" href="class_entitas_1_1_context.html#a9921fe1978e800bb692d0c429d51e485">AddEntityIndex</a>(<a class="code" href="interface_entitas_1_1_i_entity_index.html">IEntityIndex</a> entityIndex) {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span> (_entityIndices.ContainsKey(entityIndex.name)) {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code" href="class_entitas_1_1_context_entity_index_does_already_exist_exception.html">ContextEntityIndexDoesAlreadyExistException</a>(<span class="keyword">this</span>, entityIndex.name);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  _entityIndices.Add(entityIndex.name, entityIndex);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="comment"></span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="comment"> /// Gets the IEntityIndex for the specified name.</span></div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#a596fdd33a0be12f534af444f4b36e076"> 230</a></span> <span class="comment"></span> <span class="keyword">public</span> <a class="code" href="interface_entitas_1_1_i_entity_index.html">IEntityIndex</a> <a class="code" href="class_entitas_1_1_context.html#a596fdd33a0be12f534af444f4b36e076">GetEntityIndex</a>(<span class="keywordtype">string</span> name) {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <a class="code" href="interface_entitas_1_1_i_entity_index.html">IEntityIndex</a> entityIndex;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span> (!_entityIndices.TryGetValue(name, out entityIndex)) {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code" href="class_entitas_1_1_context_entity_index_does_not_exist_exception.html">ContextEntityIndexDoesNotExistException</a>(<span class="keyword">this</span>, name);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">return</span> entityIndex;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="comment"></span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="comment"> /// Resets the creationIndex back to 0.</span></div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#ac065a992fc8f1d8609f1400bde1b1e8c"> 240</a></span> <span class="comment"></span> <span class="keyword">public</span> <span class="keywordtype">void</span> <a class="code" href="class_entitas_1_1_context.html#ac065a992fc8f1d8609f1400bde1b1e8c">ResetCreationIndex</a>() {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  _creationIndex = 0;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="comment"></span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="comment"> /// Clears the componentPool at the specified index.</span></div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#a65f75d0b04e3b03b6965fb70a6aae9de"> 245</a></span> <span class="comment"></span> <span class="keyword">public</span> <span class="keywordtype">void</span> <a class="code" href="class_entitas_1_1_context.html#a65f75d0b04e3b03b6965fb70a6aae9de">ClearComponentPool</a>(<span class="keywordtype">int</span> index) {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  var componentPool = _componentPools[index];</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">if</span> (componentPool != null) {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  componentPool.Clear();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="comment"></span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="comment"> /// Clears all componentPools.</span></div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#a5d328db5cc7eea11a02a3e9bdc86a412"> 253</a></span> <span class="comment"></span> <span class="keyword">public</span> <span class="keywordtype">void</span> <a class="code" href="class_entitas_1_1_context.html#a5d328db5cc7eea11a02a3e9bdc86a412">ClearComponentPools</a>() {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < _componentPools.Length; i++) {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <a class="code" href="class_entitas_1_1_context.html#a65f75d0b04e3b03b6965fb70a6aae9de">ClearComponentPool</a>(i);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="comment"></span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="comment"> /// Resets the context (destroys all entities and</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <span class="comment"> /// resets creationIndex back to 0).</span></div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#a60f65a4d43272c707911f90705d58c32"> 261</a></span> <span class="comment"></span> <span class="keyword">public</span> <span class="keywordtype">void</span> <a class="code" href="class_entitas_1_1_context.html#a60f65a4d43272c707911f90705d58c32">Reset</a>() {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="class_entitas_1_1_context.html#a6e2997c233e248d860cc85f33aa596af">DestroyAllEntities</a>();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="class_entitas_1_1_context.html#ac065a992fc8f1d8609f1400bde1b1e8c">ResetCreationIndex</a>();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="comment"></span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="comment"> /// Removes all event handlers</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="comment"> /// OnEntityCreated, OnEntityWillBeDestroyed,</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="comment"> /// OnEntityDestroyed and OnGroupCreated</span></div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="class_entitas_1_1_context.html#acca3015253954ec2e2878bdb20402eb0"> 269</a></span> <span class="comment"></span> <span class="keyword">public</span> <span class="keywordtype">void</span> <a class="code" href="class_entitas_1_1_context.html#acca3015253954ec2e2878bdb20402eb0">RemoveAllEventHandlers</a>() {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="class_entitas_1_1_context.html#a2067db8aecab163ca35539554e9a78df">OnEntityCreated</a> = null;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <a class="code" href="class_entitas_1_1_context.html#ab8c74cb2adee934df32ec2a86fc607b2">OnEntityWillBeDestroyed</a> = null;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <a class="code" href="class_entitas_1_1_context.html#a315b3628dc474c021d8eb6df3c514285">OnEntityDestroyed</a> = null;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <a class="code" href="class_entitas_1_1_context.html#af08af71f91b512aee430ab4091709e3e">OnGroupCreated</a> = null;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">string</span> ToString() {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">return</span> _contextInfo.name;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordtype">void</span> updateGroupsComponentAddedOrRemoved(IEntity entity, <span class="keywordtype">int</span> index, IComponent component) {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  var groups = _groupsForIndex[index];</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">if</span> (groups != null) {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  var events = _groupChangedListPool.Get();</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  var tEntity = (TEntity)entity;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < groups.Count; i++) {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  events.Add(groups[i].HandleEntity(tEntity));</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < events.Count; i++) {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  var groupChangedEvent = events[i];</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">if</span> (groupChangedEvent != null) {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  groupChangedEvent(</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  groups[i], tEntity, index, component</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  );</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  _groupChangedListPool.Push(events);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordtype">void</span> updateGroupsComponentReplaced(IEntity entity, <span class="keywordtype">int</span> index, IComponent previousComponent, IComponent newComponent) {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  var groups = _groupsForIndex[index];</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">if</span> (groups != null) {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  var tEntity = (TEntity)entity;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < groups.Count; i++) {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  groups[i].UpdateEntity(</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  tEntity, index, previousComponent, newComponent</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  );</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordtype">void</span> onEntityReleased(IEntity entity) {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">if</span> (entity.isEnabled) {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">throw</span> <span class="keyword">new</span> EntityIsNotDestroyedException(</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="stringliteral">"Cannot release "</span> + entity + <span class="stringliteral">"!"</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  );</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  var tEntity = (TEntity)entity;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  entity.RemoveAllOnEntityReleasedHandlers();</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  _retainedEntities.Remove(tEntity);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  _reusableEntities.Push(tEntity);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordtype">void</span> onDestroyEntity(IEntity entity) {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  var tEntity = (TEntity)entity;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  var removed = _entities.Remove(tEntity);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">if</span> (!removed) {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">throw</span> <span class="keyword">new</span> ContextDoesNotContainEntityException(</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="stringliteral">"'"</span> + <span class="keyword">this</span> + <span class="stringliteral">"' cannot destroy "</span> + tEntity + <span class="stringliteral">"!"</span>,</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="stringliteral">"This cannot happen!?!"</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  );</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  _entitiesCache = null;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">if</span> (<a class="code" href="class_entitas_1_1_context.html#ab8c74cb2adee934df32ec2a86fc607b2">OnEntityWillBeDestroyed</a> != null) {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="class_entitas_1_1_context.html#ab8c74cb2adee934df32ec2a86fc607b2">OnEntityWillBeDestroyed</a>(<span class="keyword">this</span>, tEntity);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  tEntity.InternalDestroy();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">if</span> (<a class="code" href="class_entitas_1_1_context.html#a315b3628dc474c021d8eb6df3c514285">OnEntityDestroyed</a> != null) {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <a class="code" href="class_entitas_1_1_context.html#a315b3628dc474c021d8eb6df3c514285">OnEntityDestroyed</a>(<span class="keyword">this</span>, tEntity);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">if</span> (tEntity.retainCount == 1) {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="comment">// Can be released immediately without</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="comment">// adding to _retainedEntities</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  tEntity.OnEntityReleased -= _cachedEntityReleased;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  _reusableEntities.Push(tEntity);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  tEntity.Release(<span class="keyword">this</span>);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  tEntity.RemoveAllOnEntityReleasedHandlers();</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  _retainedEntities.Add(tEntity);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  tEntity.Release(<span class="keyword">this</span>);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> }</div><div class="ttc" id="interface_entitas_1_1_i_context_html"><div class="ttname"><a href="interface_entitas_1_1_i_context.html">Entitas.IContext</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_context_8cs_source.html#l00008">IContext.cs:8</a></div></div>
<div class="ttc" id="namespace_entitas_html"><div class="ttname"><a href="namespace_entitas.html">Entitas</a></div><div class="ttdef"><b>Definition:</b> <a href="_collector_8cs_source.html#l00005">Collector.cs:5</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_a8dc55cc92fb7b80aaf48d18ed48346e6"><div class="ttname"><a href="class_entitas_1_1_context.html#a8dc55cc92fb7b80aaf48d18ed48346e6">Entitas.Context.HasEntity</a></div><div class="ttdeci">bool HasEntity(TEntity entity)</div><div class="ttdoc">Determines whether the context has the specified entity. </div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00174">Context.cs:174</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_a49fba33ba0488022060671ef79c86be3"><div class="ttname"><a href="class_entitas_1_1_context.html#a49fba33ba0488022060671ef79c86be3">Entitas.Context.totalComponents</a></div><div class="ttdeci">int totalComponents</div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00029">Context.cs:29</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_abdde35988b55cdbc905ba9b50326ed70"><div class="ttname"><a href="class_entitas_1_1_context.html#abdde35988b55cdbc905ba9b50326ed70">Entitas.Context.contextInfo</a></div><div class="ttdeci">ContextInfo contextInfo</div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00040">Context.cs:40</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_still_has_retained_entities_exception_html"><div class="ttname"><a href="class_entitas_1_1_context_still_has_retained_entities_exception.html">Entitas.ContextStillHasRetainedEntitiesException</a></div><div class="ttdef"><b>Definition:</b> <a href="_context_still_has_retained_entities_exception_8cs_source.html#l00005">ContextStillHasRetainedEntitiesException.cs:5</a></div></div>
<div class="ttc" id="interface_entitas_1_1_i_group_html"><div class="ttname"><a href="interface_entitas_1_1_i_group.html">Entitas.IGroup< TEntity ></a></div></div>
<div class="ttc" id="namespace_system_html"><div class="ttname"><a href="namespace_system.html">System</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_a65f75d0b04e3b03b6965fb70a6aae9de"><div class="ttname"><a href="class_entitas_1_1_context.html#a65f75d0b04e3b03b6965fb70a6aae9de">Entitas.Context.ClearComponentPool</a></div><div class="ttdeci">void ClearComponentPool(int index)</div><div class="ttdoc">Clears the componentPool at the specified index. </div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00245">Context.cs:245</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_af08af71f91b512aee430ab4091709e3e"><div class="ttname"><a href="class_entitas_1_1_context.html#af08af71f91b512aee430ab4091709e3e">Entitas.Context.OnGroupCreated</a></div><div class="ttdeci">ContextGroupChanged OnGroupCreated</div><div class="ttdoc">Occurs when a group gets created for the first time. </div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00024">Context.cs:24</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_a60f65a4d43272c707911f90705d58c32"><div class="ttname"><a href="class_entitas_1_1_context.html#a60f65a4d43272c707911f90705d58c32">Entitas.Context.Reset</a></div><div class="ttdeci">void Reset()</div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00261">Context.cs:261</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_a596fdd33a0be12f534af444f4b36e076"><div class="ttname"><a href="class_entitas_1_1_context.html#a596fdd33a0be12f534af444f4b36e076">Entitas.Context.GetEntityIndex</a></div><div class="ttdeci">IEntityIndex GetEntityIndex(string name)</div><div class="ttdoc">Gets the IEntityIndex for the specified name. </div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00230">Context.cs:230</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_entity_index_does_already_exist_exception_html"><div class="ttname"><a href="class_entitas_1_1_context_entity_index_does_already_exist_exception.html">Entitas.ContextEntityIndexDoesAlreadyExistException</a></div><div class="ttdef"><b>Definition:</b> <a href="_context_entity_index_does_already_exist_exception_8cs_source.html#l00003">ContextEntityIndexDoesAlreadyExistException.cs:3</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_a87933d1337245e5a0ff28396f85d8de5"><div class="ttname"><a href="class_entitas_1_1_context.html#a87933d1337245e5a0ff28396f85d8de5">Entitas.Context.Context</a></div><div class="ttdeci">Context(int totalComponents, Func< TEntity > entityFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00082">Context.cs:82</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_ab8c74cb2adee934df32ec2a86fc607b2"><div class="ttname"><a href="class_entitas_1_1_context.html#ab8c74cb2adee934df32ec2a86fc607b2">Entitas.Context.OnEntityWillBeDestroyed</a></div><div class="ttdeci">ContextEntityChanged OnEntityWillBeDestroyed</div><div class="ttdoc">Occurs when an entity will be destroyed. </div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00018">Context.cs:18</a></div></div>
<div class="ttc" id="interface_entitas_1_1_i_entity_index_html"><div class="ttname"><a href="interface_entitas_1_1_i_entity_index.html">Entitas.IEntityIndex</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_entity_index_8cs_source.html#l00003">IEntityIndex.cs:3</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_a318056a17297c9c7f645ee1177c00243"><div class="ttname"><a href="class_entitas_1_1_context.html#a318056a17297c9c7f645ee1177c00243">Entitas.Context.count</a></div><div class="ttdeci">int count</div><div class="ttdoc">Returns the number of entities in the context. </div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00043">Context.cs:43</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_ac065a992fc8f1d8609f1400bde1b1e8c"><div class="ttname"><a href="class_entitas_1_1_context.html#ac065a992fc8f1d8609f1400bde1b1e8c">Entitas.Context.ResetCreationIndex</a></div><div class="ttdeci">void ResetCreationIndex()</div><div class="ttdoc">Resets the creationIndex back to 0. </div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00240">Context.cs:240</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_a9921fe1978e800bb692d0c429d51e485"><div class="ttname"><a href="class_entitas_1_1_context.html#a9921fe1978e800bb692d0c429d51e485">Entitas.Context.AddEntityIndex</a></div><div class="ttdeci">void AddEntityIndex(IEntityIndex entityIndex)</div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00221">Context.cs:221</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_a7ec3a1e5b8e186d2dec13ebed26d2dcc"><div class="ttname"><a href="class_entitas_1_1_context.html#a7ec3a1e5b8e186d2dec13ebed26d2dcc">Entitas.Context.GetEntities</a></div><div class="ttdeci">TEntity [] GetEntities()</div><div class="ttdoc">Returns all entities which are currently in the context. </div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00179">Context.cs:179</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_a08377b0def691faa04462f19e68fa3cc"><div class="ttname"><a href="class_entitas_1_1_context.html#a08377b0def691faa04462f19e68fa3cc">Entitas.Context.reusableEntitiesCount</a></div><div class="ttdeci">int reusableEntitiesCount</div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00047">Context.cs:47</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_a79d557c321f3e11ba8224a74873723f8"><div class="ttname"><a href="class_entitas_1_1_context.html#a79d557c321f3e11ba8224a74873723f8">Entitas.Context.retainedEntitiesCount</a></div><div class="ttdeci">int retainedEntitiesCount</div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00051">Context.cs:51</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_a5395e55b7d034cb6e33a86f4f73104c4"><div class="ttname"><a href="class_entitas_1_1_context.html#a5395e55b7d034cb6e33a86f4f73104c4">Entitas.Context.GetGroup</a></div><div class="ttdeci">IGroup< TEntity > GetGroup(IMatcher< TEntity > matcher)</div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00191">Context.cs:191</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_abb7b862ad57b7cfe37ae3abd2e4223ac"><div class="ttname"><a href="class_entitas_1_1_context.html#abb7b862ad57b7cfe37ae3abd2e4223ac">Entitas.Context.Context</a></div><div class="ttdeci">Context(int totalComponents, int startCreationIndex, ContextInfo contextInfo, Func< IEntity, IAERC > aercFactory, Func< TEntity > entityFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00087">Context.cs:87</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html"><div class="ttname"><a href="class_entitas_1_1_context.html">Entitas.Context</a></div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00012">Context.cs:12</a></div></div>
<div class="ttc" id="class_entitas_1_1_group_html"><div class="ttname"><a href="class_entitas_1_1_group.html">Entitas.Group</a></div><div class="ttdef"><b>Definition:</b> <a href="_group_8cs_source.html#l00011">Group.cs:11</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_acca3015253954ec2e2878bdb20402eb0"><div class="ttname"><a href="class_entitas_1_1_context.html#acca3015253954ec2e2878bdb20402eb0">Entitas.Context.RemoveAllEventHandlers</a></div><div class="ttdeci">void RemoveAllEventHandlers()</div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00269">Context.cs:269</a></div></div>
<div class="ttc" id="interface_entitas_1_1_i_matcher_html"><div class="ttname"><a href="interface_entitas_1_1_i_matcher.html">Entitas.IMatcher</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_matcher_8cs_source.html#l00003">IMatcher.cs:3</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_ad78318367db3cdeb5ccf9470a1916d71"><div class="ttname"><a href="class_entitas_1_1_context.html#ad78318367db3cdeb5ccf9470a1916d71">Entitas.Context.CreateEntity</a></div><div class="ttdeci">TEntity CreateEntity()</div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00130">Context.cs:130</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_a5d328db5cc7eea11a02a3e9bdc86a412"><div class="ttname"><a href="class_entitas_1_1_context.html#a5d328db5cc7eea11a02a3e9bdc86a412">Entitas.Context.ClearComponentPools</a></div><div class="ttdeci">void ClearComponentPools()</div><div class="ttdoc">Clears all componentPools. </div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00253">Context.cs:253</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_a2067db8aecab163ca35539554e9a78df"><div class="ttname"><a href="class_entitas_1_1_context.html#a2067db8aecab163ca35539554e9a78df">Entitas.Context.OnEntityCreated</a></div><div class="ttdeci">ContextEntityChanged OnEntityCreated</div><div class="ttdoc">Occurs when an entity gets created. </div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00015">Context.cs:15</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_acc611e7de6414b1aafb06e22822b8316"><div class="ttname"><a href="class_entitas_1_1_context.html#acc611e7de6414b1aafb06e22822b8316">Entitas.Context.componentPools</a></div><div class="ttdeci">Stack< IComponent > [] componentPools</div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00036">Context.cs:36</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_a315b3628dc474c021d8eb6df3c514285"><div class="ttname"><a href="class_entitas_1_1_context.html#a315b3628dc474c021d8eb6df3c514285">Entitas.Context.OnEntityDestroyed</a></div><div class="ttdeci">ContextEntityChanged OnEntityDestroyed</div><div class="ttdoc">Occurs when an entity got destroyed. </div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00021">Context.cs:21</a></div></div>
<div class="ttc" id="class_entitas_1_1_entity_equality_comparer_html"><div class="ttname"><a href="class_entitas_1_1_entity_equality_comparer.html">Entitas.EntityEqualityComparer</a></div><div class="ttdef"><b>Definition:</b> <a href="_entity_equality_comparer_8cs_source.html#l00005">EntityEqualityComparer.cs:5</a></div></div>
<div class="ttc" id="interface_entitas_1_1_i_entity_html"><div class="ttname"><a href="interface_entitas_1_1_i_entity.html">Entitas.IEntity</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_entity_8cs_source.html#l00016">IEntity.cs:16</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_info_exception_html"><div class="ttname"><a href="class_entitas_1_1_context_info_exception.html">Entitas.ContextInfoException</a></div><div class="ttdef"><b>Definition:</b> <a href="_context_info_exception_8cs_source.html#l00003">ContextInfoException.cs:3</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_entity_index_does_not_exist_exception_html"><div class="ttname"><a href="class_entitas_1_1_context_entity_index_does_not_exist_exception.html">Entitas.ContextEntityIndexDoesNotExistException</a></div><div class="ttdef"><b>Definition:</b> <a href="_context_entity_index_does_not_exist_exception_8cs_source.html#l00003">ContextEntityIndexDoesNotExistException.cs:3</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_info_html"><div class="ttname"><a href="class_entitas_1_1_context_info.html">Entitas.ContextInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_context_info_8cs_source.html#l00005">ContextInfo.cs:5</a></div></div>
<div class="ttc" id="class_entitas_1_1_safe_a_e_r_c_html"><div class="ttname"><a href="class_entitas_1_1_safe_a_e_r_c.html">Entitas.SafeAERC</a></div><div class="ttdef"><b>Definition:</b> <a href="_safe_a_e_r_c_8cs_source.html#l00012">SafeAERC.cs:12</a></div></div>
<div class="ttc" id="class_entitas_1_1_context_html_a6e2997c233e248d860cc85f33aa596af"><div class="ttname"><a href="class_entitas_1_1_context.html#a6e2997c233e248d860cc85f33aa596af">Entitas.Context.DestroyAllEntities</a></div><div class="ttdeci">void DestroyAllEntities()</div><div class="ttdef"><b>Definition:</b> <a href="_context_8cs_source.html#l00160">Context.cs:160</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_2445fa600638ca0377a838c43b60c5d0.html">Entitas</a></li><li class="navelem"><a class="el" href="dir_18d0583636d1f7adc70f46fa7dc6fd22.html">Entitas</a></li><li class="navelem"><a class="el" href="dir_55c21c1f668bdbeef61d727804a0de12.html">Context</a></li><li class="navelem"><b>Context.cs</b></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
</ul>
</div>
</body>
</html>