Skip to content

Commit 837a0db

Browse files
committed
feat(多线程模式): finish article.md; update code; update umls;
1 parent 0e9a350 commit 837a0db

File tree

9 files changed

+245
-169
lines changed

9 files changed

+245
-169
lines changed

doc/TODO.org

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,10 +310,12 @@ finish TODO
310310
** DONE update article 1
311311

312312

313-
* TODO finish multithread pattern article
313+
* DONE finish multithread pattern article
314314

315315

316-
** TODO update article 1
316+
** DONE update article 1
317+
318+
去掉重复代码
317319

318320

319321
# * TODO 修改接口为type,《type》

doc/第三轮.org

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ xxx
5454

5555
而且前后需要承上启下,背景介绍清楚些,写作从容些
5656

57+
** TODO 将“之前”改为具体的引用
58+
59+
如将“之前”改为“第一个案例代码”
5760

5861
* TODO 修改代码
5962

doc/第五轮.org

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
* TODO 交稿给编辑老师,改错
1+
* TODO 交稿给编辑老师,改错(use markdown)
22

33

44

doc/第四轮.org

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
* TODO 修改结构,改成正式成书的结构
1+
* TODO 修改结构,改成正式成书的结构(use markdown)
22

33

44
* TODO 更新代码库,给出索引、how to run

packages/ECS模式/article.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ let worldState = createState()
6363
worldState = _createScene(worldState)
6464
```
6565

66-
我们首先创建了worldState,用来保存所有的数据;
66+
我们首先创建了WorldState,用来保存所有的数据;
6767
然后创建了场景,包括两个普通英雄和两个超级英雄,其中第一个普通英雄进行了移动,第一个超级英雄进行了移动和飞行
6868

6969

@@ -77,7 +77,7 @@ export let createState = (): worldState => {
7777
}
7878
```
7979

80-
createState函数创建并返回了worldState,它包括两个分别用来保存所有的normalHero和所有的superHero的容器-Hash Map
80+
createState函数创建并返回了WorldState,它包括两个分别用来保存所有的normalHero和所有的superHero的容器-Hash Map
8181

8282

8383

