@dcl/ecs 7.0.0-3532389879.commit-c89c80c → 7.0.0-3568547351.commit-5420eac
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 +2 -3
- package/dist/components/extended/Animator.d.ts +49 -0
- package/dist/components/extended/Animator.js +58 -0
- package/dist/components/extended/Material.d.ts +42 -0
- package/dist/components/extended/Material.js +42 -0
- package/dist/components/extended/MeshCollider.d.ts +42 -0
- package/dist/components/extended/MeshCollider.js +41 -0
- package/dist/components/extended/MeshRenderer.d.ts +40 -0
- package/dist/components/extended/MeshRenderer.js +27 -0
- package/dist/components/generated/Animator.gen.d.ts +8 -0
- package/dist/components/generated/Animator.gen.js +19 -0
- package/dist/components/generated/AudioSource.gen.d.ts +8 -0
- package/dist/components/generated/AudioSource.gen.js +19 -0
- package/dist/components/generated/AudioStream.gen.d.ts +8 -0
- package/dist/components/generated/AudioStream.gen.js +19 -0
- package/dist/components/generated/AvatarAttach.gen.d.ts +8 -0
- package/dist/components/generated/AvatarAttach.gen.js +19 -0
- package/dist/components/generated/AvatarModifierArea.gen.d.ts +8 -0
- package/dist/components/generated/AvatarModifierArea.gen.js +19 -0
- package/dist/components/generated/AvatarShape.gen.d.ts +8 -0
- package/dist/components/generated/AvatarShape.gen.js +19 -0
- package/dist/components/generated/Billboard.gen.d.ts +8 -0
- package/dist/components/generated/Billboard.gen.js +19 -0
- package/dist/components/generated/CameraMode.gen.d.ts +8 -0
- package/dist/components/generated/CameraMode.gen.js +19 -0
- package/dist/components/generated/CameraModeArea.gen.d.ts +8 -0
- package/dist/components/generated/CameraModeArea.gen.js +19 -0
- package/dist/components/generated/GltfContainer.gen.d.ts +8 -0
- package/dist/components/generated/GltfContainer.gen.js +19 -0
- package/dist/components/generated/Material.gen.d.ts +8 -0
- package/dist/components/generated/Material.gen.js +19 -0
- package/dist/components/generated/MeshCollider.gen.d.ts +8 -0
- package/dist/components/generated/MeshCollider.gen.js +19 -0
- package/dist/components/generated/MeshRenderer.gen.d.ts +8 -0
- package/dist/components/generated/MeshRenderer.gen.js +19 -0
- package/dist/components/generated/NftShape.gen.d.ts +8 -0
- package/dist/components/generated/NftShape.gen.js +19 -0
- package/dist/components/generated/PointerEventsResult.gen.d.ts +8 -0
- package/dist/components/generated/PointerEventsResult.gen.js +19 -0
- package/dist/components/generated/PointerHoverFeedback.gen.d.ts +8 -0
- package/dist/components/generated/PointerHoverFeedback.gen.js +19 -0
- package/dist/components/generated/PointerLock.gen.d.ts +8 -0
- package/dist/components/generated/PointerLock.gen.js +19 -0
- package/dist/components/generated/Raycast.gen.d.ts +8 -0
- package/dist/components/generated/Raycast.gen.js +19 -0
- package/dist/components/generated/RaycastResult.gen.d.ts +8 -0
- package/dist/components/generated/RaycastResult.gen.js +19 -0
- package/dist/components/generated/TextShape.gen.d.ts +8 -0
- package/dist/components/generated/TextShape.gen.js +19 -0
- package/dist/components/generated/UiBackground.gen.d.ts +8 -0
- package/dist/components/generated/UiBackground.gen.js +19 -0
- package/dist/components/generated/UiText.gen.d.ts +8 -0
- package/dist/components/generated/UiText.gen.js +19 -0
- package/dist/components/generated/UiTransform.gen.d.ts +8 -0
- package/dist/components/generated/UiTransform.gen.js +19 -0
- package/dist/components/generated/VisibilityComponent.gen.d.ts +8 -0
- package/dist/components/generated/VisibilityComponent.gen.js +19 -0
- package/dist/components/generated/global.gen.d.ts +42 -0
- package/dist/components/generated/global.gen.js +23 -0
- package/dist/components/generated/ids.gen.d.ts +28 -0
- package/dist/components/generated/ids.gen.js +29 -0
- package/dist/components/generated/index.gen.d.ts +99 -0
- package/dist/components/generated/index.gen.js +96 -0
- package/dist/components/generated/pb/decentraland/common/colors.gen.d.ts +26 -0
- package/dist/components/generated/pb/decentraland/common/colors.gen.js +95 -0
- package/dist/components/generated/pb/decentraland/common/texture.gen.d.ts +56 -0
- package/dist/components/generated/pb/decentraland/common/texture.gen.js +139 -0
- package/dist/components/generated/pb/decentraland/common/vectors.gen.d.ts +36 -0
- package/dist/components/generated/pb/decentraland/common/vectors.gen.js +126 -0
- package/dist/components/generated/pb/decentraland/sdk/components/animator.gen.d.ts +30 -0
- package/dist/components/generated/pb/decentraland/sdk/components/animator.gen.js +109 -0
- package/dist/components/generated/pb/decentraland/sdk/components/audio_source.gen.d.ts +17 -0
- package/dist/components/generated/pb/decentraland/sdk/components/audio_source.gen.js +58 -0
- package/dist/components/generated/pb/decentraland/sdk/components/audio_stream.gen.d.ts +14 -0
- package/dist/components/generated/pb/decentraland/sdk/components/audio_stream.gen.js +46 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_attach.gen.d.ts +18 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_attach.gen.js +47 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +18 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +62 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +38 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +129 -0
- package/dist/components/generated/pb/decentraland/sdk/components/billboard.gen.d.ts +18 -0
- package/dist/components/generated/pb/decentraland/sdk/components/billboard.gen.js +45 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_mode.gen.d.ts +12 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_mode.gen.js +33 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +14 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +40 -0
- package/dist/components/generated/pb/decentraland/sdk/components/common/camera_type.gen.d.ts +4 -0
- package/dist/components/generated/pb/decentraland/sdk/components/common/camera_type.gen.js +7 -0
- package/dist/components/generated/pb/decentraland/sdk/components/common/id.gen.d.ts +1 -0
- package/dist/components/generated/pb/decentraland/sdk/components/common/id.gen.js +3 -0
- package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +16 -0
- package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +19 -0
- package/dist/components/generated/pb/decentraland/sdk/components/common/texts.gen.d.ts +15 -0
- package/dist/components/generated/pb/decentraland/sdk/components/common/texts.gen.js +19 -0
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_container.gen.d.ts +12 -0
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_container.gen.js +34 -0
- package/dist/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +82 -0
- package/dist/components/generated/pb/decentraland/sdk/components/material.gen.js +231 -0
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +70 -0
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +176 -0
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +65 -0
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +196 -0
- package/dist/components/generated/pb/decentraland/sdk/components/nft_shape.gen.d.ts +41 -0
- package/dist/components/generated/pb/decentraland/sdk/components/nft_shape.gen.js +73 -0
- package/dist/components/generated/pb/decentraland/sdk/components/pointer_events_result.gen.d.ts +34 -0
- package/dist/components/generated/pb/decentraland/sdk/components/pointer_events_result.gen.js +89 -0
- package/dist/components/generated/pb/decentraland/sdk/components/pointer_hover_feedback.gen.d.ts +46 -0
- package/dist/components/generated/pb/decentraland/sdk/components/pointer_hover_feedback.gen.js +126 -0
- package/dist/components/generated/pb/decentraland/sdk/components/pointer_lock.gen.d.ts +11 -0
- package/dist/components/generated/pb/decentraland/sdk/components/pointer_lock.gen.js +34 -0
- package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +19 -0
- package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.js +58 -0
- package/dist/components/generated/pb/decentraland/sdk/components/raycast_result.gen.d.ts +32 -0
- package/dist/components/generated/pb/decentraland/sdk/components/raycast_result.gen.js +150 -0
- package/dist/components/generated/pb/decentraland/sdk/components/text_shape.gen.d.ts +41 -0
- package/dist/components/generated/pb/decentraland/sdk/components/text_shape.gen.js +176 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_background.gen.d.ts +13 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_background.gen.js +35 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +21 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +59 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +149 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +454 -0
- package/dist/components/generated/pb/decentraland/sdk/components/visibility_component.gen.d.ts +12 -0
- package/dist/components/generated/pb/decentraland/sdk/components/visibility_component.gen.js +34 -0
- package/dist/components/generated/pb/google/protobuf/descriptor.gen.d.ts +378 -0
- package/dist/components/generated/pb/google/protobuf/descriptor.gen.js +1476 -0
- package/dist/components/generated/types.gen.d.ts +6 -0
- package/dist/components/generated/types.gen.js +8 -0
- package/dist/components/index.d.ts +15 -0
- package/dist/components/index.js +16 -0
- package/dist/components/legacy/Transform.d.ts +27 -0
- package/dist/components/legacy/Transform.js +55 -0
- package/dist/components/types.d.ts +4 -0
- package/dist/components/types.js +1 -0
- package/dist/engine/component.d.ts +72 -0
- package/dist/engine/component.js +130 -0
- package/dist/engine/entity-utils.d.ts +18 -0
- package/dist/engine/entity-utils.js +34 -0
- package/dist/engine/entity.d.ts +17 -0
- package/dist/engine/entity.js +55 -0
- package/dist/engine/index.d.ts +12 -0
- package/dist/engine/index.js +172 -0
- package/dist/engine/input.d.ts +36 -0
- package/dist/engine/input.js +156 -0
- package/dist/engine/readonly.d.ts +29 -0
- package/dist/engine/readonly.js +6 -0
- package/dist/engine/systems.d.ts +16 -0
- package/dist/engine/systems.js +44 -0
- package/dist/engine/types.d.ts +148 -0
- package/dist/engine/types.js +1 -0
- package/dist/index.d.ts +16 -4679
- package/dist/index.js +24 -15202
- package/dist/runtime/initialization/index.d.ts +21 -0
- package/dist/runtime/initialization/index.js +20 -0
- package/dist/runtime/invariant.d.ts +1 -0
- package/dist/runtime/invariant.js +8 -0
- package/dist/runtime/types.d.ts +22 -0
- package/dist/runtime/types.js +19 -0
- package/dist/schemas/Array.d.ts +5 -0
- package/dist/schemas/Array.js +24 -0
- package/dist/schemas/ISchema.d.ts +9 -0
- package/dist/schemas/ISchema.js +1 -0
- package/dist/schemas/Map.d.ts +19 -0
- package/dist/schemas/Map.js +31 -0
- package/dist/schemas/Optional.d.ts +5 -0
- package/dist/schemas/Optional.js +25 -0
- package/dist/schemas/basic/Boolean.d.ts +5 -0
- package/dist/schemas/basic/Boolean.js +14 -0
- package/dist/schemas/basic/Enum.d.ts +5 -0
- package/dist/schemas/basic/Enum.js +16 -0
- package/dist/schemas/basic/Float.d.ts +9 -0
- package/dist/schemas/basic/Float.js +28 -0
- package/dist/schemas/basic/Integer.d.ts +17 -0
- package/dist/schemas/basic/Integer.js +56 -0
- package/dist/schemas/basic/String.d.ts +9 -0
- package/dist/schemas/basic/String.js +18 -0
- package/dist/schemas/custom/Color3.d.ts +13 -0
- package/dist/schemas/custom/Color3.js +20 -0
- package/dist/schemas/custom/Color4.d.ts +14 -0
- package/dist/schemas/custom/Color4.js +22 -0
- package/dist/schemas/custom/Entity.d.ts +6 -0
- package/dist/schemas/custom/Entity.js +14 -0
- package/dist/schemas/custom/Quaternion.d.ts +14 -0
- package/dist/schemas/custom/Quaternion.js +22 -0
- package/dist/schemas/custom/Vector3.d.ts +13 -0
- package/dist/schemas/custom/Vector3.js +20 -0
- package/dist/schemas/index.d.ts +42 -0
- package/dist/schemas/index.js +37 -0
- package/dist/schemas/typing.d.ts +15 -0
- package/dist/schemas/typing.js +1 -0
- package/dist/serialization/ByteBuffer/index.d.ts +140 -0
- package/dist/serialization/ByteBuffer/index.js +244 -0
- package/dist/serialization/crdt/componentOperation.d.ts +31 -0
- package/dist/serialization/crdt/componentOperation.js +47 -0
- package/dist/serialization/wireMessage.d.ts +39 -0
- package/dist/serialization/wireMessage.js +52 -0
- package/dist/systems/async-task.d.ts +5 -0
- package/dist/systems/async-task.js +28 -0
- package/dist/systems/crdt/index.d.ts +8 -0
- package/dist/systems/crdt/index.js +169 -0
- package/dist/systems/crdt/types.d.ts +18 -0
- package/dist/systems/crdt/types.js +1 -0
- package/dist/systems/crdt/utils.d.ts +9 -0
- package/dist/systems/crdt/utils.js +11 -0
- package/dist/systems/cyclicParentingChecker.d.ts +17 -0
- package/dist/systems/cyclicParentingChecker.js +33 -0
- package/dist/systems/events.d.ts +56 -0
- package/dist/systems/events.js +145 -0
- package/package.json +9 -14
- package/dist/index.min.js +0 -1
- package/dist/index.min.js.map +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { IArray } from './Array';
|
|
2
|
+
import { Bool } from './basic/Boolean';
|
|
3
|
+
import { IEnum } from './basic/Enum';
|
|
4
|
+
import { Float32, Float64 } from './basic/Float';
|
|
5
|
+
import { Int16, Int32, Int8, Int64 as iInt64 } from './basic/Integer';
|
|
6
|
+
import { EcsString } from './basic/String';
|
|
7
|
+
import { Color3Schema } from './custom/Color3';
|
|
8
|
+
import { Color4Schema } from './custom/Color4';
|
|
9
|
+
import { EntitySchema } from './custom/Entity';
|
|
10
|
+
import { QuaternionSchema } from './custom/Quaternion';
|
|
11
|
+
import { Vector3Schema } from './custom/Vector3';
|
|
12
|
+
import { IMap } from './Map';
|
|
13
|
+
import { IOptional } from './Optional';
|
|
14
|
+
/**
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
export var Schemas;
|
|
18
|
+
(function (Schemas) {
|
|
19
|
+
Schemas.Boolean = Bool;
|
|
20
|
+
Schemas.String = EcsString;
|
|
21
|
+
Schemas.Float = Float32;
|
|
22
|
+
Schemas.Double = Float64;
|
|
23
|
+
Schemas.Byte = Int8;
|
|
24
|
+
Schemas.Short = Int16;
|
|
25
|
+
Schemas.Int = Int32;
|
|
26
|
+
Schemas.Int64 = iInt64;
|
|
27
|
+
Schemas.Number = Float32;
|
|
28
|
+
Schemas.Vector3 = Vector3Schema;
|
|
29
|
+
Schemas.Quaternion = QuaternionSchema;
|
|
30
|
+
Schemas.Color3 = Color3Schema;
|
|
31
|
+
Schemas.Color4 = Color4Schema;
|
|
32
|
+
Schemas.Entity = EntitySchema;
|
|
33
|
+
Schemas.Enum = IEnum;
|
|
34
|
+
Schemas.Array = IArray;
|
|
35
|
+
Schemas.Map = IMap;
|
|
36
|
+
Schemas.Optional = IOptional;
|
|
37
|
+
})(Schemas || (Schemas = {}));
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Include property keys from T where the property is assignable to U */
|
|
2
|
+
export declare type IncludeUndefined<T> = {
|
|
3
|
+
[P in keyof T]: undefined extends T[P] ? P : never;
|
|
4
|
+
}[keyof T];
|
|
5
|
+
/** Excludes property keys from T where the property is assignable to U */
|
|
6
|
+
export declare type ExcludeUndefined<T> = {
|
|
7
|
+
[P in keyof T]: undefined extends T[P] ? never : P;
|
|
8
|
+
}[keyof T];
|
|
9
|
+
export declare type OnlyOptionalUndefinedTypes<T> = {
|
|
10
|
+
[K in IncludeUndefined<T>]?: T[K];
|
|
11
|
+
};
|
|
12
|
+
export declare type OnlyNonUndefinedTypes<T> = {
|
|
13
|
+
[K in ExcludeUndefined<T>]: T[K];
|
|
14
|
+
};
|
|
15
|
+
export declare type ToOptional<T> = OnlyOptionalUndefinedTypes<T> & OnlyNonUndefinedTypes<T>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param writing - writing option, see object specs.
|
|
3
|
+
* @param reading - reading option, see object specs.
|
|
4
|
+
* @param initialCapacity - Initial capacity of buffer to allocate, ignored if you use writing or reading options
|
|
5
|
+
*/
|
|
6
|
+
export interface CreateByteBufferOptions {
|
|
7
|
+
/**
|
|
8
|
+
* @param buffer - a buffer already allocated to read from there.
|
|
9
|
+
* @param currentOffset - set the cursor where begins to read. Default 0
|
|
10
|
+
* @param length - delimite where the valid data ends. Default: buffer.length
|
|
11
|
+
*/
|
|
12
|
+
reading?: {
|
|
13
|
+
buffer: Uint8Array;
|
|
14
|
+
length?: number;
|
|
15
|
+
currentOffset: number;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* @param buffer - a buffer already allocated to write there.
|
|
19
|
+
* @param currentOffset - set the cursor to not start writing from the begin of it. Default 0
|
|
20
|
+
*/
|
|
21
|
+
writing?: {
|
|
22
|
+
buffer: Uint8Array;
|
|
23
|
+
currentOffset?: number;
|
|
24
|
+
};
|
|
25
|
+
initialCapacity?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* ByteBuffer is a wrapper of DataView which also adds a read and write offset.
|
|
29
|
+
* Also in a write operation it resizes the buffer is being used if it needs.
|
|
30
|
+
*
|
|
31
|
+
* - Use read and write function to generate or consume data.
|
|
32
|
+
* - Use set and get only if you are sure that you're doing.
|
|
33
|
+
*/
|
|
34
|
+
export declare function createByteBuffer(options?: CreateByteBufferOptions): ByteBuffer;
|
|
35
|
+
/**
|
|
36
|
+
* @public
|
|
37
|
+
*/
|
|
38
|
+
export declare type ByteBuffer = {
|
|
39
|
+
/**
|
|
40
|
+
* @returns The entire current Uint8Array.
|
|
41
|
+
*
|
|
42
|
+
* WARNING: if the buffer grows, the view had changed itself,
|
|
43
|
+
* and the reference will be a invalid one.
|
|
44
|
+
*/
|
|
45
|
+
buffer(): Uint8Array;
|
|
46
|
+
/**
|
|
47
|
+
* @returns The capacity of the current buffer
|
|
48
|
+
*/
|
|
49
|
+
bufferLength(): number;
|
|
50
|
+
/**
|
|
51
|
+
* Resets byteBuffer to avoid creating a new one
|
|
52
|
+
*/
|
|
53
|
+
resetBuffer(): void;
|
|
54
|
+
/**
|
|
55
|
+
* @returns The current read offset
|
|
56
|
+
*/
|
|
57
|
+
currentReadOffset(): number;
|
|
58
|
+
/**
|
|
59
|
+
* @returns The current write offset
|
|
60
|
+
*/
|
|
61
|
+
currentWriteOffset(): number;
|
|
62
|
+
/**
|
|
63
|
+
* Reading purpose
|
|
64
|
+
* Returns the previuos offsset size before incrementing
|
|
65
|
+
*/
|
|
66
|
+
incrementReadOffset(amount: number): number;
|
|
67
|
+
/**
|
|
68
|
+
* @returns How many bytes are available to read.
|
|
69
|
+
*/
|
|
70
|
+
remainingBytes(): number;
|
|
71
|
+
readFloat32(): number;
|
|
72
|
+
readFloat64(): number;
|
|
73
|
+
readInt8(): number;
|
|
74
|
+
readInt16(): number;
|
|
75
|
+
readInt32(): number;
|
|
76
|
+
readInt64(): bigint;
|
|
77
|
+
readUint8(): number;
|
|
78
|
+
readUint16(): number;
|
|
79
|
+
readUint32(): number;
|
|
80
|
+
readUint64(): bigint;
|
|
81
|
+
readBuffer(): Uint8Array;
|
|
82
|
+
/**
|
|
83
|
+
* Writing purpose
|
|
84
|
+
*/
|
|
85
|
+
/**
|
|
86
|
+
* Increment offset
|
|
87
|
+
* @param amount - how many bytes
|
|
88
|
+
* @returns The offset when this reserving starts.
|
|
89
|
+
*/
|
|
90
|
+
incrementWriteOffset(amount: number): number;
|
|
91
|
+
/**
|
|
92
|
+
* @returns The total number of bytes writen in the buffer.
|
|
93
|
+
*/
|
|
94
|
+
size(): number;
|
|
95
|
+
/**
|
|
96
|
+
* Take care using this function, if you modify the data after, the
|
|
97
|
+
* returned subarray will change too. If you'll modify the content of the
|
|
98
|
+
* bytebuffer, maybe you want to use toCopiedBinary()
|
|
99
|
+
*
|
|
100
|
+
* @returns The subarray from 0 to offset as reference.
|
|
101
|
+
*/
|
|
102
|
+
toBinary(): Uint8Array;
|
|
103
|
+
/**
|
|
104
|
+
* Safe copied buffer of the current data of ByteBuffer
|
|
105
|
+
*
|
|
106
|
+
* @returns The subarray from 0 to offset.
|
|
107
|
+
*/
|
|
108
|
+
toCopiedBinary(): Uint8Array;
|
|
109
|
+
writeBuffer(value: Uint8Array, writeLength?: boolean): void;
|
|
110
|
+
writeFloat32(value: number): void;
|
|
111
|
+
writeFloat64(value: number): void;
|
|
112
|
+
writeInt8(value: number): void;
|
|
113
|
+
writeInt16(value: number): void;
|
|
114
|
+
writeInt32(value: number): void;
|
|
115
|
+
writeInt64(value: bigint): void;
|
|
116
|
+
writeUint8(value: number): void;
|
|
117
|
+
writeUint16(value: number): void;
|
|
118
|
+
writeUint32(value: number): void;
|
|
119
|
+
writeUint64(value: bigint): void;
|
|
120
|
+
getFloat32(offset: number): number;
|
|
121
|
+
getFloat64(offset: number): number;
|
|
122
|
+
getInt8(offset: number): number;
|
|
123
|
+
getInt16(offset: number): number;
|
|
124
|
+
getInt32(offset: number): number;
|
|
125
|
+
getInt64(offset: number): bigint;
|
|
126
|
+
getUint8(offset: number): number;
|
|
127
|
+
getUint16(offset: number): number;
|
|
128
|
+
getUint32(offset: number): number;
|
|
129
|
+
getUint64(offset: number): bigint;
|
|
130
|
+
setFloat32(offset: number, value: number): void;
|
|
131
|
+
setFloat64(offset: number, value: number): void;
|
|
132
|
+
setInt8(offset: number, value: number): void;
|
|
133
|
+
setInt16(offset: number, value: number): void;
|
|
134
|
+
setInt32(offset: number, value: number): void;
|
|
135
|
+
setInt64(offset: number, value: bigint): void;
|
|
136
|
+
setUint8(offset: number, value: number): void;
|
|
137
|
+
setUint16(offset: number, value: number): void;
|
|
138
|
+
setUint32(offset: number, value: number): void;
|
|
139
|
+
setUint64(offset: number, value: bigint): void;
|
|
140
|
+
};
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Take the max between currentSize and intendedSize and then plus 1024. Then,
|
|
3
|
+
* find the next nearer multiple of 1024.
|
|
4
|
+
* @param currentSize - number
|
|
5
|
+
* @param intendedSize - number
|
|
6
|
+
* @returns the calculated number
|
|
7
|
+
*/
|
|
8
|
+
function getNextSize(currentSize, intendedSize) {
|
|
9
|
+
const minNewSize = Math.max(currentSize, intendedSize) + 1024;
|
|
10
|
+
return Math.ceil(minNewSize / 1024) * 1024;
|
|
11
|
+
}
|
|
12
|
+
const defaultInitialCapacity = 10240;
|
|
13
|
+
/**
|
|
14
|
+
* ByteBuffer is a wrapper of DataView which also adds a read and write offset.
|
|
15
|
+
* Also in a write operation it resizes the buffer is being used if it needs.
|
|
16
|
+
*
|
|
17
|
+
* - Use read and write function to generate or consume data.
|
|
18
|
+
* - Use set and get only if you are sure that you're doing.
|
|
19
|
+
*/
|
|
20
|
+
export function createByteBuffer(options = {}) {
|
|
21
|
+
const initialROffset = options.reading?.currentOffset || 0;
|
|
22
|
+
let initialBuffer = null;
|
|
23
|
+
let initialWOffset = 0;
|
|
24
|
+
if (options.writing) {
|
|
25
|
+
initialBuffer = options.writing.buffer;
|
|
26
|
+
if (options.writing.currentOffset) {
|
|
27
|
+
initialWOffset = options.writing.currentOffset;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else if (options.reading) {
|
|
31
|
+
initialBuffer = options.reading.buffer;
|
|
32
|
+
initialWOffset = options.reading.length || options.reading.buffer.length;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
initialBuffer = new Uint8Array(options.initialCapacity || defaultInitialCapacity);
|
|
36
|
+
}
|
|
37
|
+
let buffer = initialBuffer;
|
|
38
|
+
let view = new DataView(buffer.buffer, buffer.byteOffset);
|
|
39
|
+
let woffset = initialWOffset;
|
|
40
|
+
let roffset = initialROffset;
|
|
41
|
+
/**
|
|
42
|
+
* Increement the write offset and resize the buffer if it needs.
|
|
43
|
+
*/
|
|
44
|
+
const woAdd = (amount) => {
|
|
45
|
+
if (woffset + amount > buffer.byteLength) {
|
|
46
|
+
const newsize = getNextSize(buffer.byteLength, woffset + amount);
|
|
47
|
+
const newBuffer = new Uint8Array(newsize);
|
|
48
|
+
newBuffer.set(buffer);
|
|
49
|
+
buffer = newBuffer;
|
|
50
|
+
view = new DataView(buffer.buffer);
|
|
51
|
+
}
|
|
52
|
+
woffset += amount;
|
|
53
|
+
return woffset - amount;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Increment the read offset and throw an error if it's trying to read
|
|
57
|
+
* outside the bounds.
|
|
58
|
+
*/
|
|
59
|
+
const roAdd = (amount) => {
|
|
60
|
+
if (roffset + amount > woffset) {
|
|
61
|
+
throw new Error('Outside of the bounds of writen data.');
|
|
62
|
+
}
|
|
63
|
+
roffset += amount;
|
|
64
|
+
return roffset - amount;
|
|
65
|
+
};
|
|
66
|
+
return {
|
|
67
|
+
buffer() {
|
|
68
|
+
return buffer;
|
|
69
|
+
},
|
|
70
|
+
bufferLength() {
|
|
71
|
+
return buffer.length;
|
|
72
|
+
},
|
|
73
|
+
resetBuffer() {
|
|
74
|
+
roffset = 0;
|
|
75
|
+
woffset = 0;
|
|
76
|
+
},
|
|
77
|
+
currentReadOffset() {
|
|
78
|
+
return roffset;
|
|
79
|
+
},
|
|
80
|
+
currentWriteOffset() {
|
|
81
|
+
return woffset;
|
|
82
|
+
},
|
|
83
|
+
incrementReadOffset(amount) {
|
|
84
|
+
return roAdd(amount);
|
|
85
|
+
},
|
|
86
|
+
remainingBytes() {
|
|
87
|
+
return woffset - roffset;
|
|
88
|
+
},
|
|
89
|
+
readFloat32() {
|
|
90
|
+
return view.getFloat32(roAdd(4));
|
|
91
|
+
},
|
|
92
|
+
readFloat64() {
|
|
93
|
+
return view.getFloat64(roAdd(8));
|
|
94
|
+
},
|
|
95
|
+
readInt8() {
|
|
96
|
+
return view.getInt8(roAdd(1));
|
|
97
|
+
},
|
|
98
|
+
readInt16() {
|
|
99
|
+
return view.getInt16(roAdd(2));
|
|
100
|
+
},
|
|
101
|
+
readInt32() {
|
|
102
|
+
return view.getInt32(roAdd(4));
|
|
103
|
+
},
|
|
104
|
+
readInt64() {
|
|
105
|
+
return view.getBigInt64(roAdd(8));
|
|
106
|
+
},
|
|
107
|
+
readUint8() {
|
|
108
|
+
return view.getUint8(roAdd(1));
|
|
109
|
+
},
|
|
110
|
+
readUint16() {
|
|
111
|
+
return view.getUint16(roAdd(2));
|
|
112
|
+
},
|
|
113
|
+
readUint32() {
|
|
114
|
+
return view.getUint32(roAdd(4));
|
|
115
|
+
},
|
|
116
|
+
readUint64() {
|
|
117
|
+
return view.getBigUint64(roAdd(8));
|
|
118
|
+
},
|
|
119
|
+
readBuffer() {
|
|
120
|
+
const length = view.getUint32(roAdd(4));
|
|
121
|
+
return buffer.subarray(roAdd(length), roAdd(0));
|
|
122
|
+
},
|
|
123
|
+
incrementWriteOffset(amount) {
|
|
124
|
+
return woAdd(amount);
|
|
125
|
+
},
|
|
126
|
+
size() {
|
|
127
|
+
return woffset;
|
|
128
|
+
},
|
|
129
|
+
toBinary() {
|
|
130
|
+
return buffer.subarray(0, woffset);
|
|
131
|
+
},
|
|
132
|
+
toCopiedBinary() {
|
|
133
|
+
return new Uint8Array(this.toBinary());
|
|
134
|
+
},
|
|
135
|
+
writeBuffer(value, writeLength = true) {
|
|
136
|
+
if (writeLength) {
|
|
137
|
+
this.writeUint32(value.byteLength);
|
|
138
|
+
}
|
|
139
|
+
const o = woAdd(value.byteLength);
|
|
140
|
+
buffer.set(value, o);
|
|
141
|
+
},
|
|
142
|
+
writeFloat32(value) {
|
|
143
|
+
const o = woAdd(4);
|
|
144
|
+
view.setFloat32(o, value);
|
|
145
|
+
},
|
|
146
|
+
writeFloat64(value) {
|
|
147
|
+
const o = woAdd(8);
|
|
148
|
+
view.setFloat64(o, value);
|
|
149
|
+
},
|
|
150
|
+
writeInt8(value) {
|
|
151
|
+
const o = woAdd(1);
|
|
152
|
+
view.setInt8(o, value);
|
|
153
|
+
},
|
|
154
|
+
writeInt16(value) {
|
|
155
|
+
const o = woAdd(2);
|
|
156
|
+
view.setInt16(o, value);
|
|
157
|
+
},
|
|
158
|
+
writeInt32(value) {
|
|
159
|
+
const o = woAdd(4);
|
|
160
|
+
view.setInt32(o, value);
|
|
161
|
+
},
|
|
162
|
+
writeInt64(value) {
|
|
163
|
+
const o = woAdd(8);
|
|
164
|
+
view.setBigInt64(o, value);
|
|
165
|
+
},
|
|
166
|
+
writeUint8(value) {
|
|
167
|
+
const o = woAdd(1);
|
|
168
|
+
view.setUint8(o, value);
|
|
169
|
+
},
|
|
170
|
+
writeUint16(value) {
|
|
171
|
+
const o = woAdd(2);
|
|
172
|
+
view.setUint16(o, value);
|
|
173
|
+
},
|
|
174
|
+
writeUint32(value) {
|
|
175
|
+
const o = woAdd(4);
|
|
176
|
+
view.setUint32(o, value);
|
|
177
|
+
},
|
|
178
|
+
writeUint64(value) {
|
|
179
|
+
const o = woAdd(8);
|
|
180
|
+
view.setBigUint64(o, value);
|
|
181
|
+
},
|
|
182
|
+
// Dataview Proxy
|
|
183
|
+
getFloat32(offset) {
|
|
184
|
+
return view.getFloat32(offset);
|
|
185
|
+
},
|
|
186
|
+
getFloat64(offset) {
|
|
187
|
+
return view.getFloat64(offset);
|
|
188
|
+
},
|
|
189
|
+
getInt8(offset) {
|
|
190
|
+
return view.getInt8(offset);
|
|
191
|
+
},
|
|
192
|
+
getInt16(offset) {
|
|
193
|
+
return view.getInt16(offset);
|
|
194
|
+
},
|
|
195
|
+
getInt32(offset) {
|
|
196
|
+
return view.getInt32(offset);
|
|
197
|
+
},
|
|
198
|
+
getInt64(offset) {
|
|
199
|
+
return view.getBigInt64(offset);
|
|
200
|
+
},
|
|
201
|
+
getUint8(offset) {
|
|
202
|
+
return view.getUint8(offset);
|
|
203
|
+
},
|
|
204
|
+
getUint16(offset) {
|
|
205
|
+
return view.getUint16(offset);
|
|
206
|
+
},
|
|
207
|
+
getUint32(offset) {
|
|
208
|
+
return view.getUint32(offset);
|
|
209
|
+
},
|
|
210
|
+
getUint64(offset) {
|
|
211
|
+
return view.getBigUint64(offset);
|
|
212
|
+
},
|
|
213
|
+
setFloat32(offset, value) {
|
|
214
|
+
view.setFloat32(offset, value);
|
|
215
|
+
},
|
|
216
|
+
setFloat64(offset, value) {
|
|
217
|
+
view.setFloat64(offset, value);
|
|
218
|
+
},
|
|
219
|
+
setInt8(offset, value) {
|
|
220
|
+
view.setInt8(offset, value);
|
|
221
|
+
},
|
|
222
|
+
setInt16(offset, value) {
|
|
223
|
+
view.setInt16(offset, value);
|
|
224
|
+
},
|
|
225
|
+
setInt32(offset, value) {
|
|
226
|
+
view.setInt32(offset, value);
|
|
227
|
+
},
|
|
228
|
+
setInt64(offset, value) {
|
|
229
|
+
view.setBigInt64(offset, value);
|
|
230
|
+
},
|
|
231
|
+
setUint8(offset, value) {
|
|
232
|
+
view.setUint8(offset, value);
|
|
233
|
+
},
|
|
234
|
+
setUint16(offset, value) {
|
|
235
|
+
view.setUint16(offset, value);
|
|
236
|
+
},
|
|
237
|
+
setUint32(offset, value) {
|
|
238
|
+
view.setUint32(offset, value);
|
|
239
|
+
},
|
|
240
|
+
setUint64(offset, value) {
|
|
241
|
+
view.setBigUint64(offset, value);
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ComponentDefinition } from '../../engine/component';
|
|
2
|
+
import { Entity } from '../../engine/entity';
|
|
3
|
+
import { ByteBuffer } from '../ByteBuffer';
|
|
4
|
+
import WireMessage from '../wireMessage';
|
|
5
|
+
export declare namespace ComponentOperation {
|
|
6
|
+
/**
|
|
7
|
+
* @param entity - Uint32 number of the entity
|
|
8
|
+
* @param componentId - Uint32 number of id
|
|
9
|
+
* @param timestamp - Uint64 Lamport timestamp
|
|
10
|
+
* @param data - Uint8[] data of component
|
|
11
|
+
*/
|
|
12
|
+
type IPutComponent = {
|
|
13
|
+
entity: Entity;
|
|
14
|
+
componentId: number;
|
|
15
|
+
timestamp: number;
|
|
16
|
+
data: Uint8Array;
|
|
17
|
+
};
|
|
18
|
+
type IDeleteComponent = {
|
|
19
|
+
entity: Entity;
|
|
20
|
+
componentId: number;
|
|
21
|
+
timestamp: number;
|
|
22
|
+
data?: undefined;
|
|
23
|
+
};
|
|
24
|
+
const MESSAGE_HEADER_LENGTH = 20;
|
|
25
|
+
/**
|
|
26
|
+
* Call this function for an optimal writing data passing the ByteBuffer
|
|
27
|
+
* already allocated
|
|
28
|
+
*/
|
|
29
|
+
function write(type: WireMessage.Enum, entity: Entity, timestamp: number, componentDefinition: ComponentDefinition<any, any>, buf: ByteBuffer): void;
|
|
30
|
+
function read(buf: ByteBuffer): (WireMessage.Header & (IPutComponent | IDeleteComponent)) | null;
|
|
31
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import WireMessage from '../wireMessage';
|
|
2
|
+
export var ComponentOperation;
|
|
3
|
+
(function (ComponentOperation) {
|
|
4
|
+
ComponentOperation.MESSAGE_HEADER_LENGTH = 20;
|
|
5
|
+
/**
|
|
6
|
+
* Call this function for an optimal writing data passing the ByteBuffer
|
|
7
|
+
* already allocated
|
|
8
|
+
*/
|
|
9
|
+
function write(type, entity, timestamp, componentDefinition, buf) {
|
|
10
|
+
// reserve the beginning
|
|
11
|
+
const startMessageOffset = buf.incrementWriteOffset(WireMessage.HEADER_LENGTH + ComponentOperation.MESSAGE_HEADER_LENGTH);
|
|
12
|
+
// write body
|
|
13
|
+
if (type === WireMessage.Enum.PUT_COMPONENT) {
|
|
14
|
+
componentDefinition.writeToByteBuffer(entity, buf);
|
|
15
|
+
}
|
|
16
|
+
const messageLength = buf.size() - startMessageOffset;
|
|
17
|
+
// Write WireMessage header
|
|
18
|
+
buf.setUint32(startMessageOffset, messageLength);
|
|
19
|
+
buf.setUint32(startMessageOffset + 4, type);
|
|
20
|
+
// Write ComponentOperation header
|
|
21
|
+
buf.setUint32(startMessageOffset + 8, entity);
|
|
22
|
+
buf.setUint32(startMessageOffset + 12, componentDefinition._id);
|
|
23
|
+
buf.setUint64(startMessageOffset + 16, BigInt(timestamp));
|
|
24
|
+
buf.setUint32(startMessageOffset + 24, messageLength - ComponentOperation.MESSAGE_HEADER_LENGTH - WireMessage.HEADER_LENGTH);
|
|
25
|
+
}
|
|
26
|
+
ComponentOperation.write = write;
|
|
27
|
+
function read(buf) {
|
|
28
|
+
const header = WireMessage.readHeader(buf);
|
|
29
|
+
if (!header) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const common = {
|
|
33
|
+
...header,
|
|
34
|
+
entity: buf.readUint32(),
|
|
35
|
+
componentId: buf.readInt32(),
|
|
36
|
+
timestamp: Number(buf.readUint64())
|
|
37
|
+
};
|
|
38
|
+
if (header.type === WireMessage.Enum.DELETE_COMPONENT) {
|
|
39
|
+
return common;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
...common,
|
|
43
|
+
data: buf.readBuffer()
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
ComponentOperation.read = read;
|
|
47
|
+
})(ComponentOperation || (ComponentOperation = {}));
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The wire message is the top-level message that can be packed
|
|
3
|
+
* inside it can contain a data with another structure or protocol
|
|
4
|
+
*
|
|
5
|
+
* Each wire message has three primitive property that it'll never change
|
|
6
|
+
* ---> length uint32 (message size up to 4,294,967,295)
|
|
7
|
+
* ---> version uint32 (for now just a number which is zero)
|
|
8
|
+
* ---> message type uint32
|
|
9
|
+
* The length indicates how many bytes are above self, the version in
|
|
10
|
+
* combination with message type defines the set of handlers that will be
|
|
11
|
+
* available to process the message
|
|
12
|
+
*
|
|
13
|
+
*/
|
|
14
|
+
import { ByteBuffer } from './ByteBuffer';
|
|
15
|
+
export declare namespace WireMessage {
|
|
16
|
+
type Uint32 = number;
|
|
17
|
+
enum Enum {
|
|
18
|
+
RESERVED = 0,
|
|
19
|
+
PUT_COMPONENT = 1,
|
|
20
|
+
DELETE_COMPONENT = 2,
|
|
21
|
+
MAX_MESSAGE_TYPE = 3
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* @param length - Uint32 the length of all message (including the header)
|
|
25
|
+
* @param type - define the function which handles the data
|
|
26
|
+
*/
|
|
27
|
+
type Header = {
|
|
28
|
+
length: Uint32;
|
|
29
|
+
type: Uint32;
|
|
30
|
+
};
|
|
31
|
+
const HEADER_LENGTH = 8;
|
|
32
|
+
/**
|
|
33
|
+
* Validate if the message incoming is completed
|
|
34
|
+
* @param buf - ByteBuffer
|
|
35
|
+
*/
|
|
36
|
+
function validate(buf: ByteBuffer): boolean;
|
|
37
|
+
function readHeader(buf: ByteBuffer): Header | null;
|
|
38
|
+
}
|
|
39
|
+
export default WireMessage;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The wire message is the top-level message that can be packed
|
|
3
|
+
* inside it can contain a data with another structure or protocol
|
|
4
|
+
*
|
|
5
|
+
* Each wire message has three primitive property that it'll never change
|
|
6
|
+
* ---> length uint32 (message size up to 4,294,967,295)
|
|
7
|
+
* ---> version uint32 (for now just a number which is zero)
|
|
8
|
+
* ---> message type uint32
|
|
9
|
+
* The length indicates how many bytes are above self, the version in
|
|
10
|
+
* combination with message type defines the set of handlers that will be
|
|
11
|
+
* available to process the message
|
|
12
|
+
*
|
|
13
|
+
*/
|
|
14
|
+
export var WireMessage;
|
|
15
|
+
(function (WireMessage) {
|
|
16
|
+
let Enum;
|
|
17
|
+
(function (Enum) {
|
|
18
|
+
Enum[Enum["RESERVED"] = 0] = "RESERVED";
|
|
19
|
+
// Component Operation
|
|
20
|
+
Enum[Enum["PUT_COMPONENT"] = 1] = "PUT_COMPONENT";
|
|
21
|
+
Enum[Enum["DELETE_COMPONENT"] = 2] = "DELETE_COMPONENT";
|
|
22
|
+
Enum[Enum["MAX_MESSAGE_TYPE"] = 3] = "MAX_MESSAGE_TYPE";
|
|
23
|
+
})(Enum = WireMessage.Enum || (WireMessage.Enum = {}));
|
|
24
|
+
WireMessage.HEADER_LENGTH = 8;
|
|
25
|
+
/**
|
|
26
|
+
* Validate if the message incoming is completed
|
|
27
|
+
* @param buf - ByteBuffer
|
|
28
|
+
*/
|
|
29
|
+
function validate(buf) {
|
|
30
|
+
const rem = buf.remainingBytes();
|
|
31
|
+
if (rem < WireMessage.HEADER_LENGTH) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
const messageLength = buf.getUint32(buf.currentReadOffset());
|
|
35
|
+
if (rem < messageLength) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
WireMessage.validate = validate;
|
|
41
|
+
function readHeader(buf) {
|
|
42
|
+
if (!validate(buf)) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
length: buf.readUint32(),
|
|
47
|
+
type: buf.readUint32()
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
WireMessage.readHeader = readHeader;
|
|
51
|
+
})(WireMessage || (WireMessage = {}));
|
|
52
|
+
export default WireMessage;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
function getAndClean(value) {
|
|
2
|
+
const messagesToProcess = Array.from(value);
|
|
3
|
+
value.length = 0;
|
|
4
|
+
return messagesToProcess;
|
|
5
|
+
}
|
|
6
|
+
export function createTaskSystem(engine) {
|
|
7
|
+
const tasks = [];
|
|
8
|
+
async function runTask(task) {
|
|
9
|
+
try {
|
|
10
|
+
const resp = await task();
|
|
11
|
+
return resp;
|
|
12
|
+
}
|
|
13
|
+
catch (e) {
|
|
14
|
+
console.error(e);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function executeTasks() {
|
|
18
|
+
for (const task of getAndClean(tasks)) {
|
|
19
|
+
runTask(task).catch(console.error);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
engine.addSystem(executeTasks);
|
|
23
|
+
return {
|
|
24
|
+
executeTask(task) {
|
|
25
|
+
tasks.push(task);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IEngine } from '../../engine';
|
|
2
|
+
import { Entity } from '../../engine/entity';
|
|
3
|
+
import { Transport } from './types';
|
|
4
|
+
export declare function crdtSceneSystem(engine: Pick<IEngine, 'getComponent'>): {
|
|
5
|
+
createMessages: (dirtyMap: Map<Entity, Set<number>>) => void;
|
|
6
|
+
receiveMessages: () => void;
|
|
7
|
+
addTransport: (transport: Transport) => void;
|
|
8
|
+
};
|