@dcl/ecs 7.1.12-4982829389.commit-f2f84bd → 7.1.12-4983011170.commit-adaaaa2
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/dist-cjs/components/component-number.d.ts +7 -0
- package/dist-cjs/components/component-number.js +44 -0
- package/dist-cjs/components/extended/Animator.d.ts +46 -0
- package/dist-cjs/components/extended/Animator.js +62 -0
- package/dist-cjs/components/extended/Material.d.ts +42 -0
- package/dist-cjs/components/extended/Material.js +54 -0
- package/dist-cjs/components/extended/MeshCollider.d.ts +38 -0
- package/dist-cjs/components/extended/MeshCollider.js +43 -0
- package/dist-cjs/components/extended/MeshRenderer.d.ts +36 -0
- package/dist-cjs/components/extended/MeshRenderer.js +31 -0
- package/dist-cjs/components/generated/Animator.gen.d.ts +1 -0
- package/dist-cjs/components/generated/Animator.gen.js +28 -0
- package/dist-cjs/components/generated/AudioSource.gen.d.ts +1 -0
- package/dist-cjs/components/generated/AudioSource.gen.js +28 -0
- package/dist-cjs/components/generated/AudioStream.gen.d.ts +1 -0
- package/dist-cjs/components/generated/AudioStream.gen.js +28 -0
- package/dist-cjs/components/generated/AvatarAttach.gen.d.ts +1 -0
- package/dist-cjs/components/generated/AvatarAttach.gen.js +28 -0
- package/dist-cjs/components/generated/AvatarModifierArea.gen.d.ts +1 -0
- package/dist-cjs/components/generated/AvatarModifierArea.gen.js +28 -0
- package/dist-cjs/components/generated/AvatarShape.gen.d.ts +1 -0
- package/dist-cjs/components/generated/AvatarShape.gen.js +28 -0
- package/dist-cjs/components/generated/Billboard.gen.d.ts +1 -0
- package/dist-cjs/components/generated/Billboard.gen.js +28 -0
- package/dist-cjs/components/generated/CameraMode.gen.d.ts +1 -0
- package/dist-cjs/components/generated/CameraMode.gen.js +28 -0
- package/dist-cjs/components/generated/CameraModeArea.gen.d.ts +1 -0
- package/dist-cjs/components/generated/CameraModeArea.gen.js +28 -0
- package/dist-cjs/components/generated/EngineInfo.gen.d.ts +1 -0
- package/dist-cjs/components/generated/EngineInfo.gen.js +28 -0
- package/dist-cjs/components/generated/GltfContainer.gen.d.ts +1 -0
- package/dist-cjs/components/generated/GltfContainer.gen.js +28 -0
- package/dist-cjs/components/generated/GltfContainerLoadingState.gen.d.ts +1 -0
- package/dist-cjs/components/generated/GltfContainerLoadingState.gen.js +28 -0
- package/dist-cjs/components/generated/Material.gen.d.ts +1 -0
- package/dist-cjs/components/generated/Material.gen.js +28 -0
- package/dist-cjs/components/generated/MeshCollider.gen.d.ts +1 -0
- package/dist-cjs/components/generated/MeshCollider.gen.js +28 -0
- package/dist-cjs/components/generated/MeshRenderer.gen.d.ts +1 -0
- package/dist-cjs/components/generated/MeshRenderer.gen.js +28 -0
- package/dist-cjs/components/generated/NftShape.gen.d.ts +1 -0
- package/dist-cjs/components/generated/NftShape.gen.js +28 -0
- package/dist-cjs/components/generated/PointerEvents.gen.d.ts +1 -0
- package/dist-cjs/components/generated/PointerEvents.gen.js +28 -0
- package/dist-cjs/components/generated/PointerEventsResult.gen.d.ts +1 -0
- package/dist-cjs/components/generated/PointerEventsResult.gen.js +28 -0
- package/dist-cjs/components/generated/PointerLock.gen.d.ts +1 -0
- package/dist-cjs/components/generated/PointerLock.gen.js +28 -0
- package/dist-cjs/components/generated/Raycast.gen.d.ts +1 -0
- package/dist-cjs/components/generated/Raycast.gen.js +28 -0
- package/dist-cjs/components/generated/RaycastResult.gen.d.ts +1 -0
- package/dist-cjs/components/generated/RaycastResult.gen.js +28 -0
- package/dist-cjs/components/generated/TextShape.gen.d.ts +1 -0
- package/dist-cjs/components/generated/TextShape.gen.js +28 -0
- package/dist-cjs/components/generated/UiBackground.gen.d.ts +1 -0
- package/dist-cjs/components/generated/UiBackground.gen.js +28 -0
- package/dist-cjs/components/generated/UiCanvasInformation.gen.d.ts +1 -0
- package/dist-cjs/components/generated/UiCanvasInformation.gen.js +28 -0
- package/dist-cjs/components/generated/UiDropdown.gen.d.ts +1 -0
- package/dist-cjs/components/generated/UiDropdown.gen.js +28 -0
- package/dist-cjs/components/generated/UiDropdownResult.gen.d.ts +1 -0
- package/dist-cjs/components/generated/UiDropdownResult.gen.js +28 -0
- package/dist-cjs/components/generated/UiInput.gen.d.ts +1 -0
- package/dist-cjs/components/generated/UiInput.gen.js +28 -0
- package/dist-cjs/components/generated/UiInputResult.gen.d.ts +1 -0
- package/dist-cjs/components/generated/UiInputResult.gen.js +28 -0
- package/dist-cjs/components/generated/UiText.gen.d.ts +1 -0
- package/dist-cjs/components/generated/UiText.gen.js +28 -0
- package/dist-cjs/components/generated/UiTransform.gen.d.ts +1 -0
- package/dist-cjs/components/generated/UiTransform.gen.js +28 -0
- package/dist-cjs/components/generated/VideoEvent.gen.d.ts +1 -0
- package/dist-cjs/components/generated/VideoEvent.gen.js +28 -0
- package/dist-cjs/components/generated/VideoPlayer.gen.d.ts +1 -0
- package/dist-cjs/components/generated/VideoPlayer.gen.js +28 -0
- package/dist-cjs/components/generated/VisibilityComponent.gen.d.ts +1 -0
- package/dist-cjs/components/generated/VisibilityComponent.gen.js +28 -0
- package/dist-cjs/components/generated/component-names.gen.d.ts +4 -0
- package/dist-cjs/components/generated/component-names.gen.js +42 -0
- package/dist-cjs/components/generated/global.gen.d.ts +60 -0
- package/dist-cjs/components/generated/global.gen.js +61 -0
- package/dist-cjs/components/generated/index.gen.d.ts +139 -0
- package/dist-cjs/components/generated/index.gen.js +222 -0
- package/dist-cjs/components/generated/pb/decentraland/common/border_rect.gen.d.ts +35 -0
- package/dist-cjs/components/generated/pb/decentraland/common/border_rect.gen.js +139 -0
- package/dist-cjs/components/generated/pb/decentraland/common/colors.gen.d.ts +32 -0
- package/dist-cjs/components/generated/pb/decentraland/common/colors.gen.js +130 -0
- package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.d.ts +91 -0
- package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.js +254 -0
- package/dist-cjs/components/generated/pb/decentraland/common/vectors.gen.d.ts +61 -0
- package/dist-cjs/components/generated/pb/decentraland/common/vectors.gen.js +233 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/animator.gen.d.ts +50 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/animator.gen.js +147 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_source.gen.d.ts +34 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_source.gen.js +83 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_stream.gen.d.ts +24 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_stream.gen.js +65 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_attach.gen.d.ts +37 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_attach.gen.js +67 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +44 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +86 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +56 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +176 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/billboard.gen.d.ts +38 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/billboard.gen.js +63 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode.gen.d.ts +20 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode.gen.js +47 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +32 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +57 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/camera_type.gen.d.ts +9 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/camera_type.gen.js +15 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/id.gen.d.ts +1 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/id.gen.js +3 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +29 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +36 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/loading_state.gen.d.ts +10 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/loading_state.gen.js +16 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/raycast_hit.gen.d.ts +29 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/raycast_hit.gen.js +110 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/texts.gen.d.ts +22 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/texts.gen.js +29 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/engine_info.gen.d.ts +25 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/engine_info.gen.js +65 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container.gen.d.ts +25 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container.gen.js +65 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +19 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +47 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +96 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.js +326 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +120 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +246 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +96 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +246 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/nft_shape.gen.d.ts +58 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/nft_shape.gen.js +96 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/pointer_events.gen.d.ts +67 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/pointer_events.gen.js +159 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/pointer_events_result.gen.d.ts +26 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/pointer_events_result.gen.js +93 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/pointer_lock.gen.d.ts +19 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/pointer_lock.gen.js +47 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +63 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.js +152 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast_result.gen.d.ts +32 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast_result.gen.js +85 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/text_shape.gen.d.ts +65 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/text_shape.gen.js +250 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_background.gen.d.ts +47 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_background.gen.js +119 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas_information.gen.d.ts +29 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas_information.gen.js +75 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_dropdown.gen.d.ts +29 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_dropdown.gen.js +130 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_dropdown_result.gen.d.ts +14 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_dropdown_result.gen.js +47 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input.gen.d.ts +28 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input.gen.js +120 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input_result.gen.d.ts +14 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input_result.gen.js +47 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +25 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +84 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +179 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +644 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/video_event.gen.d.ts +33 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/video_event.gen.js +97 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/video_player.gen.d.ts +25 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/video_player.gen.js +99 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/visibility_component.gen.d.ts +15 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/visibility_component.gen.js +47 -0
- package/dist-cjs/components/generated/pb/google/protobuf/descriptor.gen.d.ts +468 -0
- package/dist-cjs/components/generated/pb/google/protobuf/descriptor.gen.js +1936 -0
- package/dist-cjs/components/generated/types.gen.d.ts +9 -0
- package/dist-cjs/components/generated/types.gen.js +30 -0
- package/dist-cjs/components/index.d.ts +14 -0
- package/dist-cjs/components/index.js +38 -0
- package/dist-cjs/components/manual/Transform.d.ts +40 -0
- package/dist-cjs/components/manual/Transform.js +110 -0
- package/dist-cjs/components/types.d.ts +5 -0
- package/dist-cjs/components/types.js +2 -0
- package/dist-cjs/composite/components.d.ts +18 -0
- package/dist-cjs/composite/components.js +22 -0
- package/dist-cjs/composite/index.d.ts +51 -0
- package/dist-cjs/composite/index.js +60 -0
- package/dist-cjs/composite/instance.d.ts +34 -0
- package/dist-cjs/composite/instance.js +201 -0
- package/dist-cjs/composite/path.d.ts +3 -0
- package/dist-cjs/composite/path.js +154 -0
- package/dist-cjs/composite/proto/gen/composite.gen.d.ts +71 -0
- package/dist-cjs/composite/proto/gen/composite.gen.js +337 -0
- package/dist-cjs/composite/proto/gen/google/protobuf/struct.gen.d.ts +138 -0
- package/dist-cjs/composite/proto/gen/google/protobuf/struct.gen.js +443 -0
- package/dist-cjs/engine/component.d.ts +149 -0
- package/dist-cjs/engine/component.js +12 -0
- package/dist-cjs/engine/entity.d.ts +49 -0
- package/dist-cjs/engine/entity.js +178 -0
- package/dist-cjs/engine/grow-only-value-set-component-definition.d.ts +8 -0
- package/dist-cjs/engine/grow-only-value-set-component-definition.js +145 -0
- package/dist-cjs/engine/index.d.ts +15 -0
- package/dist-cjs/engine/index.js +247 -0
- package/dist-cjs/engine/input.d.ts +34 -0
- package/dist-cjs/engine/input.js +219 -0
- package/dist-cjs/engine/lww-element-set-component-definition.d.ts +8 -0
- package/dist-cjs/engine/lww-element-set-component-definition.js +264 -0
- package/dist-cjs/engine/readonly.d.ts +29 -0
- package/dist-cjs/engine/readonly.js +10 -0
- package/dist-cjs/engine/systems.d.ts +15 -0
- package/dist-cjs/engine/systems.js +48 -0
- package/dist-cjs/engine/types.d.ts +215 -0
- package/dist-cjs/engine/types.js +17 -0
- package/dist-cjs/index.d.ts +22 -0
- package/dist-cjs/index.js +58 -0
- package/dist-cjs/runtime/crc.d.ts +1 -0
- package/dist-cjs/runtime/crc.js +45 -0
- package/dist-cjs/runtime/helpers/index.d.ts +1 -0
- package/dist-cjs/runtime/helpers/index.js +17 -0
- package/dist-cjs/runtime/helpers/tree.d.ts +32 -0
- package/dist-cjs/runtime/helpers/tree.js +77 -0
- package/dist-cjs/runtime/initialization/index.d.ts +61 -0
- package/dist-cjs/runtime/initialization/index.js +56 -0
- package/dist-cjs/runtime/invariant.d.ts +4 -0
- package/dist-cjs/runtime/invariant.js +17 -0
- package/dist-cjs/runtime/types.d.ts +6 -0
- package/dist-cjs/runtime/types.js +18 -0
- package/dist-cjs/schemas/Array.d.ts +1 -0
- package/dist-cjs/schemas/Array.js +33 -0
- package/dist-cjs/schemas/ISchema.d.ts +35 -0
- package/dist-cjs/schemas/ISchema.js +2 -0
- package/dist-cjs/schemas/Map.d.ts +20 -0
- package/dist-cjs/schemas/Map.js +49 -0
- package/dist-cjs/schemas/OneOf.d.ts +10 -0
- package/dist-cjs/schemas/OneOf.js +35 -0
- package/dist-cjs/schemas/Optional.d.ts +1 -0
- package/dist-cjs/schemas/Optional.js +34 -0
- package/dist-cjs/schemas/basic/Boolean.d.ts +1 -0
- package/dist-cjs/schemas/basic/Boolean.js +21 -0
- package/dist-cjs/schemas/basic/Enum.d.ts +1 -0
- package/dist-cjs/schemas/basic/Enum.js +101 -0
- package/dist-cjs/schemas/basic/Float.d.ts +1 -0
- package/dist-cjs/schemas/basic/Float.js +39 -0
- package/dist-cjs/schemas/basic/Integer.d.ts +9 -0
- package/dist-cjs/schemas/basic/Integer.js +75 -0
- package/dist-cjs/schemas/basic/String.d.ts +1 -0
- package/dist-cjs/schemas/basic/String.js +25 -0
- package/dist-cjs/schemas/buildSchema/index.d.ts +11 -0
- package/dist-cjs/schemas/buildSchema/index.js +114 -0
- package/dist-cjs/schemas/buildSchema/types.d.ts +5 -0
- package/dist-cjs/schemas/buildSchema/types.js +2 -0
- package/dist-cjs/schemas/buildSchema/utils.d.ts +12 -0
- package/dist-cjs/schemas/buildSchema/utils.js +30 -0
- package/dist-cjs/schemas/custom/Color3.d.ts +8 -0
- package/dist-cjs/schemas/custom/Color3.js +32 -0
- package/dist-cjs/schemas/custom/Color4.d.ts +9 -0
- package/dist-cjs/schemas/custom/Color4.js +35 -0
- package/dist-cjs/schemas/custom/Entity.d.ts +1 -0
- package/dist-cjs/schemas/custom/Entity.js +21 -0
- package/dist-cjs/schemas/custom/Quaternion.d.ts +9 -0
- package/dist-cjs/schemas/custom/Quaternion.js +35 -0
- package/dist-cjs/schemas/custom/Vector3.d.ts +8 -0
- package/dist-cjs/schemas/custom/Vector3.js +33 -0
- package/dist-cjs/schemas/index.d.ts +80 -0
- package/dist-cjs/schemas/index.js +84 -0
- package/dist-cjs/schemas/typing.d.ts +30 -0
- package/dist-cjs/schemas/typing.js +2 -0
- package/dist-cjs/serialization/ByteBuffer/index.d.ts +180 -0
- package/dist-cjs/serialization/ByteBuffer/index.js +272 -0
- package/dist-cjs/serialization/crdt/appendValue.d.ts +15 -0
- package/dist-cjs/serialization/crdt/appendValue.js +52 -0
- package/dist-cjs/serialization/crdt/crdtMessageProtocol.d.ts +30 -0
- package/dist-cjs/serialization/crdt/crdtMessageProtocol.js +71 -0
- package/dist-cjs/serialization/crdt/deleteComponent.d.ts +14 -0
- package/dist-cjs/serialization/crdt/deleteComponent.js +45 -0
- package/dist-cjs/serialization/crdt/deleteEntity.d.ts +11 -0
- package/dist-cjs/serialization/crdt/deleteEntity.js +34 -0
- package/dist-cjs/serialization/crdt/index.d.ts +6 -0
- package/dist-cjs/serialization/crdt/index.js +22 -0
- package/dist-cjs/serialization/crdt/message.d.ts +3 -0
- package/dist-cjs/serialization/crdt/message.js +28 -0
- package/dist-cjs/serialization/crdt/putComponent.d.ts +15 -0
- package/dist-cjs/serialization/crdt/putComponent.js +50 -0
- package/dist-cjs/serialization/crdt/types.d.ts +147 -0
- package/dist-cjs/serialization/crdt/types.js +77 -0
- package/dist-cjs/systems/async-task.d.ts +1 -0
- package/dist-cjs/systems/async-task.js +33 -0
- package/dist-cjs/systems/crdt/gset.d.ts +29 -0
- package/dist-cjs/systems/crdt/gset.js +54 -0
- package/dist-cjs/systems/crdt/index.d.ts +7 -0
- package/dist-cjs/systems/crdt/index.js +241 -0
- package/dist-cjs/systems/crdt/types.d.ts +20 -0
- package/dist-cjs/systems/crdt/types.js +2 -0
- package/dist-cjs/systems/crdt/utils.d.ts +15 -0
- package/dist-cjs/systems/crdt/utils.js +52 -0
- package/dist-cjs/systems/cyclicParentingChecker.d.ts +17 -0
- package/dist-cjs/systems/cyclicParentingChecker.js +60 -0
- package/dist-cjs/systems/events.d.ts +49 -0
- package/dist-cjs/systems/events.js +137 -0
- package/dist-cjs/systems/raycast.d.ts +80 -0
- package/dist-cjs/systems/raycast.js +124 -0
- package/dist-cjs/systems/videoEvents.d.ts +14 -0
- package/dist-cjs/systems/videoEvents.js +89 -0
- package/package.json +5 -4
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.createInputSystem = void 0;
|
|
27
|
+
const components = __importStar(require("../components"));
|
|
28
|
+
const InputCommands = [
|
|
29
|
+
0 /* InputAction.IA_POINTER */,
|
|
30
|
+
1 /* InputAction.IA_PRIMARY */,
|
|
31
|
+
2 /* InputAction.IA_SECONDARY */,
|
|
32
|
+
4 /* InputAction.IA_FORWARD */,
|
|
33
|
+
5 /* InputAction.IA_BACKWARD */,
|
|
34
|
+
6 /* InputAction.IA_RIGHT */,
|
|
35
|
+
7 /* InputAction.IA_LEFT */,
|
|
36
|
+
8 /* InputAction.IA_JUMP */,
|
|
37
|
+
9 /* InputAction.IA_WALK */,
|
|
38
|
+
10 /* InputAction.IA_ACTION_3 */,
|
|
39
|
+
11 /* InputAction.IA_ACTION_4 */,
|
|
40
|
+
12 /* InputAction.IA_ACTION_5 */,
|
|
41
|
+
13 /* InputAction.IA_ACTION_6 */
|
|
42
|
+
];
|
|
43
|
+
const InputStateUpdateSystemPriority = 1 << 20;
|
|
44
|
+
/**
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
function createInputSystem(engine) {
|
|
48
|
+
const PointerEventsResult = components.PointerEventsResult(engine);
|
|
49
|
+
const globalState = {
|
|
50
|
+
previousFrameMaxTimestamp: 0,
|
|
51
|
+
currentFrameMaxTimestamp: 0,
|
|
52
|
+
buttonState: new Map(),
|
|
53
|
+
thisFrameCommands: []
|
|
54
|
+
};
|
|
55
|
+
function findLastAction(pointerEventType, inputAction, entity) {
|
|
56
|
+
const ascendingTimestampIterator = PointerEventsResult.get(entity);
|
|
57
|
+
for (const command of Array.from(ascendingTimestampIterator).reverse()) {
|
|
58
|
+
if (command.button === inputAction && command.state === pointerEventType) {
|
|
59
|
+
return command;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function* findCommandsByActionDescending(inputAction, entity) {
|
|
64
|
+
const ascendingTimestampIterator = PointerEventsResult.get(entity);
|
|
65
|
+
for (const command of Array.from(ascendingTimestampIterator).reverse()) {
|
|
66
|
+
if (command.button === inputAction) {
|
|
67
|
+
yield command;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function buttonStateUpdateSystem() {
|
|
72
|
+
// first store the previous' frame timestamp
|
|
73
|
+
let maxTimestamp = globalState.currentFrameMaxTimestamp;
|
|
74
|
+
globalState.previousFrameMaxTimestamp = maxTimestamp;
|
|
75
|
+
if (globalState.thisFrameCommands.length) {
|
|
76
|
+
globalState.thisFrameCommands = [];
|
|
77
|
+
}
|
|
78
|
+
// then iterate over all new commands
|
|
79
|
+
for (const [, commands] of engine.getEntitiesWith(PointerEventsResult)) {
|
|
80
|
+
// TODO: adapt the gset component to have a cached "reversed" option by default
|
|
81
|
+
const arrayCommands = Array.from(commands);
|
|
82
|
+
for (let i = arrayCommands.length - 1; i >= 0; i--) {
|
|
83
|
+
const command = arrayCommands[i];
|
|
84
|
+
if (command.timestamp > maxTimestamp) {
|
|
85
|
+
maxTimestamp = command.timestamp;
|
|
86
|
+
}
|
|
87
|
+
if (command.timestamp > globalState.previousFrameMaxTimestamp) {
|
|
88
|
+
globalState.thisFrameCommands.push(command);
|
|
89
|
+
}
|
|
90
|
+
if (command.state === 0 /* PointerEventType.PET_UP */ || command.state === 1 /* PointerEventType.PET_DOWN */) {
|
|
91
|
+
const prevCommand = globalState.buttonState.get(command.button);
|
|
92
|
+
if (!prevCommand || command.timestamp > prevCommand.timestamp) {
|
|
93
|
+
globalState.buttonState.set(command.button, command);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
// since we are iterating a descending array, we can early finish the
|
|
97
|
+
// loop
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// update current frame's max timestamp
|
|
104
|
+
globalState.currentFrameMaxTimestamp = maxTimestamp;
|
|
105
|
+
}
|
|
106
|
+
engine.addSystem(buttonStateUpdateSystem, InputStateUpdateSystemPriority, '@dcl/ecs#inputSystem');
|
|
107
|
+
function timestampIsCurrentFrame(timestamp) {
|
|
108
|
+
if (timestamp > globalState.previousFrameMaxTimestamp && timestamp <= globalState.currentFrameMaxTimestamp) {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
function getClick(inputAction, entity) {
|
|
116
|
+
if (inputAction !== 3 /* InputAction.IA_ANY */) {
|
|
117
|
+
return findClick(inputAction, entity);
|
|
118
|
+
}
|
|
119
|
+
for (const input of InputCommands) {
|
|
120
|
+
const cmd = findClick(input, entity);
|
|
121
|
+
if (cmd)
|
|
122
|
+
return cmd;
|
|
123
|
+
}
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
function findClick(inputAction, entity) {
|
|
127
|
+
let down = null;
|
|
128
|
+
let up = null;
|
|
129
|
+
// We search the last UP & DOWN command sorted by timestamp descending
|
|
130
|
+
for (const it of findCommandsByActionDescending(inputAction, entity)) {
|
|
131
|
+
if (!up) {
|
|
132
|
+
if (it.state === 0 /* PointerEventType.PET_UP */) {
|
|
133
|
+
up = it;
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else if (!down) {
|
|
138
|
+
if (it.state === 1 /* PointerEventType.PET_DOWN */) {
|
|
139
|
+
down = it;
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (!up || !down)
|
|
145
|
+
return null;
|
|
146
|
+
// If the DOWN command has happen before the UP commands, it means that that a clicked has happen
|
|
147
|
+
if (down.timestamp < up.timestamp && timestampIsCurrentFrame(up.timestamp)) {
|
|
148
|
+
return { up, down };
|
|
149
|
+
}
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
function getInputCommandFromEntity(inputAction, pointerEventType, entity) {
|
|
153
|
+
if (inputAction !== 3 /* InputAction.IA_ANY */) {
|
|
154
|
+
return findInputCommand(inputAction, pointerEventType, entity);
|
|
155
|
+
}
|
|
156
|
+
for (const input of InputCommands) {
|
|
157
|
+
const cmd = findInputCommand(input, pointerEventType, entity);
|
|
158
|
+
if (cmd)
|
|
159
|
+
return cmd;
|
|
160
|
+
}
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
function getInputCommand(inputAction, pointerEventType, entity) {
|
|
164
|
+
if (entity) {
|
|
165
|
+
return getInputCommandFromEntity(inputAction, pointerEventType, entity);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
for (const command of globalState.thisFrameCommands) {
|
|
169
|
+
if (command.button === inputAction && command.state === pointerEventType) {
|
|
170
|
+
return command;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
function findInputCommand(inputAction, pointerEventType, entity) {
|
|
177
|
+
// We search the last pointer Event command sorted by timestamp
|
|
178
|
+
const command = findLastAction(pointerEventType, inputAction, entity);
|
|
179
|
+
if (!command)
|
|
180
|
+
return null;
|
|
181
|
+
if (timestampIsCurrentFrame(command.timestamp)) {
|
|
182
|
+
return command;
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// returns true if there was a DOWN (in any past frame), and then an UP in the last frame
|
|
189
|
+
function isClicked(inputAction, entity) {
|
|
190
|
+
return getClick(inputAction, entity) !== null;
|
|
191
|
+
}
|
|
192
|
+
// returns true if the provided last action was triggered in the last frame
|
|
193
|
+
function isTriggered(inputAction, pointerEventType, entity) {
|
|
194
|
+
if (entity) {
|
|
195
|
+
const command = findLastAction(pointerEventType, inputAction, entity);
|
|
196
|
+
return (command && timestampIsCurrentFrame(command.timestamp)) || false;
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
for (const command of globalState.thisFrameCommands) {
|
|
200
|
+
if (command.button === inputAction && command.state === pointerEventType) {
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// returns the global state of the input. This global state is updated from the system
|
|
208
|
+
function isPressed(inputAction) {
|
|
209
|
+
return globalState.buttonState.get(inputAction)?.state === 1 /* PointerEventType.PET_DOWN */;
|
|
210
|
+
}
|
|
211
|
+
return {
|
|
212
|
+
isPressed,
|
|
213
|
+
getClick,
|
|
214
|
+
getInputCommand,
|
|
215
|
+
isClicked,
|
|
216
|
+
isTriggered
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
exports.createInputSystem = createInputSystem;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ISchema } from '../schemas';
|
|
2
|
+
import { ByteBuffer } from '../serialization/ByteBuffer';
|
|
3
|
+
import { PutComponentMessageBody, DeleteComponentMessageBody, CrdtMessageBody } from '../serialization/crdt';
|
|
4
|
+
import { Entity } from './entity';
|
|
5
|
+
export declare function incrementTimestamp(entity: Entity, timestamps: Map<Entity, number>): number;
|
|
6
|
+
export declare function createDumpLwwFunctionFromCrdt(componentId: number, timestamps: Map<Entity, number>, schema: Pick<ISchema<any>, 'serialize' | 'deserialize'>, data: Map<Entity, unknown>): (buffer: ByteBuffer) => void;
|
|
7
|
+
export declare function createUpdateLwwFromCrdt(componentId: number, timestamps: Map<Entity, number>, schema: Pick<ISchema<any>, 'serialize' | 'deserialize'>, data: Map<Entity, unknown>): (msg: CrdtMessageBody) => [null | PutComponentMessageBody | DeleteComponentMessageBody, any];
|
|
8
|
+
export declare function createGetCrdtMessagesForLww(componentId: number, timestamps: Map<Entity, number>, dirtyIterator: Set<Entity>, schema: Pick<ISchema<any>, 'serialize'>, data: Map<Entity, unknown>): () => Generator<PutComponentMessageBody | DeleteComponentMessageBody, void, unknown>;
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createComponentDefinitionFromSchema = exports.createGetCrdtMessagesForLww = exports.createUpdateLwwFromCrdt = exports.createDumpLwwFunctionFromCrdt = exports.incrementTimestamp = void 0;
|
|
4
|
+
const ByteBuffer_1 = require("../serialization/ByteBuffer");
|
|
5
|
+
const crdt_1 = require("../serialization/crdt");
|
|
6
|
+
const utils_1 = require("../systems/crdt/utils");
|
|
7
|
+
const readonly_1 = require("./readonly");
|
|
8
|
+
function incrementTimestamp(entity, timestamps) {
|
|
9
|
+
const newTimestamp = (timestamps.get(entity) || 0) + 1;
|
|
10
|
+
timestamps.set(entity, newTimestamp);
|
|
11
|
+
return newTimestamp;
|
|
12
|
+
}
|
|
13
|
+
exports.incrementTimestamp = incrementTimestamp;
|
|
14
|
+
function createDumpLwwFunctionFromCrdt(componentId, timestamps, schema, data) {
|
|
15
|
+
return function dumpCrdtState(buffer) {
|
|
16
|
+
for (const [entity, timestamp] of timestamps) {
|
|
17
|
+
/* istanbul ignore else */
|
|
18
|
+
if (data.has(entity)) {
|
|
19
|
+
const it = data.get(entity);
|
|
20
|
+
const buf = new ByteBuffer_1.ReadWriteByteBuffer();
|
|
21
|
+
schema.serialize(it, buf);
|
|
22
|
+
crdt_1.PutComponentOperation.write(entity, timestamp, componentId, buf.toBinary(), buffer);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
crdt_1.DeleteComponent.write(entity, componentId, timestamp, buffer);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
exports.createDumpLwwFunctionFromCrdt = createDumpLwwFunctionFromCrdt;
|
|
31
|
+
function createUpdateLwwFromCrdt(componentId, timestamps, schema, data) {
|
|
32
|
+
/**
|
|
33
|
+
* Process the received message only if the lamport number recieved is higher
|
|
34
|
+
* than the stored one. If its lower, we spread it to the network to correct the peer.
|
|
35
|
+
* If they are equal, the bigger raw data wins.
|
|
36
|
+
|
|
37
|
+
* Returns the recieved data if the lamport number was bigger than ours.
|
|
38
|
+
* If it was an outdated message, then we return void
|
|
39
|
+
* @public
|
|
40
|
+
*/
|
|
41
|
+
function crdtRuleForCurrentState(message) {
|
|
42
|
+
const { entityId, timestamp } = message;
|
|
43
|
+
const currentTimestamp = timestamps.get(entityId);
|
|
44
|
+
// The received message is > than our current value, update our state.components.
|
|
45
|
+
if (currentTimestamp === undefined || currentTimestamp < timestamp) {
|
|
46
|
+
return crdt_1.ProcessMessageResultType.StateUpdatedTimestamp;
|
|
47
|
+
}
|
|
48
|
+
// Outdated Message. Resend our state message through the wire.
|
|
49
|
+
if (currentTimestamp > timestamp) {
|
|
50
|
+
// console.log('2', currentTimestamp, timestamp)
|
|
51
|
+
return crdt_1.ProcessMessageResultType.StateOutdatedTimestamp;
|
|
52
|
+
}
|
|
53
|
+
// Deletes are idempotent
|
|
54
|
+
if (message.type === crdt_1.CrdtMessageType.DELETE_COMPONENT && !data.has(entityId)) {
|
|
55
|
+
return crdt_1.ProcessMessageResultType.NoChanges;
|
|
56
|
+
}
|
|
57
|
+
let currentDataGreater = 0;
|
|
58
|
+
if (data.has(entityId)) {
|
|
59
|
+
const writeBuffer = new ByteBuffer_1.ReadWriteByteBuffer();
|
|
60
|
+
schema.serialize(data.get(entityId), writeBuffer);
|
|
61
|
+
currentDataGreater = (0, utils_1.dataCompare)(writeBuffer.toBinary(), message.data || null);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
currentDataGreater = (0, utils_1.dataCompare)(null, message.data);
|
|
65
|
+
}
|
|
66
|
+
// Same data, same timestamp. Weirdo echo message.
|
|
67
|
+
// console.log('3', currentDataGreater, writeBuffer.toBinary(), (message as any).data || null)
|
|
68
|
+
if (currentDataGreater === 0) {
|
|
69
|
+
return crdt_1.ProcessMessageResultType.NoChanges;
|
|
70
|
+
}
|
|
71
|
+
else if (currentDataGreater > 0) {
|
|
72
|
+
// Current data is greater
|
|
73
|
+
return crdt_1.ProcessMessageResultType.StateOutdatedData;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
// Curent data is lower
|
|
77
|
+
return crdt_1.ProcessMessageResultType.StateUpdatedData;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return (msg) => {
|
|
81
|
+
/* istanbul ignore next */
|
|
82
|
+
if (msg.type !== crdt_1.CrdtMessageType.PUT_COMPONENT && msg.type !== crdt_1.CrdtMessageType.DELETE_COMPONENT)
|
|
83
|
+
/* istanbul ignore next */
|
|
84
|
+
return [null, data.get(msg.entityId)];
|
|
85
|
+
const action = crdtRuleForCurrentState(msg);
|
|
86
|
+
const entity = msg.entityId;
|
|
87
|
+
switch (action) {
|
|
88
|
+
case crdt_1.ProcessMessageResultType.StateUpdatedData:
|
|
89
|
+
case crdt_1.ProcessMessageResultType.StateUpdatedTimestamp: {
|
|
90
|
+
timestamps.set(entity, msg.timestamp);
|
|
91
|
+
if (msg.type === crdt_1.CrdtMessageType.PUT_COMPONENT) {
|
|
92
|
+
const buf = new ByteBuffer_1.ReadWriteByteBuffer(msg.data);
|
|
93
|
+
data.set(entity, schema.deserialize(buf));
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
data.delete(entity);
|
|
97
|
+
}
|
|
98
|
+
return [null, data.get(entity)];
|
|
99
|
+
}
|
|
100
|
+
case crdt_1.ProcessMessageResultType.StateOutdatedTimestamp:
|
|
101
|
+
case crdt_1.ProcessMessageResultType.StateOutdatedData: {
|
|
102
|
+
if (data.has(entity)) {
|
|
103
|
+
const writeBuffer = new ByteBuffer_1.ReadWriteByteBuffer();
|
|
104
|
+
schema.serialize(data.get(entity), writeBuffer);
|
|
105
|
+
return [
|
|
106
|
+
{
|
|
107
|
+
type: crdt_1.CrdtMessageType.PUT_COMPONENT,
|
|
108
|
+
componentId,
|
|
109
|
+
data: writeBuffer.toBinary(),
|
|
110
|
+
entityId: entity,
|
|
111
|
+
timestamp: timestamps.get(entity)
|
|
112
|
+
},
|
|
113
|
+
data.get(entity)
|
|
114
|
+
];
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
return [
|
|
118
|
+
{
|
|
119
|
+
type: crdt_1.CrdtMessageType.DELETE_COMPONENT,
|
|
120
|
+
componentId,
|
|
121
|
+
entityId: entity,
|
|
122
|
+
timestamp: timestamps.get(entity)
|
|
123
|
+
},
|
|
124
|
+
undefined
|
|
125
|
+
];
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return [null, data.get(entity)];
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
exports.createUpdateLwwFromCrdt = createUpdateLwwFromCrdt;
|
|
133
|
+
function createGetCrdtMessagesForLww(componentId, timestamps, dirtyIterator, schema, data) {
|
|
134
|
+
return function* () {
|
|
135
|
+
for (const entity of dirtyIterator) {
|
|
136
|
+
const newTimestamp = incrementTimestamp(entity, timestamps);
|
|
137
|
+
if (data.has(entity)) {
|
|
138
|
+
const writeBuffer = new ByteBuffer_1.ReadWriteByteBuffer();
|
|
139
|
+
schema.serialize(data.get(entity), writeBuffer);
|
|
140
|
+
const msg = {
|
|
141
|
+
type: crdt_1.CrdtMessageType.PUT_COMPONENT,
|
|
142
|
+
componentId,
|
|
143
|
+
entityId: entity,
|
|
144
|
+
data: writeBuffer.toBinary(),
|
|
145
|
+
timestamp: newTimestamp
|
|
146
|
+
};
|
|
147
|
+
yield msg;
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
const msg = {
|
|
151
|
+
type: crdt_1.CrdtMessageType.DELETE_COMPONENT,
|
|
152
|
+
componentId,
|
|
153
|
+
entityId: entity,
|
|
154
|
+
timestamp: newTimestamp
|
|
155
|
+
};
|
|
156
|
+
yield msg;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
dirtyIterator.clear();
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
exports.createGetCrdtMessagesForLww = createGetCrdtMessagesForLww;
|
|
163
|
+
/**
|
|
164
|
+
* @internal
|
|
165
|
+
*/
|
|
166
|
+
function createComponentDefinitionFromSchema(componentName, componentId, schema) {
|
|
167
|
+
const data = new Map();
|
|
168
|
+
const dirtyIterator = new Set();
|
|
169
|
+
const timestamps = new Map();
|
|
170
|
+
return {
|
|
171
|
+
get componentId() {
|
|
172
|
+
return componentId;
|
|
173
|
+
},
|
|
174
|
+
get componentName() {
|
|
175
|
+
return componentName;
|
|
176
|
+
},
|
|
177
|
+
get componentType() {
|
|
178
|
+
// a getter is used here to prevent accidental changes
|
|
179
|
+
return 0 /* ComponentType.LastWriteWinElementSet */;
|
|
180
|
+
},
|
|
181
|
+
schema,
|
|
182
|
+
has(entity) {
|
|
183
|
+
return data.has(entity);
|
|
184
|
+
},
|
|
185
|
+
deleteFrom(entity, markAsDirty = true) {
|
|
186
|
+
const component = data.get(entity);
|
|
187
|
+
if (data.delete(entity) && markAsDirty) {
|
|
188
|
+
dirtyIterator.add(entity);
|
|
189
|
+
}
|
|
190
|
+
return component || null;
|
|
191
|
+
},
|
|
192
|
+
entityDeleted(entity, markAsDirty) {
|
|
193
|
+
if (data.delete(entity) && markAsDirty) {
|
|
194
|
+
dirtyIterator.add(entity);
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
getOrNull(entity) {
|
|
198
|
+
const component = data.get(entity);
|
|
199
|
+
return component ? (0, readonly_1.deepReadonly)(component) : null;
|
|
200
|
+
},
|
|
201
|
+
get(entity) {
|
|
202
|
+
const component = data.get(entity);
|
|
203
|
+
if (!component) {
|
|
204
|
+
throw new Error(`[getFrom] Component ${componentName} for entity #${entity} not found`);
|
|
205
|
+
}
|
|
206
|
+
return (0, readonly_1.deepReadonly)(component);
|
|
207
|
+
},
|
|
208
|
+
create(entity, value) {
|
|
209
|
+
const component = data.get(entity);
|
|
210
|
+
if (component) {
|
|
211
|
+
throw new Error(`[create] Component ${componentName} for ${entity} already exists`);
|
|
212
|
+
}
|
|
213
|
+
const usedValue = value === undefined ? schema.create() : schema.extend ? schema.extend(value) : value;
|
|
214
|
+
data.set(entity, usedValue);
|
|
215
|
+
dirtyIterator.add(entity);
|
|
216
|
+
return usedValue;
|
|
217
|
+
},
|
|
218
|
+
createOrReplace(entity, value) {
|
|
219
|
+
const usedValue = value === undefined ? schema.create() : schema.extend ? schema.extend(value) : value;
|
|
220
|
+
data.set(entity, usedValue);
|
|
221
|
+
dirtyIterator.add(entity);
|
|
222
|
+
return usedValue;
|
|
223
|
+
},
|
|
224
|
+
getMutableOrNull(entity) {
|
|
225
|
+
const component = data.get(entity);
|
|
226
|
+
if (!component) {
|
|
227
|
+
return null;
|
|
228
|
+
}
|
|
229
|
+
dirtyIterator.add(entity);
|
|
230
|
+
return component;
|
|
231
|
+
},
|
|
232
|
+
getOrCreateMutable(entity, value) {
|
|
233
|
+
const component = data.get(entity);
|
|
234
|
+
if (!component) {
|
|
235
|
+
return this.create(entity, value);
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
dirtyIterator.add(entity);
|
|
239
|
+
return component;
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
getMutable(entity) {
|
|
243
|
+
const component = this.getMutableOrNull(entity);
|
|
244
|
+
if (component === null) {
|
|
245
|
+
throw new Error(`[mutable] Component ${componentName} for ${entity} not found`);
|
|
246
|
+
}
|
|
247
|
+
return component;
|
|
248
|
+
},
|
|
249
|
+
*iterator() {
|
|
250
|
+
for (const [entity, component] of data) {
|
|
251
|
+
yield [entity, component];
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
*dirtyIterator() {
|
|
255
|
+
for (const entity of dirtyIterator) {
|
|
256
|
+
yield entity;
|
|
257
|
+
}
|
|
258
|
+
},
|
|
259
|
+
getCrdtUpdates: createGetCrdtMessagesForLww(componentId, timestamps, dirtyIterator, schema, data),
|
|
260
|
+
updateFromCrdt: createUpdateLwwFromCrdt(componentId, timestamps, schema, data),
|
|
261
|
+
dumpCrdtStateToBuffer: createDumpLwwFunctionFromCrdt(componentId, timestamps, schema, data)
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
exports.createComponentDefinitionFromSchema = createComponentDefinitionFromSchema;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ComponentDefinition } from './component';
|
|
2
|
+
/**
|
|
3
|
+
* @public
|
|
4
|
+
*/
|
|
5
|
+
export type DeepReadonlyMap<K, V> = ReadonlyMap<K, DeepReadonly<V>>;
|
|
6
|
+
/**
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
export type DeepReadonlySet<T> = ReadonlySet<DeepReadonly<T>>;
|
|
10
|
+
/**
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export type DeepReadonlyObject<T> = {
|
|
14
|
+
readonly [K in keyof T]: DeepReadonly<T[K]>;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export type ReadonlyPrimitive = number | string | number[] | string[] | boolean | boolean[];
|
|
20
|
+
/**
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
export type ReadonlyComponentSchema<T extends [ComponentDefinition<unknown>, ...ComponentDefinition<unknown>[]]> = {
|
|
24
|
+
[K in keyof T]: T[K] extends ComponentDefinition<unknown> ? ReturnType<T[K]['get']> : never;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* @public
|
|
28
|
+
*/
|
|
29
|
+
export type DeepReadonly<T> = T extends ReadonlyPrimitive ? T : T extends Array<infer K> ? ReadonlyArray<DeepReadonly<K>> : T extends Map<infer K, infer V> ? DeepReadonlyMap<K, V> : T extends Set<infer M> ? DeepReadonlySet<M> : DeepReadonlyObject<T>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @public
|
|
3
|
+
*/
|
|
4
|
+
export type SystemFn = (dt: number) => void;
|
|
5
|
+
export declare const SYSTEMS_REGULAR_PRIORITY = 100000;
|
|
6
|
+
export type SystemItem = {
|
|
7
|
+
fn: SystemFn;
|
|
8
|
+
priority: number;
|
|
9
|
+
name?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function SystemContainer(): {
|
|
12
|
+
add: (fn: SystemFn, priority: number, name?: string) => void;
|
|
13
|
+
remove: (selector: string | SystemFn) => boolean;
|
|
14
|
+
getSystems(): SystemItem[];
|
|
15
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SystemContainer = exports.SYSTEMS_REGULAR_PRIORITY = void 0;
|
|
4
|
+
exports.SYSTEMS_REGULAR_PRIORITY = 100e3;
|
|
5
|
+
function SystemContainer() {
|
|
6
|
+
const systems = [];
|
|
7
|
+
function sort() {
|
|
8
|
+
// TODO: systems with the same priority should always have the same stable order
|
|
9
|
+
// add a "counter" to the System type to ensure that order
|
|
10
|
+
systems.sort((a, b) => b.priority - a.priority);
|
|
11
|
+
}
|
|
12
|
+
function add(fn, priority, name) {
|
|
13
|
+
const systemName = name ?? fn.name;
|
|
14
|
+
if (systems.find((item) => item.fn === fn)) {
|
|
15
|
+
throw new Error(`System ${JSON.stringify(systemName)} already added to the engine`);
|
|
16
|
+
}
|
|
17
|
+
systems.push({
|
|
18
|
+
fn,
|
|
19
|
+
priority,
|
|
20
|
+
name: systemName
|
|
21
|
+
});
|
|
22
|
+
// TODO: replace this sort by an insertion in the right place
|
|
23
|
+
sort();
|
|
24
|
+
}
|
|
25
|
+
function remove(selector) {
|
|
26
|
+
let index = -1;
|
|
27
|
+
if (typeof selector === 'string') {
|
|
28
|
+
index = systems.findIndex((item) => item.name === selector);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
index = systems.findIndex((item) => item.fn === selector);
|
|
32
|
+
}
|
|
33
|
+
if (index === -1) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
systems.splice(index, 1);
|
|
37
|
+
sort();
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
add,
|
|
42
|
+
remove,
|
|
43
|
+
getSystems() {
|
|
44
|
+
return systems;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
exports.SystemContainer = SystemContainer;
|