@dcl/ecs 7.0.6-3808564125.commit-7a2650b → 7.0.6-3808892339.commit-e47ed81

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.
Files changed (77) hide show
  1. package/dist/components/generated/pb/decentraland/common/border_rect.gen.d.ts +1 -1
  2. package/dist/components/generated/pb/decentraland/common/border_rect.gen.js +3 -3
  3. package/dist/components/generated/pb/decentraland/common/colors.gen.d.ts +1 -1
  4. package/dist/components/generated/pb/decentraland/common/colors.gen.js +4 -4
  5. package/dist/components/generated/pb/decentraland/common/texture.gen.d.ts +3 -3
  6. package/dist/components/generated/pb/decentraland/common/texture.gen.js +13 -13
  7. package/dist/components/generated/pb/decentraland/common/vectors.gen.d.ts +1 -1
  8. package/dist/components/generated/pb/decentraland/common/vectors.gen.js +5 -5
  9. package/dist/components/generated/pb/decentraland/sdk/components/animator.gen.d.ts +1 -1
  10. package/dist/components/generated/pb/decentraland/sdk/components/animator.gen.js +9 -9
  11. package/dist/components/generated/pb/decentraland/sdk/components/audio_source.gen.d.ts +1 -1
  12. package/dist/components/generated/pb/decentraland/sdk/components/audio_source.gen.js +5 -5
  13. package/dist/components/generated/pb/decentraland/sdk/components/audio_stream.gen.d.ts +1 -1
  14. package/dist/components/generated/pb/decentraland/sdk/components/audio_stream.gen.js +5 -5
  15. package/dist/components/generated/pb/decentraland/sdk/components/avatar_attach.gen.d.ts +1 -1
  16. package/dist/components/generated/pb/decentraland/sdk/components/avatar_attach.gen.js +5 -5
  17. package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +2 -2
  18. package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +4 -4
  19. package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +2 -2
  20. package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +19 -15
  21. package/dist/components/generated/pb/decentraland/sdk/components/billboard.gen.d.ts +1 -1
  22. package/dist/components/generated/pb/decentraland/sdk/components/billboard.gen.js +3 -3
  23. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode.gen.d.ts +2 -2
  24. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode.gen.js +4 -3
  25. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +3 -3
  26. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +5 -4
  27. package/dist/components/generated/pb/decentraland/sdk/components/common/camera_type.gen.js +1 -1
  28. package/dist/components/generated/pb/decentraland/sdk/components/common/id.gen.js +1 -1
  29. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +1 -1
  30. package/dist/components/generated/pb/decentraland/sdk/components/common/texts.gen.js +1 -1
  31. package/dist/components/generated/pb/decentraland/sdk/components/gltf_container.gen.d.ts +1 -1
  32. package/dist/components/generated/pb/decentraland/sdk/components/gltf_container.gen.js +5 -5
  33. package/dist/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +5 -5
  34. package/dist/components/generated/pb/decentraland/sdk/components/material.gen.js +12 -12
  35. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +5 -5
  36. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +15 -15
  37. package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +5 -5
  38. package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +15 -15
  39. package/dist/components/generated/pb/decentraland/sdk/components/nft_shape.gen.d.ts +2 -2
  40. package/dist/components/generated/pb/decentraland/sdk/components/nft_shape.gen.js +6 -6
  41. package/dist/components/generated/pb/decentraland/sdk/components/pointer_events.gen.d.ts +2 -2
  42. package/dist/components/generated/pb/decentraland/sdk/components/pointer_events.gen.js +6 -5
  43. package/dist/components/generated/pb/decentraland/sdk/components/pointer_events_result.gen.d.ts +4 -4
  44. package/dist/components/generated/pb/decentraland/sdk/components/pointer_events_result.gen.js +6 -5
  45. package/dist/components/generated/pb/decentraland/sdk/components/pointer_lock.gen.d.ts +1 -1
  46. package/dist/components/generated/pb/decentraland/sdk/components/pointer_lock.gen.js +3 -3
  47. package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +2 -2
  48. package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.js +4 -4
  49. package/dist/components/generated/pb/decentraland/sdk/components/raycast_result.gen.d.ts +2 -2
  50. package/dist/components/generated/pb/decentraland/sdk/components/raycast_result.gen.js +18 -14
  51. package/dist/components/generated/pb/decentraland/sdk/components/text_shape.gen.d.ts +3 -3
  52. package/dist/components/generated/pb/decentraland/sdk/components/text_shape.gen.js +8 -7
  53. package/dist/components/generated/pb/decentraland/sdk/components/ui_background.gen.d.ts +4 -4
  54. package/dist/components/generated/pb/decentraland/sdk/components/ui_background.gen.js +6 -6
  55. package/dist/components/generated/pb/decentraland/sdk/components/ui_dropdown.gen.d.ts +3 -3
  56. package/dist/components/generated/pb/decentraland/sdk/components/ui_dropdown.gen.js +5 -5
  57. package/dist/components/generated/pb/decentraland/sdk/components/ui_dropdown_result.gen.d.ts +1 -1
  58. package/dist/components/generated/pb/decentraland/sdk/components/ui_dropdown_result.gen.js +3 -3
  59. package/dist/components/generated/pb/decentraland/sdk/components/ui_input.gen.d.ts +3 -3
  60. package/dist/components/generated/pb/decentraland/sdk/components/ui_input.gen.js +7 -7
  61. package/dist/components/generated/pb/decentraland/sdk/components/ui_input_result.gen.d.ts +1 -1
  62. package/dist/components/generated/pb/decentraland/sdk/components/ui_input_result.gen.js +5 -5
  63. package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +3 -3
  64. package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +6 -6
  65. package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +1 -1
  66. package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +4 -4
  67. package/dist/components/generated/pb/decentraland/sdk/components/visibility_component.gen.d.ts +1 -1
  68. package/dist/components/generated/pb/decentraland/sdk/components/visibility_component.gen.js +3 -3
  69. package/dist/components/generated/pb/google/protobuf/descriptor.gen.d.ts +1 -1
  70. package/dist/components/generated/pb/google/protobuf/descriptor.gen.js +101 -90
  71. package/dist/engine/entity.d.ts +31 -9
  72. package/dist/engine/entity.js +57 -44
  73. package/dist/runtime/initialization/index.d.ts +6 -6
  74. package/dist/systems/crdt/index.d.ts +1 -1
  75. package/package.json +9 -3
  76. package/dist/engine/entity-utils.d.ts +0 -17
  77. package/dist/engine/entity-utils.js +0 -36
