mirror of
https://github.com/bakpakin/tiny-ecs.git
synced 2026-07-22 07:56:52 -06:00
Update docs.
This commit is contained in:
+46
-46
@@ -53,7 +53,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<h3>Info:</h3>
|
<h3>Info:</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Copyright</strong>: 2015</li>
|
<li><strong>Copyright</strong>: 2016</li>
|
||||||
<li><strong>License</strong>: MIT</li>
|
<li><strong>License</strong>: MIT</li>
|
||||||
<li><strong>Author</strong>: Calvin Rose</li>
|
<li><strong>Author</strong>: Calvin Rose</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="name" nowrap><a href="#tiny.removeEntity">tiny.removeEntity (world, entity)</a></td>
|
<td class="name" nowrap><a href="#tiny.removeEntity">tiny.removeEntity (world, entity)</a></td>
|
||||||
<td class="summary">Removes an Entity to the World.</td>
|
<td class="summary">Removes an Entity from the World.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="name" nowrap><a href="#tiny.removeSystem">tiny.removeSystem (world, system)</a></td>
|
<td class="name" nowrap><a href="#tiny.removeSystem">tiny.removeSystem (world, system)</a></td>
|
||||||
@@ -160,10 +160,6 @@
|
|||||||
<td class="summary">Gets number of Systems in World.</td>
|
<td class="summary">Gets number of Systems in World.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="name" nowrap><a href="#tiny.getSystemIndex">tiny.getSystemIndex (world, system)</a></td>
|
|
||||||
<td class="summary">Gets the index of the System in the World.</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="name" nowrap><a href="#tiny.setSystemIndex">tiny.setSystemIndex (world, system, index)</a></td>
|
<td class="name" nowrap><a href="#tiny.setSystemIndex">tiny.setSystemIndex (world, system, index)</a></td>
|
||||||
<td class="summary">Sets the index of a System in the World, and returns the old index.</td>
|
<td class="summary">Sets the index of a System in the World, and returns the old index.</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -180,7 +176,9 @@
|
|||||||
|
|
||||||
<p> A Filter is a function that selects which Entities apply to a System.
|
<p> A Filter is a function that selects which Entities apply to a System.
|
||||||
Filters take two parameters, the System and the Entity, and return a boolean
|
Filters take two parameters, the System and the Entity, and return a boolean
|
||||||
value indicating if the Entity should be processed by the System.</p>
|
value indicating if the Entity should be processed by the System. A truthy
|
||||||
|
value includes the entity, while a falsey (nil or false) value excludes the
|
||||||
|
entity.</p>
|
||||||
|
|
||||||
<p> Filters must be added to Systems by setting the <a href="index.html#tiny.filter">filter</a> field of the System.
|
<p> Filters must be added to Systems by setting the <a href="index.html#tiny.filter">filter</a> field of the System.
|
||||||
Filter's returned by tiny-ecs's Filter functions are immutable and can be
|
Filter's returned by tiny-ecs's Filter functions are immutable and can be
|
||||||
@@ -292,12 +290,12 @@ filter = tiny.requireAll("image", tiny.rejectAny("Player", "Enemy"))
|
|||||||
<ul>
|
<ul>
|
||||||
<li>Tokens are alphanumeric strings including underscores.</li>
|
<li>Tokens are alphanumeric strings including underscores.</li>
|
||||||
<li>Tokens can be separated by |, &, or surrounded by parentheses.</li>
|
<li>Tokens can be separated by |, &, or surrounded by parentheses.</li>
|
||||||
<li>Tokens can be prefixed with !, and are then operated on with a boolean 'not'.</li>
|
<li>Tokens can be prefixed with !, and are then inverted.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p> Examples are best:</p>
|
<p> Examples are best:</p>
|
||||||
<pre><code>'a|b|c' - Matches entities with an 'a' component OR a 'b' component or a 'c' component.
|
<pre><code>'a|b|c' - Matches entities with an 'a' OR 'b' OR 'c'.
|
||||||
'a&!b&c' - Matches entities with an 'a' component AND NOT a 'b' component AND a 'c' component.
|
'a&!b&c' - Matches entities with an 'a' AND NOT 'b' AND 'c'.
|
||||||
'a|(b&c&d)|e - Matches 'a' OR ('b' AND 'c' AND 'd') OR 'e'
|
'a|(b&c&d)|e - Matches 'a' OR ('b' AND 'c' AND 'd') OR 'e'
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
@@ -313,9 +311,7 @@ filter = tiny.requireAll("image", tiny.rejectAny("Player", "Enemy"))
|
|||||||
<h2 class="section-header has-description"><a name="System_functions"></a>System functions </h2>
|
<h2 class="section-header has-description"><a name="System_functions"></a>System functions </h2>
|
||||||
|
|
||||||
<div class="section-description">
|
<div class="section-description">
|
||||||
|
A System is a wrapper around function callbacks for manipulating Entities.
|
||||||
|
|
||||||
<p> A System is a wrapper around function callbacks for manipulating Entities.
|
|
||||||
Systems are implemented as tables that contain at least one method;
|
Systems are implemented as tables that contain at least one method;
|
||||||
an update function that takes parameters like so:</p>
|
an update function that takes parameters like so:</p>
|
||||||
|
|
||||||
@@ -339,12 +335,25 @@ filter = tiny.requireAll("image", tiny.rejectAny("Player", "Enemy"))
|
|||||||
to the World, before any entities are added to the system.</li>
|
to the World, before any entities are added to the system.</li>
|
||||||
<li><code>function system:onRemoveFromWorld(world)</code> - Called when the System is
|
<li><code>function system:onRemoveFromWorld(world)</code> - Called when the System is
|
||||||
removed from the world, after all Entities are removed from the System.</li>
|
removed from the world, after all Entities are removed from the System.</li>
|
||||||
|
<li><code>function system:preWrap(dt)</code> - Called on each system before update is
|
||||||
|
called on any system.</li>
|
||||||
|
<li><code>function system:postWrap(dt) - Called on each system in reverse order
|
||||||
|
after update is called on each system. The idea behind </code>preWrap<code> and
|
||||||
|
</code>postWrap<code> is to allow for systems that modify the behavior of other systems.
|
||||||
|
Say there is a DrawingSystem, which draws sprites to the screen, and a
|
||||||
|
PostProcessingSystem, that adds some blur and bloom effects. In the preWrap
|
||||||
|
method of the PostProcessingSystem, the System could set the drawing target
|
||||||
|
for the DrawingSystem to a special buffer instead the screen. In the postWrap
|
||||||
|
method, the PostProcessingSystem could then modify the buffer and render it
|
||||||
|
to the screen. In this setup, the PostProcessingSystem would be added to the
|
||||||
|
World after the drawingSystem (A similar but less flexible behavior could
|
||||||
|
be accomplished with a single custom update function in the DrawingSystem).</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p> For Filters, it is convenient to use <a href="index.html#tiny.requireAll">tiny.requireAll</a> or <a href="index.html#tiny.requireAny">tiny.requireAny</a>,
|
<p> For Filters, it is convenient to use </code>tiny.requireAll<code> or </code>tiny.requireAny<code>,
|
||||||
but one can write their own filters as well. Set the Filter of a System like
|
but one can write their own filters as well. Set the Filter of a System like
|
||||||
so:</p>
|
so:</p>
|
||||||
<pre><code>system.filter = tiny.requireAll("a", "b", "c")
|
<pre><code>system.filter = tiny.requireAll(&quot;a&quot;, &quot;b&quot;, &quot;c&quot;)
|
||||||
</code></pre>
|
</code></pre>
|
||||||
<p> or</p>
|
<p> or</p>
|
||||||
<pre><code>function system:filter(entity)
|
<pre><code>function system:filter(entity)
|
||||||
@@ -357,29 +366,35 @@ end
|
|||||||
commonly used.</p>
|
commonly used.</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>The <a href="index.html#tiny.world">world</a> field points to the World that the System belongs to. Useful
|
<li>The </code>world<code> field points to the World that the System belongs to. Useful
|
||||||
for adding and removing Entities from the world dynamically via the System.</li>
|
for adding and removing Entities from the world dynamically via the System.</li>
|
||||||
<li>The <code>active</code> flag is whether or not the System is updated automatically.
|
<li>The </code>active<code> flag is whether or not the System is updated automatically.
|
||||||
Inactive Systems should be updated manually or not at all via
|
Inactive Systems should be updated manually or not at all via
|
||||||
<code>system:update(dt)</code>. Defaults to true.</li>
|
</code>system:update(dt)<code>. Defaults to true.</li>
|
||||||
<li>The <code>entities</code> field is an ordered list of Entities in the System. This
|
<li>The </code>entities<code> field is an ordered list of Entities in the System. This
|
||||||
list can be used to quickly iterate through all Entities in a System.</li>
|
list can be used to quickly iterate through all Entities in a System.</li>
|
||||||
<li>The <code>interval</code> field is an optional field that makes Systems update at
|
<li>The </code>interval<code> field is an optional field that makes Systems update at
|
||||||
certain intervals using buffered time, regardless of World update frequency.
|
certain intervals using buffered time, regardless of World update frequency.
|
||||||
For example, to make a System update once a second, set the System's interval
|
For example, to make a System update once a second, set the System's interval
|
||||||
to 1.</li>
|
to 1.</li>
|
||||||
<li>The <code>index</code> field is the System's index in the World. Lower indexed
|
<li>The </code>index<code> field is the System's index in the World. Lower indexed
|
||||||
Systems are processed before higher indices. The <code>index</code> is a read only
|
Systems are processed before higher indices. The </code>index<code> is a read only
|
||||||
field; to set the <code>index</code>, use <code>tiny.setSystemIndex(world, system)</code>.</li>
|
field; to set the </code>index<code>, use </code>tiny.setSystemIndex(world, system)<code>.</li>
|
||||||
<li>The <code>indices</code> field is a table of Entity keys to their indices in the
|
<li>The </code>indices<code> field is a table of Entity keys to their indices in the
|
||||||
<code>entities</code> list. Most Systems can ignore this.</li>
|
</code>entities<code> list. Most Systems can ignore this.</li>
|
||||||
<li>The <code>modified</code> flag is an indicator if the System has been modified in
|
<li>The </code>modified<code> flag is an indicator if the System has been modified in
|
||||||
the last update. If so, the <code>onModify</code> callback will be called on the System
|
the last update. If so, the </code>onModify<code> callback will be called on the System
|
||||||
in the next update, if it has one. This is usually managed by tiny-ecs, so
|
in the next update, if it has one. This is usually managed by tiny-ecs, so
|
||||||
users should mostly ignore this, too.</li>
|
users should mostly ignore this, too.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<p> There is another option to (hopefully) increase performance in systems that
|
||||||
|
have items added to or removed from them often, and have lots of entities in
|
||||||
|
them. Setting the </code>nocache' field of the system might improve performance.
|
||||||
|
It is still experimental. There are some restriction to systems without
|
||||||
|
caching, however. * There is no <code>entities</code> table. * Callbacks such onAdd,
|
||||||
|
onRemove, and onModify will never be called * Noncached systems cannot be
|
||||||
|
sorted (There is no entities list to sort).
|
||||||
</div>
|
</div>
|
||||||
<dl class="function">
|
<dl class="function">
|
||||||
<dt>
|
<dt>
|
||||||
@@ -549,7 +564,7 @@ end
|
|||||||
<strong>tiny.removeEntity (world, entity)</strong>
|
<strong>tiny.removeEntity (world, entity)</strong>
|
||||||
</dt>
|
</dt>
|
||||||
<dd>
|
<dd>
|
||||||
Removes an Entity to the World. Returns the Entity.
|
Removes an Entity from the World. Returns the Entity.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -675,21 +690,6 @@ end
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
</dd>
|
|
||||||
<dt>
|
|
||||||
<a name = "tiny.getSystemIndex"></a>
|
|
||||||
<strong>tiny.getSystemIndex (world, system)</strong>
|
|
||||||
</dt>
|
|
||||||
<dd>
|
|
||||||
Gets the index of the System in the World.
|
|
||||||
A simpler alternative is <code>system.index</code>.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</dd>
|
</dd>
|
||||||
<dt>
|
<dt>
|
||||||
<a name = "tiny.setSystemIndex"></a>
|
<a name = "tiny.setSystemIndex"></a>
|
||||||
@@ -714,7 +714,7 @@ end
|
|||||||
</div> <!-- id="main" -->
|
</div> <!-- id="main" -->
|
||||||
<div id="about">
|
<div id="about">
|
||||||
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
|
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
|
||||||
<i style="float:right;">Last updated 2016-03-05 16:37:42 </i>
|
<i style="float:right;">Last updated 2016-08-10 21:34:56 </i>
|
||||||
</div> <!-- id="about" -->
|
</div> <!-- id="about" -->
|
||||||
</div> <!-- id="container" -->
|
</div> <!-- id="container" -->
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
Reference in New Issue
Block a user