ECS文档中补充例子

This commit is contained in:
dgflash
2022-09-05 14:55:15 +08:00
parent 4b62824d53
commit a1b24ff75e
11 changed files with 39 additions and 14 deletions

View File

@@ -209,6 +209,8 @@ export module ecs {
/**
* 动态查询实体
* @param matcher 匹配器
* @example
* ecs.query(ecs.allOf(Comp1, Comp2));
*/
export function query<E extends Entity = Entity>(matcher: IMatcher): E[] {
let group = ECSModel.groups.get(matcher.mid);
@@ -269,14 +271,18 @@ export module ecs {
* 表示只关心这些组件的添加和删除动作。虽然实体可能有这些组件之外的组件,但是它们的添加和删除没有被关注,所以不会存在对关注之外的组件
* 进行添加操作引发Group重复添加实体。
* @param args
* @example
* ecs.allOf(AComponent, BComponent, CComponent);
*/
export function allOf(...args: CompType<IComp>[]) {
return new ECSMatcher().allOf(...args);
}
/**
* 组件间是或的关系,表示关注拥有任意一个这些组件的实体
* 组件间是或的关系,表示关注拥有任意一个这些组件的实体
* @param args 组件类
* @example
* ecs.anyOf(AComponent, BComponent);
*/
export function anyOf(...args: CompType<IComp>[]) {
return new ECSMatcher().anyOf(...args);
@@ -286,6 +292,12 @@ export module ecs {
* 表示关注只拥有这些组件的实体
* 注不是特殊情况不建议使用onlyOf。因为onlyOf会监听所有组件的添加和删除事件
* @param args 组件类
* @example
// 不包含CComponent或者DComponent
ecs.allOf(AComponent, BComponent).excludeOf(CComponent, DComponent);
// 不同时包含CComponent和DComponent
ecs.allOf(AComponent, BComponent).excludeOf(CComponent).excludeOf(DComponent);
*/
export function onlyOf(...args: CompType<IComp>[]) {
return new ECSMatcher().onlyOf(...args);
@@ -295,7 +307,8 @@ export module ecs {
* 不包含指定的任意一个组件
* @param args 组件类
* @example
* ecs.excludeOf(A, B); // 表示不包含组件A或者组件B
// 表示不包含组件A或者组件B
ecs.excludeOf(A, B);
*/
export function excludeOf(...args: CompType<IComp>[]) {
return new ECSMatcher().excludeOf(...args);

View File

@@ -22,7 +22,7 @@
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">number</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in assets/libs/ecs/ECS.ts:246</li></ul></aside></li></ul></section></div>
<li>Defined in assets/libs/ecs/ECS.ts:248</li></ul></aside></li></ul></section></div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<div class="tsd-navigation settings">
<details class="tsd-index-accordion"><summary class="tsd-accordion-summary">

View File

@@ -27,7 +27,7 @@
<h5>obj: <a href="../interfaces/ecs.IComp.html" class="tsd-signature-type" data-tsd-kind="Interface">IComp</a></h5></li></ul></div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in assets/libs/ecs/ECS.ts:322</li></ul></aside></li></ul></section></div>
<li>Defined in assets/libs/ecs/ECS.ts:335</li></ul></aside></li></ul></section></div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<div class="tsd-navigation settings">
<details class="tsd-index-accordion"><summary class="tsd-accordion-summary">

View File

@@ -20,6 +20,9 @@
<li class="tsd-description">
<div class="tsd-comment tsd-typography"><p>表示只关心这些组件的添加和删除动作。虽然实体可能有这些组件之外的组件,但是它们的添加和删除没有被关注,所以不会存在对关注之外的组件
进行添加操作引发Group重复添加实体。</p>
<h3>Example</h3><pre><code class="language-ts"><span class="hl-0">ecs</span><span class="hl-1">.</span><span class="hl-7">allOf</span><span class="hl-1">(</span><span class="hl-0">AComponent</span><span class="hl-1">, </span><span class="hl-0">BComponent</span><span class="hl-1">, </span><span class="hl-0">CComponent</span><span class="hl-1">);</span>
</code></pre>
</div>
<div class="tsd-parameters">
<h4 class="tsd-parameters-title">Parameters</h4>
@@ -28,7 +31,7 @@
<h5><code class="tsd-tag ts-flagRest">Rest</code> <span class="tsd-signature-symbol">...</span>args: <a href="../types/ecs.CompType.html" class="tsd-signature-type" data-tsd-kind="Type alias">CompType</a><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ecs.IComp.html" class="tsd-signature-type" data-tsd-kind="Interface">IComp</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">[]</span></h5></li></ul></div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">ECSMatcher</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in assets/libs/ecs/ECS.ts:273</li></ul></aside></li></ul></section></div>
<li>Defined in assets/libs/ecs/ECS.ts:277</li></ul></aside></li></ul></section></div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<div class="tsd-navigation settings">
<details class="tsd-index-accordion"><summary class="tsd-accordion-summary">

View File

@@ -18,7 +18,10 @@
<ul class="tsd-signatures tsd-kind-function tsd-parent-kind-namespace">
<li class="tsd-signature tsd-anchor-link" id="anyOf">any<wbr/>Of<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span>args<span class="tsd-signature-symbol">: </span><a href="../types/ecs.CompType.html" class="tsd-signature-type" data-tsd-kind="Type alias">CompType</a><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ecs.IComp.html" class="tsd-signature-type" data-tsd-kind="Interface">IComp</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">ECSMatcher</span><a href="#anyOf" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none" id="icon-anchor-a"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5" id="icon-anchor-b"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5" id="icon-anchor-c"></path></svg></a></li>
<li class="tsd-description">
<div class="tsd-comment tsd-typography"><p>组件间是或的关系,表示关注拥有任意一个这些组件的实体</p>
<div class="tsd-comment tsd-typography"><p>组件间是或的关系,表示关注拥有任意一个这些组件的实体</p>
<h3>Example</h3><pre><code class="language-ts"><span class="hl-0">ecs</span><span class="hl-1">.</span><span class="hl-7">anyOf</span><span class="hl-1">(</span><span class="hl-0">AComponent</span><span class="hl-1">, </span><span class="hl-0">BComponent</span><span class="hl-1">);</span>
</code></pre>
</div>
<div class="tsd-parameters">
<h4 class="tsd-parameters-title">Parameters</h4>
@@ -29,7 +32,7 @@
</div></li></ul></div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">ECSMatcher</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in assets/libs/ecs/ECS.ts:281</li></ul></aside></li></ul></section></div>
<li>Defined in assets/libs/ecs/ECS.ts:287</li></ul></aside></li></ul></section></div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<div class="tsd-navigation settings">
<details class="tsd-index-accordion"><summary class="tsd-accordion-summary">

View File

@@ -22,7 +22,7 @@
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in assets/libs/ecs/ECS.ts:223</li></ul></aside></li></ul></section></div>
<li>Defined in assets/libs/ecs/ECS.ts:225</li></ul></aside></li></ul></section></div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<div class="tsd-navigation settings">
<details class="tsd-index-accordion"><summary class="tsd-accordion-summary">

View File

@@ -20,7 +20,7 @@
<li class="tsd-description">
<div class="tsd-comment tsd-typography"><p>不包含指定的任意一个组件</p>
<h3>Example</h3><pre><code class="language-ts"><span class="hl-0">ecs</span><span class="hl-1">.</span><span class="hl-7">excludeOf</span><span class="hl-1">(</span><span class="hl-8">A</span><span class="hl-1">, </span><span class="hl-8">B</span><span class="hl-1">); </span><span class="hl-3">// 表示不包含组件A或者组件B</span>
<h3>Example</h3><pre><code class="language-ts"><span class="hl-3">// 表示不包含组件A或者组件B</span><br/><span class="hl-0">ecs</span><span class="hl-1">.</span><span class="hl-7">excludeOf</span><span class="hl-1">(</span><span class="hl-8">A</span><span class="hl-1">, </span><span class="hl-8">B</span><span class="hl-1">);</span>
</code></pre>
</div>
<div class="tsd-parameters">
@@ -32,7 +32,7 @@
</div></li></ul></div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">ECSMatcher</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in assets/libs/ecs/ECS.ts:300</li></ul></aside></li></ul></section></div>
<li>Defined in assets/libs/ecs/ECS.ts:313</li></ul></aside></li></ul></section></div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<div class="tsd-navigation settings">
<details class="tsd-index-accordion"><summary class="tsd-accordion-summary">

View File

@@ -36,7 +36,7 @@
</div></li></ul></div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type" data-tsd-kind="Type parameter">E</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in assets/libs/ecs/ECS.ts:241</li></ul></aside></li></ul></section></div>
<li>Defined in assets/libs/ecs/ECS.ts:243</li></ul></aside></li></ul></section></div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<div class="tsd-navigation settings">
<details class="tsd-index-accordion"><summary class="tsd-accordion-summary">

View File

@@ -36,7 +36,7 @@
</div></li></ul></div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type" data-tsd-kind="Type parameter">T</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in assets/libs/ecs/ECS.ts:310</li></ul></aside></li></ul></section></div>
<li>Defined in assets/libs/ecs/ECS.ts:323</li></ul></aside></li></ul></section></div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<div class="tsd-navigation settings">
<details class="tsd-index-accordion"><summary class="tsd-accordion-summary">

View File

@@ -20,6 +20,9 @@
<li class="tsd-description">
<div class="tsd-comment tsd-typography"><p>表示关注只拥有这些组件的实体
不是特殊情况不建议使用onlyOf。因为onlyOf会监听所有组件的添加和删除事件</p>
<h3>Example</h3><pre><code class="language-ts"><span class="hl-3">// 不包含CComponent或者DComponent</span><br/><span class="hl-0">ecs</span><span class="hl-1">.</span><span class="hl-7">allOf</span><span class="hl-1">(</span><span class="hl-0">AComponent</span><span class="hl-1">, </span><span class="hl-0">BComponent</span><span class="hl-1">).</span><span class="hl-7">excludeOf</span><span class="hl-1">(</span><span class="hl-0">CComponent</span><span class="hl-1">, </span><span class="hl-0">DComponent</span><span class="hl-1">);</span><br/><br/><span class="hl-3">// 不同时包含CComponent和DComponent</span><br/><span class="hl-0">ecs</span><span class="hl-1">.</span><span class="hl-7">allOf</span><span class="hl-1">(</span><span class="hl-0">AComponent</span><span class="hl-1">, </span><span class="hl-0">BComponent</span><span class="hl-1">).</span><span class="hl-7">excludeOf</span><span class="hl-1">(</span><span class="hl-0">CComponent</span><span class="hl-1">).</span><span class="hl-7">excludeOf</span><span class="hl-1">(</span><span class="hl-0">DComponent</span><span class="hl-1">);</span>
</code></pre>
</div>
<div class="tsd-parameters">
<h4 class="tsd-parameters-title">Parameters</h4>
@@ -30,7 +33,7 @@
</div></li></ul></div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">ECSMatcher</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in assets/libs/ecs/ECS.ts:290</li></ul></aside></li></ul></section></div>
<li>Defined in assets/libs/ecs/ECS.ts:302</li></ul></aside></li></ul></section></div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<div class="tsd-navigation settings">
<details class="tsd-index-accordion"><summary class="tsd-accordion-summary">

View File

@@ -19,6 +19,9 @@
<li class="tsd-signature tsd-anchor-link" id="query">query<span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type" data-tsd-kind="Type parameter">E</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span>matcher<span class="tsd-signature-symbol">: </span><a href="../interfaces/ecs.IMatcher.html" class="tsd-signature-type" data-tsd-kind="Interface">IMatcher</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type" data-tsd-kind="Type parameter">E</span><span class="tsd-signature-symbol">[]</span><a href="#query" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none" id="icon-anchor-a"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5" id="icon-anchor-b"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5" id="icon-anchor-c"></path></svg></a></li>
<li class="tsd-description">
<div class="tsd-comment tsd-typography"><p>动态查询实体</p>
<h3>Example</h3><pre><code class="language-ts"><span class="hl-0">ecs</span><span class="hl-1">.</span><span class="hl-7">query</span><span class="hl-1">(</span><span class="hl-0">ecs</span><span class="hl-1">.</span><span class="hl-7">allOf</span><span class="hl-1">(</span><span class="hl-0">Comp1</span><span class="hl-1">, </span><span class="hl-0">Comp2</span><span class="hl-1">));</span>
</code></pre>
</div>
<div class="tsd-type-parameters">
<h4 class="tsd-type-parameters-title">Type Parameters</h4>
@@ -36,7 +39,7 @@
</div></li></ul></div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type" data-tsd-kind="Type parameter">E</span><span class="tsd-signature-symbol">[]</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in assets/libs/ecs/ECS.ts:213</li></ul></aside></li></ul></section></div>
<li>Defined in assets/libs/ecs/ECS.ts:215</li></ul></aside></li></ul></section></div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<div class="tsd-navigation settings">
<details class="tsd-index-accordion"><summary class="tsd-accordion-summary">