@@ -1,59 +1,72 @@
1
- import { EntityUtils } from './entity-utils';
1
+ export const MAX_U16 = 0xffff;
2
+ export const MASK_UPPER_16_ON_32 = 0xffff0000;
3
+ export const AMOUNT_VERSION_AVAILABLE = MAX_U16 + 1;
4
+ /**
5
+ * @public This first 512 entities are reserved by the renderer
6
+ */
7
+ export const RESERVED_STATIC_ENTITIES = 512;
8
+ /**
9
+ * @public
10
+ */
11
+ export const MAX_ENTITY_NUMBER = MAX_U16;
2
12
  export function EntityContainer() {
3
- const staticEntity = Entity(EntityUtils.STATIC_ENTITIES_RANGE);
4
- const dynamicEntity = Entity(EntityUtils.DYNAMIC_ENTITIES_RANGE);
5
- return {
6
- generateEntity(dynamic = false) {
7
- /* istanbul ignore next */
8
- if (dynamic) {
9
- // Dynamic entities are not being used, but since we dont know the future of the dynamic entities
10
- // I prefer to comment the code instead of removing all the logic
11
- /* istanbul ignore next */
12
- return dynamicEntity.generateEntity();
13
- }
14
- else {
15
- return staticEntity.generateEntity();
16
- }
17
- },
18
- removeEntity(entity) {
19
- return (staticEntity.removeEntity(entity) || dynamicEntity.removeEntity(entity));
20
- },
21
- entityExists(entity) {
22
- return (EntityUtils.isReservedEntity(entity) ||
23
- staticEntity.getExistingEntities().has(entity) ||
24
- dynamicEntity.getExistingEntities().has(entity));
25
- },
26
- getExistingEntities() {
27
- return new Set([
28
- ...staticEntity.getExistingEntities(),
29
- ...dynamicEntity.getExistingEntities()
30
- ]);
13
+ let entityCounter = RESERVED_STATIC_ENTITIES;
14
+ const usedEntities = new Set();
15
+ const removedEntities = new Map();
16
+ function entityVersion(entity) {
17
+ return (((entity & MASK_UPPER_16_ON_32) >> 16) & MAX_U16) >>> 0;
18
+ }
19
+ function entityNumber(entity) {
20
+ return (entity & MAX_U16) >>> 0;
21
+ }
22
+ function entityId(entityNumber, entityVersion) {
23
+ return (((entityNumber & MAX_U16) | ((entityVersion & MAX_U16) << 16)) >>>
24
+ 0);
25
+ }
26
+ function generateNewEntity() {
27
+ if (entityCounter > MAX_ENTITY_NUMBER - 1) {
28
+ throw new Error(`It fails trying to generate an entity out of range ${MAX_ENTITY_NUMBER}.`);
31
29
  }
32
- };
33
- }
34
- function Entity(range) {
35
- function createEntity(entity) {
30
+ const entity = entityCounter++;
31
+ usedEntities.add(entity);
36
32
  return entity;
37
33
  }
38
- let entityCounter = range[0];
39
- const usedEntities = new Set();
40
34
  function generateEntity() {
41
- if (entityCounter >= range[1]) {
42
- throw new Error(`It fails trying to generate an entity out of range [${range[0]}, ${range[1]}].`);
35
+ if (usedEntities.size + RESERVED_STATIC_ENTITIES >= entityCounter) {
36
+ return generateNewEntity();
43
37
  }
44
- const entity = createEntity(entityCounter);
45
- entityCounter++;
46
- usedEntities.add(entity);
47
- return entity;
38
+ for (const [number, version] of removedEntities) {
39
+ if (version < MAX_U16) {
40
+ const entity = entityId(number, version + 1);
41
+ usedEntities.add(entity);
42
+ removedEntities.delete(number);
43
+ return entity;
44
+ }
45
+ }
46
+ return generateNewEntity();
48
47
  }
49
48
  function removeEntity(entity) {
50
- return usedEntities.delete(entity);
49
+ const deleted = usedEntities.delete(entity);
50
+ if (deleted) {
51
+ removedEntities.set(entityNumber(entity), entityVersion(entity));
52
+ }
53
+ return deleted;
51
54
  }
52
55
  return {
56
+ generateEntity() {
57
+ return generateEntity();
58
+ },
59
+ removeEntity(entity) {
60
+ return removeEntity(entity);
61
+ },
62
+ entityExists(entity) {
63
+ return entity < RESERVED_STATIC_ENTITIES || usedEntities.has(entity);
64
+ },
53
65
  getExistingEntities() {
54
66
  return new Set(usedEntities);
55
67
  },
56
- generateEntity,
57
- removeEntity
68
+ entityVersion,
69
+ entityNumber,
70
+ entityId
58
71
  };
59
72
  }
@@ -7,12 +7,12 @@ import { Task } from '../../systems/async-task';
7
7
  export declare const engine: IEngine;
8
8
  export declare const inputSystem: import("../../engine").IInputSystem;
9
9
  export declare const pointerEventsSystem: {
10
- removeOnClick(entity: unknown): void;
11
- removeOnPointerDown(entity: unknown): void;
12
- removeOnPointerUp(entity: unknown): void;
13
- onClick(entity: unknown, cb: import("../../systems/events").EventSystemCallback, opts?: Partial<import("../../systems/events").EventSystemOptions> | undefined): void;
14
- onPointerDown(entity: unknown, cb: import("../../systems/events").EventSystemCallback, opts?: Partial<import("../../systems/events").EventSystemOptions> | undefined): void;
15
- onPointerUp(entity: unknown, cb: import("../../systems/events").EventSystemCallback, opts?: Partial<import("../../systems/events").EventSystemOptions> | undefined): void;
10
+ removeOnClick(entity: import("../../engine").Entity): void;
11
+ removeOnPointerDown(entity: import("../../engine").Entity): void;
12
+ removeOnPointerUp(entity: import("../../engine").Entity): void;
13
+ onClick(entity: import("../../engine").Entity, cb: import("../../systems/events").EventSystemCallback, opts?: Partial<import("../../systems/events").EventSystemOptions> | undefined): void;
14
+ onPointerDown(entity: import("../../engine").Entity, cb: import("../../systems/events").EventSystemCallback, opts?: Partial<import("../../systems/events").EventSystemOptions> | undefined): void;
15
+ onPointerUp(entity: import("../../engine").Entity, cb: import("../../systems/events").EventSystemCallback, opts?: Partial<import("../../systems/events").EventSystemOptions> | undefined): void;
16
16
  };
17
17
  /**
18
18
  * @public
@@ -6,5 +6,5 @@ export declare function crdtSceneSystem(engine: Pick<IEngine, 'getComponentOrNul
6
6
  sendMessages: (dirtyEntities: Map<Entity, Set<number>>) => Promise<void>;
7
7
  receiveMessages: () => Promise<void>;
8
8
  addTransport: (transport: Transport) => void;
9
- updateState: () => Map<unknown, Set<number>>;
9
+ updateState: () => Map<Entity, Set<number>>;
10
10
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dcl/ecs",
3
- "version": "7.0.6-3808564125.commit-7a2650b",
3
+ "version": "7.0.6-3808892339.commit-e47ed81",
4
4
  "description": "Decentraland ECS",
5
5
  "main": "./dist/index.js",
6
6
  "typings": "./dist/index.d.ts",
@@ -27,7 +27,7 @@
27
27
  "ts-proto": "^1.112.0"
28
28
  },
29
29
  "dependencies": {
30
- "@dcl/crdt": "7.0.6-3808564125.commit-7a2650b",
30
+ "@dcl/crdt": "7.0.6-3808892339.commit-e47ed81",
31
31
  "@dcl/js-runtime": "file:../js-runtime",
32
32
  "@dcl/protocol": "^1.0.0-3808528053.commit-d66d462"
33
33
  },
@@ -35,5 +35,11 @@
35
35
  "dist",
36
36
  "etc"
37
37
  ],
38
- "commit": "7a2650b741ac5f5a5d3f00ac1c955e5f773d679a"
38
+ "typedoc": {
39
+ "entryPoint": "./src/index.ts",
40
+ "readmeFile": "./README.md",
41
+ "displayName": "ECS",
42
+ "tsconfig": "./tsconfig.json"
43
+ },
44
+ "commit": "e47ed813e0b5bd0e5fd6a0fd9e2eeb80783dab27"
39
45
  }
@@ -1,17 +0,0 @@
1
- import { Entity } from './entity';
2
- export declare namespace EntityUtils {
3
- /**
4
- * Range is the first element and the last possible element, they both are included in the interval.
5
- * [start, end]
6
- */
7
- type EntityRange = readonly [number, number];
8
- const MAX_ENTITIES = 4294967295;
9
- const DYNAMIC_ENTITIES_START_AT = 100000;
10
- const RESERVED_STATIC_ENTITIES = 512;
11
- const RESERVED_ENTITIES_RANGE: EntityRange;
12
- const STATIC_ENTITIES_RANGE: EntityRange;
13
- const DYNAMIC_ENTITIES_RANGE: EntityRange;
14
- function isStaticEntity(entity: Entity): boolean;
15
- function isReservedEntity(entity: Entity): boolean;
16
- }
17
- export default EntityUtils;
@@ -1,36 +0,0 @@
1
- export var EntityUtils;
2
- (function (EntityUtils) {
3
- EntityUtils.MAX_ENTITIES = 0xffffffff;
4
- EntityUtils.DYNAMIC_ENTITIES_START_AT = 100e3;
5
- EntityUtils.RESERVED_STATIC_ENTITIES = 512;
6
- EntityUtils.RESERVED_ENTITIES_RANGE = [
7
- 0,
8
- EntityUtils.RESERVED_STATIC_ENTITIES - 1
9
- ];
10
- EntityUtils.STATIC_ENTITIES_RANGE = [
11
- EntityUtils.RESERVED_STATIC_ENTITIES,
12
- EntityUtils.MAX_ENTITIES
13
- // DYNAMIC_ENTITIES_START_AT - 1
14
- ];
15
- EntityUtils.DYNAMIC_ENTITIES_RANGE = [
16
- EntityUtils.DYNAMIC_ENTITIES_START_AT,
17
- EntityUtils.MAX_ENTITIES
18
- ];
19
- function isInRange(entity, range) {
20
- return entity >= range[0] && entity <= range[1];
21
- }
22
- // @internal
23
- function isDynamicEntity(entity) {
24
- return isInRange(entity, EntityUtils.DYNAMIC_ENTITIES_RANGE);
25
- }
26
- EntityUtils.isDynamicEntity = isDynamicEntity;
27
- function isStaticEntity(entity) {
28
- return isInRange(entity, EntityUtils.STATIC_ENTITIES_RANGE);
29
- }
30
- EntityUtils.isStaticEntity = isStaticEntity;
31
- function isReservedEntity(entity) {
32
- return isInRange(entity, EntityUtils.RESERVED_ENTITIES_RANGE);
33
- }
34
- EntityUtils.isReservedEntity = isReservedEntity;
35
- })(EntityUtils || (EntityUtils = {}));
36
- export default EntityUtils;