@@ -127,7 +127,7 @@ export let api = {
127127
我们将一个英雄的数据保存在一个state中,然后用一个索引与其关联。具体就是:
128128
normalHero、superHero其实就是一个number类型的id值
129129
normalHeroState、superHeroState分别保存了一个普通英雄、一个超级英雄的数据(比如position、velocity)
130-
normalHero与normalHeroState一一关联,这个关联体现在前者是worldState->normalHeros这个Hash Map的Key,后者是它的Value
130+
normalHero与normalHeroState一一关联,这个关联体现在前者是WorldState->normalHeros这个Hash Map的Key,后者是它的Value
131131
同理,superHero与superHeroState关联
132132

133133
World封装了操作Hero的API
@@ -392,7 +392,7 @@ OneByOne渲染 SuperHero...
392392
首先进行了初始化;
393393
然后更新了所有的人物,包括两个普通英雄和两个超级英雄;
394394
然后依次渲染了2个超级英雄,以及一次性批量渲染了所有的普通英雄;
395-
最后打印了worldState
395+
最后打印了WorldState
396396

397397
我们看到normalHeros中有一个的position为[2,2,2],说明该普通英雄进行了move操作;superHeros中有一个的position为[6,6,6],说明该超级英雄进行了move和fly操作
398398
normalHeros和superHeros中的Key因为是随机生成的id值,所以每次打印时值都不一样
@@ -525,7 +525,7 @@ export let createState = (): worldState => {
525525
}
526526
```
527527

528-
createState函数创建并返回了worldState,它现在是包括所有的GameObject的容器Hash Map
528+
createState函数创建并返回了WorldState,它现在是包括所有的GameObject的容器Hash Map
529529

530530

531531

@@ -577,7 +577,7 @@ export let api = {
577577
这里与之前一样,我们将一个GameObject的数据保存在一个state中,然后用一个索引与其关联。具体就是:
578578
gameObject其实就是一个number类型的id值,
579579
gameObjectState保存了一个GameObject的数据
580-
gameObject与gameObjectState一一关联,这个关联体现在前者是worldState->gameObjects这个Hash Map的Key,后者是它的Value
580+
gameObject与gameObjectState一一关联,这个关联体现在前者是WorldState->gameObjects这个Hash Map的Key,后者是它的Value
581581

582582
World封装了操作GameObject和组件的API
583583

@@ -865,10 +865,10 @@ OneByOne渲染 SuperHero...
865865
运行结果的步骤与之前一样
866866
不同之处在于:
867867
更新人物变为更新positionComponent;
868-
打印的worldState不一样
868+
打印的WorldState不一样
869869

870870

871-
我们看下打印的worldState
871+
我们看下打印的WorldState
872872
gameObjects包括了4个gameObject的数据;
873873
有一个gameObject的positionComponent的position为[2,2,2],说明该gameObject进行了move操作;
874874
有一个gameObject的positionComponent的position为[6,6,6],说明该gameObject进行了move和fly操作
@@ -931,7 +931,7 @@ World不再管理所有的gameObject,但是仍然实现了初始化和主循
931931

932932
我们看下System这一层:
933933
有多个System,每个System实现一个行为逻辑
934-
其中,CreateStateSystem实现创建worldState的逻辑,worldState包括了所有的Manager的state
934+
其中,CreateStateSystem实现创建WorldState的逻辑,WorldState包括了所有的Manager的state
935935
UpdateSystem实现更新所有人物的position的逻辑,具体是更新所有PositionComponent的position;
936936
MoveSystem实现一个人物的移动,具体是使用了挂载到该人物对应的 gameObject上的一个positionComponent和一个velocityComponent,更新了该positionComponent的position;
937937
FlySystem实现一个人物的飞行,具体是使用了挂载到该人物对应的gameObject上的一个positionComponent、一个velocityComponent、一个flyComponent,更新了该positionComponent的position;
@@ -976,7 +976,7 @@ Client代码:
976976
let worldState = createState({ positionComponentCount: 10, velocityComponentCount: 10, flyComponentCount: 10 })
977977
```
978978

979-
这里通过调用CreateStateSystem的createState函数来创建worldState
979+
这里通过调用CreateStateSystem的createState函数来创建WorldState
980980

981981
现在我们来看下CreateStateSystem的createState代码:
982982
```ts
@@ -991,7 +991,7 @@ export let createState = ({ positionComponentCount, velocityComponentCount, flyC
991991
}
992992
```
993993

994-
createState函数创建的worldState包括了各个Manager的state
994+
createState函数创建的WorldState包括了各个Manager的state
995995

996996
因为Data Oriented组件的state在创建时要创建包括该种组件的所有组件数据的ArrayBuffer,所以需要知道组件的最大个数,因此这里的createState函数接收了三种Data Oriented组件的最大个数
997997

@@ -1489,10 +1489,10 @@ OneByOne渲染 SuperHero...
14891489

14901490
运行结果的步骤与之前一样
14911491
不同之处在于:
1492-
打印的worldState不一样
1492+
打印的WorldState不一样
14931493

14941494

1495-
我们看下打印的worldState
1495+
我们看下打印的WorldState
14961496
gameObjectManagetState的maxUID为4,说明创建了4个gameObject;
14971497
positionComponentManagerState的maxIndex为4,说明创建了4个positionComponent;
14981498
positionComponentManagerState的positions有3个连续的值是2、2、2,说明进行了一次move操作;有另外3个连续的值是6、6、6,说明进行了一次move操作和一次fly操作;
@@ -1542,7 +1542,7 @@ Component+GameObject层为组件和GameObject,它们现在只是有一个numbe
15421542
下面的角色属于System层:
15431543

15441544
- CreateStateSystem
1545-
该角色负责创建worldState
1545+
该角色负责创建WorldState
15461546

15471547
- OtherSystem
15481548
该角色代表除了CreateStateSystem以外的System

0 commit comments

Comments
 (0)