@dcl/ecs 1.0.0-20220511161823.commit-414f273 → 1.0.0-20220523140951.commit-feb588d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -5
- package/dist/components/generated/index.d.ts +2 -2
- package/dist/components/generated/index.d.ts.map +1 -1
- package/dist/components/generated/index.js.map +1 -1
- package/dist/components/index.d.ts +2 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/legacy/index.d.ts +2 -2
- package/dist/components/legacy/index.d.ts.map +1 -1
- package/dist/components/legacy/index.js.map +1 -1
- package/dist/ecs.api.json +2 -216
- package/dist/engine/index.d.ts +2 -20
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +2 -5
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/types.d.ts +18 -0
- package/dist/engine/types.d.ts.map +1 -1
- package/dist/engine/utils.d.ts.map +1 -1
- package/dist/engine/utils.js.map +1 -1
- package/dist/serialization/ByteBuffer/index.d.ts +12 -4
- package/dist/serialization/ByteBuffer/index.d.ts.map +1 -1
- package/dist/serialization/ByteBuffer/index.js +20 -6
- package/dist/serialization/ByteBuffer/index.js.map +1 -1
- package/dist/serialization/crdt/componentOperation.d.ts +3 -3
- package/dist/serialization/crdt/componentOperation.d.ts.map +1 -1
- package/dist/serialization/crdt/componentOperation.js +4 -4
- package/dist/serialization/crdt/componentOperation.js.map +1 -1
- package/dist/systems/crdt/index.d.ts +2 -7
- package/dist/systems/crdt/index.d.ts.map +1 -1
- package/dist/systems/crdt/index.js +116 -82
- package/dist/systems/crdt/index.js.map +1 -1
- package/dist/systems/crdt/transport.d.ts +8 -1
- package/dist/systems/crdt/transport.d.ts.map +1 -1
- package/dist/systems/crdt/transport.js +22 -4
- package/dist/systems/crdt/transport.js.map +1 -1
- package/dist/systems/crdt/types.d.ts +11 -0
- package/dist/systems/crdt/types.d.ts.map +1 -0
- package/dist/systems/crdt/types.js +3 -0
- package/dist/systems/crdt/types.js.map +1 -0
- package/dist/systems/crdt/utils.d.ts +2 -4
- package/dist/systems/crdt/utils.d.ts.map +1 -1
- package/dist/systems/crdt/utils.js +10 -9
- package/dist/systems/crdt/utils.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,14 +1,22 @@
|
|
|
1
|
-
#
|
|
1
|
+
# ECS 7
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## Installing dependencies
|
|
4
|
+
Run `make install`, this will run the `npm install` and other dependencies
|
|
5
|
+
|
|
6
|
+
## Building
|
|
7
|
+
Run `make build`
|
|
4
8
|
|
|
9
|
+
## Testing
|
|
10
|
+
Run `make test`, you can also debug the test in VS code, selecting the launch `Jest current file` or just `Jest` (this will run all test)
|
|
5
11
|
|
|
6
|
-
|
|
7
|
-
|
|
12
|
+
## Wishlist
|
|
13
|
+
Use this project as template for TypeScript libraries
|
|
14
|
+
- [x] as any MutableGroupOf
|
|
15
|
+
- [x] Tests for system
|
|
8
16
|
- [ ] use @dcl/ecs-math https://github.com/decentraland/ecs-math
|
|
9
17
|
- [ ] Basic Components ( Transform ) w/Tests
|
|
10
18
|
- [ ] Sync Component W/Tests
|
|
11
|
-
- [
|
|
19
|
+
- [x] CRDT System
|
|
12
20
|
- [ ] Kindof Scene Tests. Component & Systems. Maybe physics system? SolarSystem
|
|
13
21
|
- [ ] Integration with old ecs ( CRDT/Door Scene )
|
|
14
22
|
- [ ] RPC Transport. JSON { entityId, componentId, data: } vs Protocol Buffers
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function defineProtocolBufferComponents({ defineComponent }: Pick<
|
|
1
|
+
import type { IEngine } from '../../engine/types';
|
|
2
|
+
export declare function defineProtocolBufferComponents({ defineComponent }: Pick<IEngine, 'defineComponent'>): {
|
|
3
3
|
BoxShape: import("../../engine/component").ComponentDefinition<import("../../built-in-types").EcsType<import("./pb/BoxShape").PBBoxShape>>;
|
|
4
4
|
};
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/generated/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/generated/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAEjD,wBAAgB,8BAA8B,CAAC,EAC7C,eAAe,EAChB,EAAE,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC;;EAIlC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/generated/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAsC;AAGtC,SAAgB,8BAA8B,CAAC,EAC7C,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/generated/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAsC;AAGtC,SAAgB,8BAA8B,CAAC,EAC7C,eAAe,EACkB;IACjC,OAAO;QACL,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC;KACpE,CAAA;AACH,CAAC;AAND,wEAMC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { IEngine } from '../engine/types';
|
|
2
2
|
export * from './types';
|
|
3
|
-
export declare function defineSdkComponents(engine: Pick<
|
|
3
|
+
export declare function defineSdkComponents(engine: Pick<IEngine, 'defineComponent'>): {
|
|
4
4
|
BoxShape: import("../engine/component").ComponentDefinition<import("../built-in-types").EcsType<import("./generated/pb/BoxShape").PBBoxShape>>;
|
|
5
5
|
Transform: import("../engine/component").ComponentDefinition<import("../built-in-types").EcsType<{
|
|
6
6
|
position: import("@dcl/ecs-math").Vector3.MutableVector3;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAE9C,cAAc,SAAS,CAAA;AAEvB,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC;;;;;;;;EAI3E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qCAAiD;AAGjD,0CAAuB;AAEvB,SAAgB,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qCAAiD;AAGjD,0CAAuB;AAEvB,SAAgB,mBAAmB,CAAC,MAAwC;IAC1E,OAAO;QACL,GAAG,IAAA,+BAAsB,EAAC,MAAM,CAAC;KAClC,CAAA;AACH,CAAC;AAJD,kDAIC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function defineLegacyComponents({ defineComponent }: Pick<
|
|
1
|
+
import type { IEngine } from '../../engine/types';
|
|
2
|
+
export declare function defineLegacyComponents({ defineComponent }: Pick<IEngine, 'defineComponent'>): {
|
|
3
3
|
BoxShape: import("../../engine/component").ComponentDefinition<import("../../built-in-types").EcsType<import("../generated/pb/BoxShape").PBBoxShape>>;
|
|
4
4
|
Transform: import("../../engine/component").ComponentDefinition<import("../../built-in-types").EcsType<{
|
|
5
5
|
position: import("@dcl/ecs-math").Vector3.MutableVector3;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/legacy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/legacy/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAKjD,wBAAgB,sBAAsB,CAAC,EACrC,eAAe,EAChB,EAAE,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC;;;;;;;;EAKlC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/legacy/index.ts"],"names":[],"mappings":";;;AACA,4CAA6D;AAC7D,2CAA0D;AAC1D,mCAAmD;AAEnD,SAAgB,sBAAsB,CAAC,EACrC,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/legacy/index.ts"],"names":[],"mappings":";;;AACA,4CAA6D;AAC7D,2CAA0D;AAC1D,mCAAmD;AAEnD,SAAgB,sBAAsB,CAAC,EACrC,eAAe,EACkB;IACjC,OAAO;QACL,SAAS,EAAE,eAAe,CAAC,2BAAE,CAAC,SAAS,EAAE,qBAAe,CAAC;QACzD,GAAG,IAAA,0CAA8B,EAAC,EAAE,eAAe,EAAE,CAAC;KACvD,CAAA;AACH,CAAC;AAPD,wDAOC"}
|
package/dist/ecs.api.json
CHANGED
|
@@ -181,8 +181,8 @@
|
|
|
181
181
|
},
|
|
182
182
|
{
|
|
183
183
|
"kind": "Reference",
|
|
184
|
-
"text": "
|
|
185
|
-
"canonicalReference": "@dcl/ecs!
|
|
184
|
+
"text": "IEngine",
|
|
185
|
+
"canonicalReference": "@dcl/ecs!IEngine:type"
|
|
186
186
|
},
|
|
187
187
|
{
|
|
188
188
|
"kind": "Content",
|
|
@@ -197,220 +197,6 @@
|
|
|
197
197
|
"overloadIndex": 1,
|
|
198
198
|
"parameters": [],
|
|
199
199
|
"name": "Engine"
|
|
200
|
-
},
|
|
201
|
-
{
|
|
202
|
-
"kind": "TypeAlias",
|
|
203
|
-
"canonicalReference": "@dcl/ecs!Engine:type",
|
|
204
|
-
"docComment": "/**\n * @public\n */\n",
|
|
205
|
-
"excerptTokens": [
|
|
206
|
-
{
|
|
207
|
-
"kind": "Content",
|
|
208
|
-
"text": "export declare type Engine = "
|
|
209
|
-
},
|
|
210
|
-
{
|
|
211
|
-
"kind": "Content",
|
|
212
|
-
"text": "{\n addEntity(dynamic?: boolean): "
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
"kind": "Reference",
|
|
216
|
-
"text": "Entity",
|
|
217
|
-
"canonicalReference": "@dcl/ecs!Entity:type"
|
|
218
|
-
},
|
|
219
|
-
{
|
|
220
|
-
"kind": "Content",
|
|
221
|
-
"text": ";\n addDynamicEntity(): "
|
|
222
|
-
},
|
|
223
|
-
{
|
|
224
|
-
"kind": "Reference",
|
|
225
|
-
"text": "Entity",
|
|
226
|
-
"canonicalReference": "@dcl/ecs!Entity:type"
|
|
227
|
-
},
|
|
228
|
-
{
|
|
229
|
-
"kind": "Content",
|
|
230
|
-
"text": ";\n removeEntity(entity: "
|
|
231
|
-
},
|
|
232
|
-
{
|
|
233
|
-
"kind": "Reference",
|
|
234
|
-
"text": "Entity",
|
|
235
|
-
"canonicalReference": "@dcl/ecs!Entity:type"
|
|
236
|
-
},
|
|
237
|
-
{
|
|
238
|
-
"kind": "Content",
|
|
239
|
-
"text": "): void;\n addSystem(system: "
|
|
240
|
-
},
|
|
241
|
-
{
|
|
242
|
-
"kind": "Reference",
|
|
243
|
-
"text": "Update",
|
|
244
|
-
"canonicalReference": "@dcl/ecs!Update:type"
|
|
245
|
-
},
|
|
246
|
-
{
|
|
247
|
-
"kind": "Content",
|
|
248
|
-
"text": "): void;\n defineComponent<T extends "
|
|
249
|
-
},
|
|
250
|
-
{
|
|
251
|
-
"kind": "Reference",
|
|
252
|
-
"text": "EcsType",
|
|
253
|
-
"canonicalReference": "@dcl/ecs!EcsType:type"
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
"kind": "Content",
|
|
257
|
-
"text": ">(componentId: number, spec: T): "
|
|
258
|
-
},
|
|
259
|
-
{
|
|
260
|
-
"kind": "Reference",
|
|
261
|
-
"text": "ComponentDefinition",
|
|
262
|
-
"canonicalReference": "@dcl/ecs!ComponentDefinition:type"
|
|
263
|
-
},
|
|
264
|
-
{
|
|
265
|
-
"kind": "Content",
|
|
266
|
-
"text": "<T>;\n mutableGroupOf<T extends ["
|
|
267
|
-
},
|
|
268
|
-
{
|
|
269
|
-
"kind": "Reference",
|
|
270
|
-
"text": "ComponentDefinition",
|
|
271
|
-
"canonicalReference": "@dcl/ecs!ComponentDefinition:type"
|
|
272
|
-
},
|
|
273
|
-
{
|
|
274
|
-
"kind": "Content",
|
|
275
|
-
"text": ", ..."
|
|
276
|
-
},
|
|
277
|
-
{
|
|
278
|
-
"kind": "Reference",
|
|
279
|
-
"text": "ComponentDefinition",
|
|
280
|
-
"canonicalReference": "@dcl/ecs!ComponentDefinition:type"
|
|
281
|
-
},
|
|
282
|
-
{
|
|
283
|
-
"kind": "Content",
|
|
284
|
-
"text": "[]]>(...components: T): "
|
|
285
|
-
},
|
|
286
|
-
{
|
|
287
|
-
"kind": "Reference",
|
|
288
|
-
"text": "Iterable",
|
|
289
|
-
"canonicalReference": "!Iterable:interface"
|
|
290
|
-
},
|
|
291
|
-
{
|
|
292
|
-
"kind": "Content",
|
|
293
|
-
"text": "<["
|
|
294
|
-
},
|
|
295
|
-
{
|
|
296
|
-
"kind": "Reference",
|
|
297
|
-
"text": "Entity",
|
|
298
|
-
"canonicalReference": "@dcl/ecs!Entity:type"
|
|
299
|
-
},
|
|
300
|
-
{
|
|
301
|
-
"kind": "Content",
|
|
302
|
-
"text": ", ..."
|
|
303
|
-
},
|
|
304
|
-
{
|
|
305
|
-
"kind": "Reference",
|
|
306
|
-
"text": "ComponentEcsType",
|
|
307
|
-
"canonicalReference": "@dcl/ecs!ComponentEcsType:type"
|
|
308
|
-
},
|
|
309
|
-
{
|
|
310
|
-
"kind": "Content",
|
|
311
|
-
"text": "<T>]>;\n groupOf<T extends ["
|
|
312
|
-
},
|
|
313
|
-
{
|
|
314
|
-
"kind": "Reference",
|
|
315
|
-
"text": "ComponentDefinition",
|
|
316
|
-
"canonicalReference": "@dcl/ecs!ComponentDefinition:type"
|
|
317
|
-
},
|
|
318
|
-
{
|
|
319
|
-
"kind": "Content",
|
|
320
|
-
"text": ", ..."
|
|
321
|
-
},
|
|
322
|
-
{
|
|
323
|
-
"kind": "Reference",
|
|
324
|
-
"text": "ComponentDefinition",
|
|
325
|
-
"canonicalReference": "@dcl/ecs!ComponentDefinition:type"
|
|
326
|
-
},
|
|
327
|
-
{
|
|
328
|
-
"kind": "Content",
|
|
329
|
-
"text": "[]]>(...components: T): "
|
|
330
|
-
},
|
|
331
|
-
{
|
|
332
|
-
"kind": "Reference",
|
|
333
|
-
"text": "Iterable",
|
|
334
|
-
"canonicalReference": "!Iterable:interface"
|
|
335
|
-
},
|
|
336
|
-
{
|
|
337
|
-
"kind": "Content",
|
|
338
|
-
"text": "<["
|
|
339
|
-
},
|
|
340
|
-
{
|
|
341
|
-
"kind": "Reference",
|
|
342
|
-
"text": "Entity",
|
|
343
|
-
"canonicalReference": "@dcl/ecs!Entity:type"
|
|
344
|
-
},
|
|
345
|
-
{
|
|
346
|
-
"kind": "Content",
|
|
347
|
-
"text": ", ..."
|
|
348
|
-
},
|
|
349
|
-
{
|
|
350
|
-
"kind": "Reference",
|
|
351
|
-
"text": "DeepReadonly",
|
|
352
|
-
"canonicalReference": "@dcl/ecs!DeepReadonly:type"
|
|
353
|
-
},
|
|
354
|
-
{
|
|
355
|
-
"kind": "Content",
|
|
356
|
-
"text": "<"
|
|
357
|
-
},
|
|
358
|
-
{
|
|
359
|
-
"kind": "Reference",
|
|
360
|
-
"text": "ComponentEcsType",
|
|
361
|
-
"canonicalReference": "@dcl/ecs!ComponentEcsType:type"
|
|
362
|
-
},
|
|
363
|
-
{
|
|
364
|
-
"kind": "Content",
|
|
365
|
-
"text": "<T>>]>;\n getComponent<T extends "
|
|
366
|
-
},
|
|
367
|
-
{
|
|
368
|
-
"kind": "Reference",
|
|
369
|
-
"text": "EcsType",
|
|
370
|
-
"canonicalReference": "@dcl/ecs!EcsType:type"
|
|
371
|
-
},
|
|
372
|
-
{
|
|
373
|
-
"kind": "Content",
|
|
374
|
-
"text": ">(componentId: number): "
|
|
375
|
-
},
|
|
376
|
-
{
|
|
377
|
-
"kind": "Reference",
|
|
378
|
-
"text": "ComponentDefinition",
|
|
379
|
-
"canonicalReference": "@dcl/ecs!ComponentDefinition:type"
|
|
380
|
-
},
|
|
381
|
-
{
|
|
382
|
-
"kind": "Content",
|
|
383
|
-
"text": "<T>;\n update(dt: number): void;\n baseComponents: "
|
|
384
|
-
},
|
|
385
|
-
{
|
|
386
|
-
"kind": "Reference",
|
|
387
|
-
"text": "ReturnType",
|
|
388
|
-
"canonicalReference": "!ReturnType:type"
|
|
389
|
-
},
|
|
390
|
-
{
|
|
391
|
-
"kind": "Content",
|
|
392
|
-
"text": "<typeof "
|
|
393
|
-
},
|
|
394
|
-
{
|
|
395
|
-
"kind": "Reference",
|
|
396
|
-
"text": "defineSdkComponents",
|
|
397
|
-
"canonicalReference": "@dcl/ecs!defineSdkComponents:function"
|
|
398
|
-
},
|
|
399
|
-
{
|
|
400
|
-
"kind": "Content",
|
|
401
|
-
"text": ">;\n}"
|
|
402
|
-
},
|
|
403
|
-
{
|
|
404
|
-
"kind": "Content",
|
|
405
|
-
"text": ";"
|
|
406
|
-
}
|
|
407
|
-
],
|
|
408
|
-
"releaseTag": "Public",
|
|
409
|
-
"name": "Engine",
|
|
410
|
-
"typeTokenRange": {
|
|
411
|
-
"startIndex": 1,
|
|
412
|
-
"endIndex": 44
|
|
413
|
-
}
|
|
414
200
|
}
|
|
415
201
|
]
|
|
416
202
|
}
|
package/dist/engine/index.d.ts
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import { defineSdkComponents } from '../components';
|
|
2
1
|
import { Entity } from './entity';
|
|
3
2
|
import { ComponentDefinition } from './component';
|
|
4
3
|
import { ComponentEcsType, Update, DeepReadonly } from './types';
|
|
5
4
|
import { EcsType } from '../built-in-types';
|
|
6
|
-
|
|
7
|
-
* @alpha
|
|
8
|
-
*/
|
|
5
|
+
import { IEngine } from './types';
|
|
9
6
|
declare function preEngine(): {
|
|
10
7
|
entitiesComponent: Map<number, Set<number>>;
|
|
11
8
|
componentsDefinition: Map<number, ComponentDefinition<any>>;
|
|
@@ -26,21 +23,6 @@ export declare type PreEngine = ReturnType<typeof preEngine>;
|
|
|
26
23
|
/**
|
|
27
24
|
* @public
|
|
28
25
|
*/
|
|
29
|
-
export declare
|
|
30
|
-
addEntity(dynamic?: boolean): Entity;
|
|
31
|
-
addDynamicEntity(): Entity;
|
|
32
|
-
removeEntity(entity: Entity): void;
|
|
33
|
-
addSystem(system: Update): void;
|
|
34
|
-
defineComponent<T extends EcsType>(componentId: number, spec: T): ComponentDefinition<T>;
|
|
35
|
-
mutableGroupOf<T extends [ComponentDefinition, ...ComponentDefinition[]]>(...components: T): Iterable<[Entity, ...ComponentEcsType<T>]>;
|
|
36
|
-
groupOf<T extends [ComponentDefinition, ...ComponentDefinition[]]>(...components: T): Iterable<[Entity, ...DeepReadonly<ComponentEcsType<T>>]>;
|
|
37
|
-
getComponent<T extends EcsType>(componentId: number): ComponentDefinition<T>;
|
|
38
|
-
update(dt: number): void;
|
|
39
|
-
baseComponents: ReturnType<typeof defineSdkComponents>;
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* @public
|
|
43
|
-
*/
|
|
44
|
-
export declare function Engine(): Engine;
|
|
26
|
+
export declare function Engine(): IEngine;
|
|
45
27
|
export {};
|
|
46
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAmB,MAAM,UAAU,CAAA;AAClD,OAAO,EACL,mBAAmB,EAEpB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,iBAAS,SAAS;;;;0BAkBY,OAAO;;2BAUL,MAAM;oBAjBb,MAAM;2DA6Bd,MAAM;;;0DAYN,MAAM;EAiEtB;AAED;;GAEG;AACH,oBAAY,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAA;AAEpD;;GAEG;AACH,wBAAgB,MAAM,IAAI,OAAO,CA2ChC"}
|
package/dist/engine/index.js
CHANGED
|
@@ -5,9 +5,6 @@ const components_1 = require("../components");
|
|
|
5
5
|
const crdt_1 = require("../systems/crdt");
|
|
6
6
|
const entity_1 = require("./entity");
|
|
7
7
|
const component_1 = require("./component");
|
|
8
|
-
/**
|
|
9
|
-
* @alpha
|
|
10
|
-
*/
|
|
11
8
|
function preEngine() {
|
|
12
9
|
const entityContainer = (0, entity_1.EntityContainer)();
|
|
13
10
|
const componentsDefinition = new Map();
|
|
@@ -101,7 +98,7 @@ function Engine() {
|
|
|
101
98
|
const crdtSystem = (0, crdt_1.crdtSceneSystem)(engine);
|
|
102
99
|
const baseComponents = (0, components_1.defineSdkComponents)(engine);
|
|
103
100
|
function update(dt) {
|
|
104
|
-
crdtSystem.
|
|
101
|
+
crdtSystem.receiveMessages();
|
|
105
102
|
for (const system of engine.systems) {
|
|
106
103
|
system(dt);
|
|
107
104
|
}
|
|
@@ -117,7 +114,7 @@ function Engine() {
|
|
|
117
114
|
dirtySet.get(entity).add(componentId);
|
|
118
115
|
}
|
|
119
116
|
}
|
|
120
|
-
crdtSystem.
|
|
117
|
+
crdtSystem.createMessages(dirtySet);
|
|
121
118
|
for (const [_componentId, definition] of engine.componentsDefinition) {
|
|
122
119
|
definition.clearDirty();
|
|
123
120
|
}
|
package/dist/engine/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":";;;AAAA,8CAAmD;AACnD,0CAAiD;AACjD,qCAAkD;AAClD,2CAGoB;AAIpB
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/types.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { EcsType } from '../built-in-types';
|
|
2
|
+
import { defineSdkComponents } from '../components';
|
|
1
3
|
import { ComponentDefinition as CompDef } from './component';
|
|
4
|
+
import { Entity } from './entity';
|
|
2
5
|
export declare type Unpacked<T> = T extends (infer U)[] ? U : T;
|
|
3
6
|
export declare type Update = (dt: number) => void;
|
|
4
7
|
export declare type ComponentEcsType<T extends [CompDef, ...CompDef[]]> = {
|
|
@@ -7,4 +10,19 @@ export declare type ComponentEcsType<T extends [CompDef, ...CompDef[]]> = {
|
|
|
7
10
|
export declare type DeepReadonly<T> = {
|
|
8
11
|
readonly [K in keyof T]: DeepReadonly<T[K]>;
|
|
9
12
|
};
|
|
13
|
+
/**
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
export declare type IEngine = {
|
|
17
|
+
addEntity(dynamic?: boolean): Entity;
|
|
18
|
+
addDynamicEntity(): Entity;
|
|
19
|
+
removeEntity(entity: Entity): void;
|
|
20
|
+
addSystem(system: Update): void;
|
|
21
|
+
defineComponent<T extends EcsType>(componentId: number, spec: T): CompDef<T>;
|
|
22
|
+
mutableGroupOf<T extends [CompDef, ...CompDef[]]>(...components: T): Iterable<[Entity, ...ComponentEcsType<T>]>;
|
|
23
|
+
groupOf<T extends [CompDef, ...CompDef[]]>(...components: T): Iterable<[Entity, ...DeepReadonly<ComponentEcsType<T>>]>;
|
|
24
|
+
getComponent<T extends EcsType>(componentId: number): CompDef<T>;
|
|
25
|
+
update(dt: number): void;
|
|
26
|
+
baseComponents: ReturnType<typeof defineSdkComponents>;
|
|
27
|
+
};
|
|
10
28
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,mBAAmB,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,oBAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;AACvD,oBAAY,MAAM,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;AAEzC,oBAAY,gBAAgB,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,IAAI;KAC/D,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK;CAC3E,CAAA;AAED,oBAAY,YAAY,CAAC,CAAC,IAAI;IAC5B,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5C,CAAA;AAED;;GAEG;AACH,oBAAY,OAAO,GAAG;IACpB,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IACpC,gBAAgB,IAAI,MAAM,CAAA;IAC1B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAC5E,cAAc,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,EAC9C,GAAG,UAAU,EAAE,CAAC,GACf,QAAQ,CAAC,CAAC,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7C,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,EACvC,GAAG,UAAU,EAAE,CAAC,GACf,QAAQ,CAAC,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3D,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAChE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,cAAc,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAA;CACvD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/engine/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAItC,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5D,GAAG,EAAE,CAAC,GACL,YAAY,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/engine/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAItC,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5D,GAAG,EAAE,CAAC,GACL,YAAY,CAAC,CAAC,CAAC,CAOjB;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,GAAG,GAAG,IAAI,CAAC,CAE9D"}
|
package/dist/engine/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/engine/utils.ts"],"names":[],"mappings":";;;AAEA,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,KAAK,CAAA;AAEtD,SAAgB,YAAY,CAC1B,GAAM;IAEN,8CAA8C;IAC9C,IAAI,MAAM,EAAE,EAAE;QACZ,OAAO,GAAG,CAAA;KACX;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/engine/utils.ts"],"names":[],"mappings":";;;AAEA,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,KAAK,CAAA;AAEtD,SAAgB,YAAY,CAC1B,GAAM;IAEN,8CAA8C;IAC9C,IAAI,MAAM,EAAE,EAAE;QACZ,OAAO,GAAG,CAAA;KACX;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAA;AAClC,CAAC;AATD,oCASC;AAED,SAAgB,cAAc,CAAI,GAAkB;IAClD,OAAO,CAAC,CAAC,GAAG,CAAA;AACd,CAAC;AAFD,wCAEC"}
|
|
@@ -44,14 +44,22 @@ export declare function createByteBuffer(options?: CreateByteBufferOptions): {
|
|
|
44
44
|
*/
|
|
45
45
|
bufferLength(): number;
|
|
46
46
|
/**
|
|
47
|
-
*
|
|
48
|
-
* Returns the previuos offsset size before incrementing
|
|
47
|
+
* Resets byteBuffer to avoid creating a new one
|
|
49
48
|
*/
|
|
50
|
-
|
|
49
|
+
resetBuffer(): void;
|
|
51
50
|
/**
|
|
52
|
-
* @returns The current read offset
|
|
51
|
+
* @returns The current read offset
|
|
53
52
|
*/
|
|
54
53
|
currentReadOffset(): number;
|
|
54
|
+
/**
|
|
55
|
+
* @returns The current write offset
|
|
56
|
+
*/
|
|
57
|
+
currentWriteOffset(): number;
|
|
58
|
+
/**
|
|
59
|
+
* Reading purpose
|
|
60
|
+
* Returns the previuos offsset size before incrementing
|
|
61
|
+
*/
|
|
62
|
+
incrementReadOffset(amount: number): number;
|
|
55
63
|
/**
|
|
56
64
|
* @returns How many bytes are available to read.
|
|
57
65
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/serialization/ByteBuffer/index.ts"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,UAAU,CAAA;QAClB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;IAED;;;OAGG;IACH,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,UAAU,CAAA;QAClB,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;IAED,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B;IAsDlE;;;;;OAKG;cACO,UAAU;IAGpB;;OAEG;oBACa,MAAM;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/serialization/ByteBuffer/index.ts"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,UAAU,CAAA;QAClB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;IAED;;;OAGG;IACH,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,UAAU,CAAA;QAClB,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;IAED,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B;IAsDlE;;;;;OAKG;cACO,UAAU;IAGpB;;OAEG;oBACa,MAAM;IAGtB;;OAEG;mBACY,IAAI;IAInB;;OAEG;yBACkB,MAAM;IAG3B;;OAEG;0BACmB,MAAM;IAG5B;;;OAGG;gCACyB,MAAM,GAAG,MAAM;IAG3C;;OAEG;sBACe,MAAM;mBAGT,MAAM;mBAGN,MAAM;gBAGT,MAAM;iBAGL,MAAM;iBAGN,MAAM;iBAGN,MAAM;iBAGN,MAAM;kBAGL,MAAM;kBAGN,MAAM;kBAGN,MAAM;;IAOpB;;OAEG;IACH;;;;OAIG;iCAC0B,MAAM,GAAG,MAAM;IAG5C;;OAEG;YACK,MAAM;IAGd;;OAEG;;uBAIgB,UAAU,gBAAe,OAAO;wBAS/B,MAAM,GAAG,IAAI;wBAIb,MAAM,GAAG,IAAI;qBAIhB,MAAM,GAAG,IAAI;sBAIZ,MAAM,GAAG,IAAI;sBAIb,MAAM,GAAG,IAAI;sBAIb,MAAM,GAAG,IAAI;sBAIb,MAAM,GAAG,IAAI;uBAIZ,MAAM,GAAG,IAAI;uBAIb,MAAM,GAAG,IAAI;uBAIb,MAAM,GAAG,IAAI;uBAKb,MAAM,GAAG,MAAM;uBAGf,MAAM,GAAG,MAAM;oBAGlB,MAAM,GAAG,MAAM;qBAGd,MAAM,GAAG,MAAM;qBAGf,MAAM,GAAG,MAAM;qBAGf,MAAM,GAAG,MAAM;qBAGf,MAAM,GAAG,MAAM;sBAGd,MAAM,GAAG,MAAM;sBAGf,MAAM,GAAG,MAAM;sBAGf,MAAM,GAAG,MAAM;uBAGd,MAAM,SAAS,MAAM,GAAG,IAAI;uBAG5B,MAAM,SAAS,MAAM,GAAG,IAAI;oBAG/B,MAAM,SAAS,MAAM,GAAG,IAAI;qBAG3B,MAAM,SAAS,MAAM,GAAG,IAAI;qBAG5B,MAAM,SAAS,MAAM,GAAG,IAAI;qBAG5B,MAAM,SAAS,MAAM,GAAG,IAAI;qBAG5B,MAAM,SAAS,MAAM,GAAG,IAAI;sBAG3B,MAAM,SAAS,MAAM,GAAG,IAAI;sBAG5B,MAAM,SAAS,MAAM,GAAG,IAAI;sBAG5B,MAAM,SAAS,MAAM,GAAG,IAAI;EAIjD;AAED,oBAAY,UAAU,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAA"}
|
|
@@ -83,18 +83,31 @@ function createByteBuffer(options = {}) {
|
|
|
83
83
|
return buffer.length;
|
|
84
84
|
},
|
|
85
85
|
/**
|
|
86
|
-
*
|
|
87
|
-
* Returns the previuos offsset size before incrementing
|
|
86
|
+
* Resets byteBuffer to avoid creating a new one
|
|
88
87
|
*/
|
|
89
|
-
|
|
90
|
-
|
|
88
|
+
resetBuffer() {
|
|
89
|
+
roffset = 0;
|
|
90
|
+
woffset = 0;
|
|
91
91
|
},
|
|
92
92
|
/**
|
|
93
|
-
* @returns The current read offset
|
|
93
|
+
* @returns The current read offset
|
|
94
94
|
*/
|
|
95
95
|
currentReadOffset() {
|
|
96
96
|
return roffset;
|
|
97
97
|
},
|
|
98
|
+
/**
|
|
99
|
+
* @returns The current write offset
|
|
100
|
+
*/
|
|
101
|
+
currentWriteOffset() {
|
|
102
|
+
return woffset;
|
|
103
|
+
},
|
|
104
|
+
/**
|
|
105
|
+
* Reading purpose
|
|
106
|
+
* Returns the previuos offsset size before incrementing
|
|
107
|
+
*/
|
|
108
|
+
incrementReadOffset(amount) {
|
|
109
|
+
return roAdd(amount);
|
|
110
|
+
},
|
|
98
111
|
/**
|
|
99
112
|
* @returns How many bytes are available to read.
|
|
100
113
|
*/
|
|
@@ -162,7 +175,8 @@ function createByteBuffer(options = {}) {
|
|
|
162
175
|
if (writeLength) {
|
|
163
176
|
this.writeUint32(value.byteLength);
|
|
164
177
|
}
|
|
165
|
-
|
|
178
|
+
// TODO: lean
|
|
179
|
+
const o = woAdd(value.byteLength);
|
|
166
180
|
buffer.set(value, o);
|
|
167
181
|
},
|
|
168
182
|
writeFloat32(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/serialization/ByteBuffer/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,WAAmB,EAAE,YAAoB;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAA;IAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;AAC5C,CAAC;AA+BD,MAAM,sBAAsB,GAAG,KAAK,CAAA;AAEpC;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAC,UAAmC,EAAE;IACpE,MAAM,cAAc,GAAW,OAAO,CAAC,OAAO,EAAE,aAAa,IAAI,CAAC,CAAA;IAClE,IAAI,aAAa,GAAsB,IAAI,CAAA;IAC3C,IAAI,cAAc,GAAW,CAAC,CAAA;IAE9B,IAAI,OAAO,CAAC,OAAO,EAAE;QACnB,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAA;QACtC,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE;YACjC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAA;SAC/C;KACF;SAAM,IAAI,OAAO,CAAC,OAAO,EAAE;QAC1B,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAA;QACtC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAA;KACzE;SAAM;QACL,aAAa,GAAG,IAAI,UAAU,CAC5B,OAAO,CAAC,eAAe,IAAI,sBAAsB,CAClD,CAAA;KACF;IAED,IAAI,MAAM,GAAe,aAAc,CAAA;IACvC,IAAI,IAAI,GAAa,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IACnE,IAAI,OAAO,GAAW,cAAc,CAAA;IACpC,IAAI,OAAO,GAAW,cAAc,CAAA;IAEpC;;OAEG;IACH,MAAM,KAAK,GAAG,CAAC,MAAc,EAAE,EAAE;QAC/B,IAAI,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE;YACxC,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAAC,CAAA;YAChE,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;YACzC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACrB,MAAM,GAAG,SAAS,CAAA;YAClB,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;SACnC;QAED,OAAO,IAAI,MAAM,CAAA;QACjB,OAAO,OAAO,GAAG,MAAM,CAAA;IACzB,CAAC,CAAA;IAED;;;OAGG;IACH,MAAM,KAAK,GAAG,CAAC,MAAc,EAAE,EAAE;QAC/B,IAAI,OAAO,GAAG,MAAM,GAAG,OAAO,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;SACzD;QAED,OAAO,IAAI,MAAM,CAAA;QACjB,OAAO,OAAO,GAAG,MAAM,CAAA;IACzB,CAAC,CAAA;IAED,OAAO;QACL;;;;;WAKG;QACH,MAAM;YACJ,OAAO,MAAM,CAAA;QACf,CAAC;QACD;;WAEG;QACH,YAAY;YACV,OAAO,MAAM,CAAC,MAAM,CAAA;QACtB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/serialization/ByteBuffer/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,13 +4,13 @@ import { ByteBuffer } from '../ByteBuffer';
|
|
|
4
4
|
import WireMessage from '../wireMessage';
|
|
5
5
|
export declare namespace PutComponentOperation {
|
|
6
6
|
/**
|
|
7
|
-
* @param
|
|
7
|
+
* @param entity - Uint32 number of the entity
|
|
8
8
|
* @param componentId - Uint32 number of id
|
|
9
9
|
* @param timestamp - Uint64 Lamport timestamp
|
|
10
10
|
* @param data - Uint8[] data of component
|
|
11
11
|
*/
|
|
12
12
|
type Type = {
|
|
13
|
-
|
|
13
|
+
entity: Entity;
|
|
14
14
|
componentId: number;
|
|
15
15
|
timestamp: number;
|
|
16
16
|
data: Uint8Array;
|
|
@@ -20,7 +20,7 @@ export declare namespace PutComponentOperation {
|
|
|
20
20
|
* Call this function for an optimal writing data passing the ByteBuffer
|
|
21
21
|
* already allocated
|
|
22
22
|
*/
|
|
23
|
-
function write(
|
|
23
|
+
function write(entity: Entity, timestamp: number, componentDefinition: ComponentDefinition, buf: ByteBuffer): void;
|
|
24
24
|
function read(buf: ByteBuffer): (WireMessage.Header & Type) | null;
|
|
25
25
|
}
|
|
26
26
|
//# sourceMappingURL=componentOperation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentOperation.d.ts","sourceRoot":"","sources":["../../../src/serialization/crdt/componentOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,WAAW,MAAM,gBAAgB,CAAA;AAExC,yBAAiB,qBAAqB,CAAC;IACrC;;;;;OAKG;IACH,KAAY,IAAI,GAAG;QACjB,
|
|
1
|
+
{"version":3,"file":"componentOperation.d.ts","sourceRoot":"","sources":["../../../src/serialization/crdt/componentOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,WAAW,MAAM,gBAAgB,CAAA;AAExC,yBAAiB,qBAAqB,CAAC;IACrC;;;;;OAKG;IACH,KAAY,IAAI,GAAG;QACjB,MAAM,EAAE,MAAM,CAAA;QACd,WAAW,EAAE,MAAM,CAAA;QACnB,SAAS,EAAE,MAAM,CAAA;QACjB,IAAI,EAAE,UAAU,CAAA;KACjB,CAAA;IAEM,MAAM,qBAAqB,KAAK,CAAA;IACvC;;;OAGG;IACH,SAAgB,KAAK,CACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,mBAAmB,EAAE,mBAAmB,EACxC,GAAG,EAAE,UAAU,QAuBhB;IAED,SAAgB,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAcxE;CACF"}
|
|
@@ -12,17 +12,17 @@ var PutComponentOperation;
|
|
|
12
12
|
* Call this function for an optimal writing data passing the ByteBuffer
|
|
13
13
|
* already allocated
|
|
14
14
|
*/
|
|
15
|
-
function write(
|
|
15
|
+
function write(entity, timestamp, componentDefinition, buf) {
|
|
16
16
|
// reserve the beginning
|
|
17
17
|
const startMessageOffset = buf.incrementWriteOffset(wireMessage_1.default.HEADER_LENGTH + PutComponentOperation.MESSAGE_HEADER_LENGTH);
|
|
18
18
|
// write body
|
|
19
|
-
componentDefinition.writeToByteBuffer(
|
|
19
|
+
componentDefinition.writeToByteBuffer(entity, buf);
|
|
20
20
|
const messageLength = buf.size() - startMessageOffset;
|
|
21
21
|
// Write WireMessage header
|
|
22
22
|
buf.setUint32(startMessageOffset, messageLength);
|
|
23
23
|
buf.setUint32(startMessageOffset + 4, wireMessage_1.default.Enum.PUT_COMPONENT);
|
|
24
24
|
// Write ComponentOperation header
|
|
25
|
-
buf.setUint32(startMessageOffset + 8,
|
|
25
|
+
buf.setUint32(startMessageOffset + 8, entity);
|
|
26
26
|
buf.setUint32(startMessageOffset + 12, componentDefinition._id);
|
|
27
27
|
buf.setUint64(startMessageOffset + 16, BigInt(timestamp));
|
|
28
28
|
buf.setUint32(startMessageOffset + 24, messageLength - PutComponentOperation.MESSAGE_HEADER_LENGTH - wireMessage_1.default.HEADER_LENGTH);
|
|
@@ -35,7 +35,7 @@ var PutComponentOperation;
|
|
|
35
35
|
}
|
|
36
36
|
return {
|
|
37
37
|
...header,
|
|
38
|
-
|
|
38
|
+
entity: buf.readUint32(),
|
|
39
39
|
componentId: buf.readInt32(),
|
|
40
40
|
timestamp: Number(buf.readUint64()),
|
|
41
41
|
data: buf.readBuffer()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentOperation.js","sourceRoot":"","sources":["../../../src/serialization/crdt/componentOperation.ts"],"names":[],"mappings":";;;;;;AAGA,iEAAwC;AAExC,IAAiB,qBAAqB,CA+DrC;AA/DD,WAAiB,qBAAqB;IAcvB,2CAAqB,GAAG,EAAE,CAAA;IACvC;;;OAGG;IACH,SAAgB,KAAK,CACnB,
|
|
1
|
+
{"version":3,"file":"componentOperation.js","sourceRoot":"","sources":["../../../src/serialization/crdt/componentOperation.ts"],"names":[],"mappings":";;;;;;AAGA,iEAAwC;AAExC,IAAiB,qBAAqB,CA+DrC;AA/DD,WAAiB,qBAAqB;IAcvB,2CAAqB,GAAG,EAAE,CAAA;IACvC;;;OAGG;IACH,SAAgB,KAAK,CACnB,MAAc,EACd,SAAiB,EACjB,mBAAwC,EACxC,GAAe;QAEf,wBAAwB;QACxB,MAAM,kBAAkB,GAAG,GAAG,CAAC,oBAAoB,CACjD,qBAAW,CAAC,aAAa,GAAG,sBAAA,qBAAqB,CAClD,CAAA;QAED,aAAa;QACb,mBAAmB,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAClD,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,kBAAkB,CAAA;QAErD,2BAA2B;QAC3B,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAA;QAChD,GAAG,CAAC,SAAS,CAAC,kBAAkB,GAAG,CAAC,EAAE,qBAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAErE,kCAAkC;QAClC,GAAG,CAAC,SAAS,CAAC,kBAAkB,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;QAC7C,GAAG,CAAC,SAAS,CAAC,kBAAkB,GAAG,EAAE,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAA;QAC/D,GAAG,CAAC,SAAS,CAAC,kBAAkB,GAAG,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;QACzD,GAAG,CAAC,SAAS,CACX,kBAAkB,GAAG,EAAE,EACvB,aAAa,GAAG,sBAAA,qBAAqB,GAAG,qBAAW,CAAC,aAAa,CAClE,CAAA;IACH,CAAC;IA3Be,2BAAK,QA2BpB,CAAA;IAED,SAAgB,IAAI,CAAC,GAAe;QAClC,MAAM,MAAM,GAAG,qBAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QAE1C,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,IAAI,CAAA;SACZ;QAED,OAAO;YACL,GAAG,MAAM;YACT,MAAM,EAAE,GAAG,CAAC,UAAU,EAAY;YAClC,WAAW,EAAE,GAAG,CAAC,SAAS,EAAE;YAC5B,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE;SACvB,CAAA;IACH,CAAC;IAde,0BAAI,OAcnB,CAAA;AACH,CAAC,EA/DgB,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QA+DrC"}
|
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
import type { PreEngine } from '../../engine';
|
|
2
2
|
import { Entity } from '../../engine/entity';
|
|
3
|
-
/**
|
|
4
|
-
* TODO:
|
|
5
|
-
* What about when we remove the SyncComponent ? Should we notify all the clients? How ?
|
|
6
|
-
* Where do we create the transport and process the received messages?
|
|
7
|
-
*/
|
|
8
3
|
export declare function crdtSceneSystem(engine: PreEngine): {
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
createMessages: (dirtyMap: Map<Entity, Set<number>>) => void;
|
|
5
|
+
receiveMessages: () => void;
|
|
11
6
|
};
|
|
12
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/systems/crdt/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/systems/crdt/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAS5C,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS;+BA2Gb,IAAI,MAAM,EAAE,IAAI,MAAM,CAAC,CAAC;;EAkD3D"}
|
|
@@ -11,111 +11,145 @@ const componentOperation_1 = require("../../serialization/crdt/componentOperatio
|
|
|
11
11
|
const wireMessage_1 = __importDefault(require("../../serialization/wireMessage"));
|
|
12
12
|
const transport_1 = require("./transport");
|
|
13
13
|
const utils_1 = __importDefault(require("./utils"));
|
|
14
|
-
/**
|
|
15
|
-
* TODO:
|
|
16
|
-
* What about when we remove the SyncComponent ? Should we notify all the clients? How ?
|
|
17
|
-
* Where do we create the transport and process the received messages?
|
|
18
|
-
*/
|
|
19
14
|
function crdtSceneSystem(engine) {
|
|
15
|
+
// CRDT Client
|
|
20
16
|
const crdtClient = (0, crdt_1.crdtProtocol)();
|
|
21
|
-
|
|
17
|
+
// Messages that we received at transport.onMessage waiting to be processed
|
|
18
|
+
const receivedMessages = [];
|
|
19
|
+
// Messages already processed by the engine but that we need to broadcast to other transports.
|
|
20
|
+
const transportMessages = [];
|
|
21
|
+
// Map of entities already processed at least once
|
|
22
22
|
const crdtEntities = new Map();
|
|
23
|
-
const
|
|
24
|
-
transport.onmessage = parseChunkMessage;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
23
|
+
const transports = (0, transport_1.getTransports)();
|
|
24
|
+
transports.forEach((transport) => (transport.onmessage = parseChunkMessage(transport.type)));
|
|
25
|
+
/**
|
|
26
|
+
*
|
|
27
|
+
* @param transportType tranport id to identiy messages
|
|
28
|
+
* @returns a function to process received messages
|
|
29
|
+
*/
|
|
30
|
+
function parseChunkMessage(transportType) {
|
|
31
|
+
/**
|
|
32
|
+
* Receives a chunk of binary messages and stores all the valid
|
|
33
|
+
* Component Operation Messages at messages queue
|
|
34
|
+
* @param chunkMessage A chunk of binary messages
|
|
35
|
+
*/
|
|
36
|
+
return function parseChunkMessage(chunkMessage) {
|
|
37
|
+
if (!chunkMessage.data?.length)
|
|
38
|
+
return;
|
|
39
|
+
const buffer = (0, ByteBuffer_1.createByteBuffer)({
|
|
40
|
+
reading: { buffer: chunkMessage.data, currentOffset: 0 }
|
|
38
41
|
});
|
|
39
|
-
|
|
42
|
+
while (wireMessage_1.default.validate(buffer)) {
|
|
43
|
+
const offset = buffer.currentReadOffset();
|
|
44
|
+
const message = componentOperation_1.PutComponentOperation.read(buffer);
|
|
45
|
+
const { entity, componentId, data, timestamp } = message;
|
|
46
|
+
receivedMessages.push({
|
|
47
|
+
entity,
|
|
48
|
+
componentId,
|
|
49
|
+
data,
|
|
50
|
+
timestamp,
|
|
51
|
+
transportType,
|
|
52
|
+
messageBuffer: buffer
|
|
53
|
+
.buffer()
|
|
54
|
+
.subarray(offset, buffer.currentReadOffset())
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
};
|
|
40
58
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
59
|
+
/**
|
|
60
|
+
* Return and clear the messaes queue
|
|
61
|
+
* @returns messages recieved by the transport to process on the next tick
|
|
62
|
+
*/
|
|
63
|
+
function getMessages(value) {
|
|
64
|
+
const messagesToProcess = Array.from(value);
|
|
65
|
+
value.length = 0;
|
|
44
66
|
return messagesToProcess;
|
|
45
67
|
}
|
|
46
68
|
/**
|
|
47
|
-
* This
|
|
69
|
+
* This fn will be called on every tick.
|
|
70
|
+
* Process all the messages queue received by the transport
|
|
48
71
|
*/
|
|
49
|
-
function
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
72
|
+
function receiveMessages() {
|
|
73
|
+
const messagesToProcess = getMessages(receivedMessages);
|
|
74
|
+
for (const transport of transports) {
|
|
75
|
+
const buffer = (0, ByteBuffer_1.createByteBuffer)();
|
|
76
|
+
for (const message of messagesToProcess) {
|
|
77
|
+
const { data, timestamp, componentId, entity } = message;
|
|
78
|
+
const crdtMessage = {
|
|
79
|
+
key: utils_1.default.getKey(entity, componentId),
|
|
80
|
+
data: data,
|
|
81
|
+
timestamp: timestamp
|
|
82
|
+
};
|
|
83
|
+
const component = engine.getComponent(componentId);
|
|
84
|
+
const currentMessage = crdtClient.processMessage(crdtMessage);
|
|
85
|
+
// CRDT outdated message. Resend this message through the wire
|
|
86
|
+
// TODO: perf transactor
|
|
87
|
+
if (crdtMessage !== currentMessage) {
|
|
88
|
+
// CRDT outdated message. Resend this message through the wire
|
|
89
|
+
componentOperation_1.PutComponentOperation.write(entity, currentMessage.timestamp, component, buffer);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
const opts = { reading: { buffer: message.data, currentOffset: 0 } };
|
|
93
|
+
const bb = (0, ByteBuffer_1.createByteBuffer)(opts);
|
|
94
|
+
// Update engine component
|
|
95
|
+
component.upsertFromBinary(message.entity, bb);
|
|
96
|
+
component.clearDirty();
|
|
97
|
+
// Add message to transport queue to be processed by others transports
|
|
98
|
+
transportMessages.push(message);
|
|
99
|
+
}
|
|
60
100
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
reading: {
|
|
64
|
-
buffer: message.data,
|
|
65
|
-
currentOffset: 0
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
component.upsertFromBinary(entity, bb);
|
|
69
|
-
component.clearDirty();
|
|
101
|
+
if (buffer.size()) {
|
|
102
|
+
transport.send(buffer.toBinary());
|
|
70
103
|
}
|
|
71
104
|
}
|
|
72
|
-
if (buffer.size()) {
|
|
73
|
-
transport.send(buffer.toBinary());
|
|
74
|
-
}
|
|
75
105
|
}
|
|
76
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Iterates the dirty map and generates crdt messages to be send
|
|
108
|
+
* @param dirtyMap a map of { entities: [componentId] }
|
|
109
|
+
*/
|
|
110
|
+
function createMessages(dirtyMap) {
|
|
111
|
+
// CRDT Messages will be the merge between the recieved transport messages and the new crdt messages
|
|
112
|
+
const crdtMessages = getMessages(transportMessages);
|
|
77
113
|
const buffer = (0, ByteBuffer_1.createByteBuffer)();
|
|
78
114
|
for (const [entity, componentsId] of dirtyMap) {
|
|
79
|
-
if (entity_utils_1.default.isStaticEntity(entity) && !crdtEntities.has(entity)) {
|
|
80
|
-
crdtEntities.set(entity, true);
|
|
81
|
-
continue;
|
|
82
|
-
}
|
|
83
|
-
crdtEntities.set(entity, true);
|
|
84
115
|
for (const componentId of componentsId) {
|
|
85
116
|
const component = engine.getComponent(componentId);
|
|
86
|
-
const
|
|
87
|
-
const
|
|
88
|
-
|
|
117
|
+
const event = crdtClient.createEvent(utils_1.default.getKey(entity, componentId), component.toBinary(entity).toBinary());
|
|
118
|
+
const offset = buffer.currentWriteOffset();
|
|
119
|
+
// There is no need to create messages for the static entities the first time they are created
|
|
120
|
+
// They are part of the scene loading. Send only updates.
|
|
121
|
+
if (!entity_utils_1.default.isStaticEntity(entity) || crdtEntities.has(entity)) {
|
|
122
|
+
componentOperation_1.PutComponentOperation.write(entity, event.timestamp, component, buffer);
|
|
123
|
+
crdtMessages.push({
|
|
124
|
+
componentId,
|
|
125
|
+
entity,
|
|
126
|
+
timestamp: event.timestamp,
|
|
127
|
+
messageBuffer: buffer
|
|
128
|
+
.buffer()
|
|
129
|
+
.subarray(offset, buffer.currentWriteOffset())
|
|
130
|
+
});
|
|
131
|
+
}
|
|
89
132
|
}
|
|
133
|
+
crdtEntities.set(entity, true);
|
|
90
134
|
}
|
|
91
|
-
|
|
92
|
-
|
|
135
|
+
// Send messages to transports
|
|
136
|
+
const transportBuffer = (0, ByteBuffer_1.createByteBuffer)();
|
|
137
|
+
for (const transport of transports) {
|
|
138
|
+
transportBuffer.resetBuffer();
|
|
139
|
+
for (const message of crdtMessages) {
|
|
140
|
+
if (transport.filter(message)) {
|
|
141
|
+
transportBuffer.writeBuffer(message.messageBuffer, false);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (transportBuffer.size()) {
|
|
145
|
+
transport.send(transportBuffer.toBinary());
|
|
146
|
+
}
|
|
93
147
|
}
|
|
94
148
|
}
|
|
95
149
|
return {
|
|
96
|
-
|
|
97
|
-
|
|
150
|
+
createMessages,
|
|
151
|
+
receiveMessages
|
|
98
152
|
};
|
|
99
153
|
}
|
|
100
154
|
exports.crdtSceneSystem = crdtSceneSystem;
|
|
101
|
-
// const { Sync } = engine.baseComponents
|
|
102
|
-
// for (const [entity] of engine.groupOf(Dirty)) {
|
|
103
|
-
// const components = engine.getEntityComponents(entity)
|
|
104
|
-
// for (const p of )
|
|
105
|
-
// }
|
|
106
|
-
// for (const [entity] of engine.mutableGroupOf(Sync)) {
|
|
107
|
-
// for (const component of engine.getEntityComponents(entity)) {
|
|
108
|
-
// // If its a new entity, we should send all the components.
|
|
109
|
-
// // Otherwise, we send only the updates (dirty)
|
|
110
|
-
// if (!crdtEntities.has(entity) || component.isDirty(entity)) {
|
|
111
|
-
// const event = crdtClient.createEvent(
|
|
112
|
-
// getKey(entity, component._id),
|
|
113
|
-
// component.toBinary(entity)
|
|
114
|
-
// )
|
|
115
|
-
// void crdtClient.sendMessage(event)
|
|
116
|
-
// return
|
|
117
|
-
// }
|
|
118
|
-
// }
|
|
119
|
-
// crdtEntities.add(entity)
|
|
120
|
-
// }
|
|
121
155
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/systems/crdt/index.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/systems/crdt/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import { TransportMessage } from './types';
|
|
2
|
+
export declare type Transport = {
|
|
3
|
+
type: string;
|
|
4
|
+
send(message: Uint8Array): void;
|
|
5
|
+
onmessage?(message: MessageEvent<Uint8Array>): void;
|
|
6
|
+
filter(message: TransportMessage): boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare function getTransports(): Transport[];
|
|
2
9
|
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/systems/crdt/transport.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/systems/crdt/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE1C,oBAAY,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAA;IAC/B,SAAS,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;IACnD,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAA;CAC3C,CAAA;AAuBD,wBAAgB,aAAa,gBAE5B"}
|
|
@@ -1,8 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
function
|
|
5
|
-
|
|
3
|
+
exports.getTransports = void 0;
|
|
4
|
+
function networkTransport() {
|
|
5
|
+
// const rpc = new RpcTransport()
|
|
6
|
+
const rpc = {
|
|
7
|
+
send: () => { }
|
|
8
|
+
};
|
|
9
|
+
const type = 'network-transport';
|
|
10
|
+
return {
|
|
11
|
+
...rpc,
|
|
12
|
+
type,
|
|
13
|
+
filter(message) {
|
|
14
|
+
// Echo message, ignore them
|
|
15
|
+
if (message.transportType === type) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
return !!message; // validComponents.includes(componentId)
|
|
19
|
+
}
|
|
20
|
+
};
|
|
6
21
|
}
|
|
7
|
-
|
|
22
|
+
function getTransports() {
|
|
23
|
+
return [networkTransport()];
|
|
24
|
+
}
|
|
25
|
+
exports.getTransports = getTransports;
|
|
8
26
|
//# sourceMappingURL=transport.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/systems/crdt/transport.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/systems/crdt/transport.ts"],"names":[],"mappings":";;;AASA,SAAS,gBAAgB;IACvB,iCAAiC;IACjC,MAAM,GAAG,GAAG;QACV,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;KACf,CAAA;IAED,MAAM,IAAI,GAAG,mBAAmB,CAAA;IAChC,OAAO;QACL,GAAG,GAAG;QACN,IAAI;QACJ,MAAM,CAAC,OAAyB;YAC9B,4BAA4B;YAC5B,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE;gBAClC,OAAO,KAAK,CAAA;aACb;YAED,OAAO,CAAC,CAAC,OAAO,CAAA,CAAC,wCAAwC;QAC3D,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;AAC7B,CAAC;AAFD,sCAEC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Entity } from '../../engine/entity';
|
|
2
|
+
export declare type ReceiveMessage = {
|
|
3
|
+
entity: Entity;
|
|
4
|
+
componentId: number;
|
|
5
|
+
timestamp: number;
|
|
6
|
+
transportType?: string;
|
|
7
|
+
data: Uint8Array;
|
|
8
|
+
messageBuffer: Uint8Array;
|
|
9
|
+
};
|
|
10
|
+
export declare type TransportMessage = Omit<ReceiveMessage, 'data'>;
|
|
11
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/systems/crdt/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,oBAAY,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,EAAE,UAAU,CAAA;IAChB,aAAa,EAAE,UAAU,CAAA;CAC1B,CAAA;AAED,oBAAY,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/systems/crdt/types.ts"],"names":[],"mappings":""}
|
|
@@ -2,12 +2,10 @@ import { ComponentDefinition } from '../../engine/component';
|
|
|
2
2
|
import { Entity } from '../../engine/entity';
|
|
3
3
|
export declare namespace CrdtUtils {
|
|
4
4
|
type ComponentID = ComponentDefinition['_id'];
|
|
5
|
-
function parseKey(key: string): [Entity, ComponentID];
|
|
6
5
|
function getKey(entity: Entity, componentId: ComponentID): string;
|
|
7
6
|
enum SynchronizedEntityType {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
RENDERER = 2
|
|
7
|
+
NETWORKED = 0,
|
|
8
|
+
RENDERER = 1
|
|
11
9
|
}
|
|
12
10
|
}
|
|
13
11
|
export default CrdtUtils;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/systems/crdt/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/systems/crdt/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,yBAAiB,SAAS,CAAC;IACzB,KAAY,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IAWpD,SAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,MAAM,CAEvE;IAED,KAAY,sBAAsB;QAEhC,SAAS,IAAA;QAET,QAAQ,IAAA;KACT;CACF;AAED,eAAe,SAAS,CAAA"}
|
|
@@ -3,23 +3,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CrdtUtils = void 0;
|
|
4
4
|
var CrdtUtils;
|
|
5
5
|
(function (CrdtUtils) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
// TODO: use this again
|
|
7
|
+
// export function parseKey(key: string): [Entity, ComponentID] {
|
|
8
|
+
// const [entity, componentId] = key.split('.').map(Number) as [
|
|
9
|
+
// Entity,
|
|
10
|
+
// ComponentID
|
|
11
|
+
// ]
|
|
12
|
+
// return [entity, componentId]
|
|
13
|
+
// }
|
|
11
14
|
function getKey(entity, componentId) {
|
|
12
15
|
return `${entity}.${componentId}`;
|
|
13
16
|
}
|
|
14
17
|
CrdtUtils.getKey = getKey;
|
|
15
18
|
let SynchronizedEntityType;
|
|
16
19
|
(function (SynchronizedEntityType) {
|
|
17
|
-
// synchronizes all entities without filter. used for renderers
|
|
18
|
-
SynchronizedEntityType[SynchronizedEntityType["ALL"] = 0] = "ALL";
|
|
19
20
|
// synchronizes entities with the NetworkSynchronized component only, used for networked games
|
|
20
|
-
SynchronizedEntityType[SynchronizedEntityType["NETWORKED"] =
|
|
21
|
+
SynchronizedEntityType[SynchronizedEntityType["NETWORKED"] = 0] = "NETWORKED";
|
|
21
22
|
// synchronizes entities needed by the renderer
|
|
22
|
-
SynchronizedEntityType[SynchronizedEntityType["RENDERER"] =
|
|
23
|
+
SynchronizedEntityType[SynchronizedEntityType["RENDERER"] = 1] = "RENDERER";
|
|
23
24
|
})(SynchronizedEntityType = CrdtUtils.SynchronizedEntityType || (CrdtUtils.SynchronizedEntityType = {}));
|
|
24
25
|
})(CrdtUtils = exports.CrdtUtils || (exports.CrdtUtils = {}));
|
|
25
26
|
exports.default = CrdtUtils;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/systems/crdt/utils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/systems/crdt/utils.ts"],"names":[],"mappings":";;;AAGA,IAAiB,SAAS,CAsBzB;AAtBD,WAAiB,SAAS;IAGxB,uBAAuB;IACvB,iEAAiE;IACjE,kEAAkE;IAClE,cAAc;IACd,kBAAkB;IAClB,MAAM;IACN,iCAAiC;IACjC,IAAI;IAEJ,SAAgB,MAAM,CAAC,MAAc,EAAE,WAAwB;QAC7D,OAAO,GAAG,MAAM,IAAI,WAAW,EAAE,CAAA;IACnC,CAAC;IAFe,gBAAM,SAErB,CAAA;IAED,IAAY,sBAKX;IALD,WAAY,sBAAsB;QAChC,8FAA8F;QAC9F,6EAAS,CAAA;QACT,+CAA+C;QAC/C,2EAAQ,CAAA;IACV,CAAC,EALW,sBAAsB,GAAtB,gCAAsB,KAAtB,gCAAsB,QAKjC;AACH,CAAC,EAtBgB,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAsBzB;AAED,kBAAe,SAAS,CAAA;AAExB,mEAAmE;AACnE,8CAA8C;AAC9C,iCAAiC;AACjC,4DAA4D;AAC5D,2FAA2F;AAC3F,2CAA2C;AAE3C,oCAAoC;AACpC,gDAAgD;AAChD,+HAA+H;AAC/H,uBAAuB;AACvB,MAAM;AACN,KAAK;AAEL,sDAAsD;AACtD,WAAW;AACX,IAAI;AAEJ,8BAA8B;AAC9B,2CAA2C;AAE3C,2CAA2C;AAC3C,gDAAgD;AAChD,MAAM;AAEN,sBAAsB;AACtB,0BAA0B;AAC1B,MAAM;AAEN,4BAA4B;AAC5B,IAAI;AAEJ,2BAA2B;AAC3B,4CAA4C;AAC5C,IAAI"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dcl/ecs",
|
|
3
|
-
"version": "1.0.0-
|
|
3
|
+
"version": "1.0.0-20220523140951.commit-feb588d",
|
|
4
4
|
"description": "Decentraland ECS",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -41,5 +41,5 @@
|
|
|
41
41
|
"files": [
|
|
42
42
|
"dist"
|
|
43
43
|
],
|
|
44
|
-
"commit": "
|
|
44
|
+
"commit": "feb588d6562a780d0f2204f92c2ddb34a7fad583"
|
|
45
45
|
}
|