@dcl/ecs 7.1.12-4982571416.commit-0b87aa7 → 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/components/generated/pb/decentraland/common/vectors.gen.d.ts +16 -0
- package/dist/components/generated/pb/decentraland/common/vectors.gen.js +65 -0
- package/dist/components/generated/pb/decentraland/sdk/components/nft_shape.gen.d.ts +3 -3
- package/dist/components/generated/pb/decentraland/sdk/components/nft_shape.gen.js +4 -4
- 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,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EntityContainer = exports.EntityState = exports.EntityUtils = exports.MAX_ENTITY_NUMBER = exports.RESERVED_STATIC_ENTITIES = exports.AMOUNT_VERSION_AVAILABLE = exports.MAX_U16 = void 0;
|
|
4
|
+
const gset_1 = require("../systems/crdt/gset");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.MAX_U16 = 0xffff;
|
|
9
|
+
const MASK_UPPER_16_ON_32 = 0xffff0000;
|
|
10
|
+
/**
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
exports.AMOUNT_VERSION_AVAILABLE = exports.MAX_U16 + 1;
|
|
14
|
+
// This type matches with @dcl/crdt entity type.
|
|
15
|
+
/**
|
|
16
|
+
* @internal
|
|
17
|
+
* This first 512 entities are reserved by the renderer
|
|
18
|
+
*/
|
|
19
|
+
exports.RESERVED_STATIC_ENTITIES = 512;
|
|
20
|
+
/**
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
exports.MAX_ENTITY_NUMBER = exports.MAX_U16;
|
|
24
|
+
/**
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
var EntityUtils;
|
|
28
|
+
(function (EntityUtils) {
|
|
29
|
+
/**
|
|
30
|
+
* @returns [entityNumber, entityVersion]
|
|
31
|
+
*/
|
|
32
|
+
function fromEntityId(entityId) {
|
|
33
|
+
return [(entityId & exports.MAX_U16) >>> 0, (((entityId & MASK_UPPER_16_ON_32) >> 16) & exports.MAX_U16) >>> 0];
|
|
34
|
+
}
|
|
35
|
+
EntityUtils.fromEntityId = fromEntityId;
|
|
36
|
+
/**
|
|
37
|
+
* @returns compound number from entityNumber and entityVerison
|
|
38
|
+
*/
|
|
39
|
+
function toEntityId(entityNumber, entityVersion) {
|
|
40
|
+
return (((entityNumber & exports.MAX_U16) | ((entityVersion & exports.MAX_U16) << 16)) >>> 0);
|
|
41
|
+
}
|
|
42
|
+
EntityUtils.toEntityId = toEntityId;
|
|
43
|
+
})(EntityUtils = exports.EntityUtils || (exports.EntityUtils = {}));
|
|
44
|
+
/**
|
|
45
|
+
* @public
|
|
46
|
+
*/
|
|
47
|
+
var EntityState;
|
|
48
|
+
(function (EntityState) {
|
|
49
|
+
EntityState[EntityState["Unknown"] = 0] = "Unknown";
|
|
50
|
+
/**
|
|
51
|
+
* The entity was generated and added to the usedEntities set
|
|
52
|
+
*/
|
|
53
|
+
EntityState[EntityState["UsedEntity"] = 1] = "UsedEntity";
|
|
54
|
+
/**
|
|
55
|
+
* The entity was removed from current engine or remotely
|
|
56
|
+
*/
|
|
57
|
+
EntityState[EntityState["Removed"] = 2] = "Removed";
|
|
58
|
+
/**
|
|
59
|
+
* The entity is reserved number.
|
|
60
|
+
*/
|
|
61
|
+
EntityState[EntityState["Reserved"] = 3] = "Reserved";
|
|
62
|
+
})(EntityState = exports.EntityState || (exports.EntityState = {}));
|
|
63
|
+
/**
|
|
64
|
+
* @internal
|
|
65
|
+
*/
|
|
66
|
+
function EntityContainer() {
|
|
67
|
+
let entityCounter = exports.RESERVED_STATIC_ENTITIES;
|
|
68
|
+
const usedEntities = new Set();
|
|
69
|
+
let toRemoveEntities = [];
|
|
70
|
+
const removedEntities = (0, gset_1.createVersionGSet)();
|
|
71
|
+
function generateNewEntity() {
|
|
72
|
+
if (entityCounter > exports.MAX_ENTITY_NUMBER - 1) {
|
|
73
|
+
throw new Error(`It fails trying to generate an entity out of range ${exports.MAX_ENTITY_NUMBER}.`);
|
|
74
|
+
}
|
|
75
|
+
const entityNumber = entityCounter++;
|
|
76
|
+
const entityVersion = removedEntities.getMap().has(entityNumber)
|
|
77
|
+
? removedEntities.getMap().get(entityNumber) + 1
|
|
78
|
+
: 0;
|
|
79
|
+
const entity = EntityUtils.toEntityId(entityNumber, entityVersion);
|
|
80
|
+
if (usedEntities.has(entity)) {
|
|
81
|
+
return generateNewEntity();
|
|
82
|
+
}
|
|
83
|
+
usedEntities.add(entity);
|
|
84
|
+
return entity;
|
|
85
|
+
}
|
|
86
|
+
function generateEntity() {
|
|
87
|
+
// If all entities until `entityCounter` are being used, we need to generate another one
|
|
88
|
+
if (usedEntities.size + exports.RESERVED_STATIC_ENTITIES >= entityCounter) {
|
|
89
|
+
return generateNewEntity();
|
|
90
|
+
}
|
|
91
|
+
for (const [number, version] of removedEntities.getMap()) {
|
|
92
|
+
if (version < exports.MAX_U16) {
|
|
93
|
+
const entity = EntityUtils.toEntityId(number, version + 1);
|
|
94
|
+
// If the entity is not being used, we can re-use it
|
|
95
|
+
// If the entity was removed in this tick, we're not counting for the usedEntities, but we have it in the toRemoveEntityArray
|
|
96
|
+
if (!usedEntities.has(entity) && !toRemoveEntities.includes(entity)) {
|
|
97
|
+
usedEntities.add(entity);
|
|
98
|
+
return entity;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return generateNewEntity();
|
|
103
|
+
}
|
|
104
|
+
function removeEntity(entity) {
|
|
105
|
+
if (entity < exports.RESERVED_STATIC_ENTITIES)
|
|
106
|
+
return false;
|
|
107
|
+
if (usedEntities.has(entity)) {
|
|
108
|
+
usedEntities.delete(entity);
|
|
109
|
+
toRemoveEntities.push(entity);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
updateRemovedEntity(entity);
|
|
113
|
+
}
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
function releaseRemovedEntities() {
|
|
117
|
+
const arr = toRemoveEntities;
|
|
118
|
+
if (arr.length) {
|
|
119
|
+
toRemoveEntities = [];
|
|
120
|
+
for (const entity of arr) {
|
|
121
|
+
const [n, v] = EntityUtils.fromEntityId(entity);
|
|
122
|
+
removedEntities.addTo(n, v);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return arr;
|
|
126
|
+
}
|
|
127
|
+
function updateRemovedEntity(entity) {
|
|
128
|
+
const [n, v] = EntityUtils.fromEntityId(entity);
|
|
129
|
+
// Update the removed entities map
|
|
130
|
+
removedEntities.addTo(n, v);
|
|
131
|
+
// Remove the usedEntities if exist
|
|
132
|
+
for (let i = 0; i <= v; i++) {
|
|
133
|
+
usedEntities.delete(EntityUtils.toEntityId(n, i));
|
|
134
|
+
}
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
function updateUsedEntity(entity) {
|
|
138
|
+
const [n, v] = EntityUtils.fromEntityId(entity);
|
|
139
|
+
// if the entity was removed then abort fast
|
|
140
|
+
if (removedEntities.has(n, v))
|
|
141
|
+
return false;
|
|
142
|
+
// Update
|
|
143
|
+
if (v > 0) {
|
|
144
|
+
for (let i = 0; i <= v - 1; i++) {
|
|
145
|
+
usedEntities.delete(EntityUtils.toEntityId(n, i));
|
|
146
|
+
}
|
|
147
|
+
removedEntities.addTo(n, v - 1);
|
|
148
|
+
}
|
|
149
|
+
usedEntities.add(entity);
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
function getEntityState(entity) {
|
|
153
|
+
const [n, v] = EntityUtils.fromEntityId(entity);
|
|
154
|
+
if (n < exports.RESERVED_STATIC_ENTITIES) {
|
|
155
|
+
return EntityState.Reserved;
|
|
156
|
+
}
|
|
157
|
+
if (usedEntities.has(entity)) {
|
|
158
|
+
return EntityState.UsedEntity;
|
|
159
|
+
}
|
|
160
|
+
const removedVersion = removedEntities.getMap().get(n);
|
|
161
|
+
if (removedVersion !== undefined && removedVersion >= v) {
|
|
162
|
+
return EntityState.Removed;
|
|
163
|
+
}
|
|
164
|
+
return EntityState.Unknown;
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
generateEntity,
|
|
168
|
+
removeEntity,
|
|
169
|
+
getExistingEntities() {
|
|
170
|
+
return new Set(usedEntities);
|
|
171
|
+
},
|
|
172
|
+
getEntityState,
|
|
173
|
+
releaseRemovedEntities,
|
|
174
|
+
updateRemovedEntity,
|
|
175
|
+
updateUsedEntity
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
exports.EntityContainer = EntityContainer;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createValueSetComponentDefinitionFromSchema = void 0;
|
|
4
|
+
const ByteBuffer_1 = require("../serialization/ByteBuffer");
|
|
5
|
+
const crdt_1 = require("../serialization/crdt");
|
|
6
|
+
const invariant_1 = require("../runtime/invariant");
|
|
7
|
+
const emptyReadonlySet = freezeSet(new Set());
|
|
8
|
+
function frozenError() {
|
|
9
|
+
throw new Error('The set is frozen');
|
|
10
|
+
}
|
|
11
|
+
function freezeSet(set) {
|
|
12
|
+
;
|
|
13
|
+
set.add = frozenError;
|
|
14
|
+
set.clear = frozenError;
|
|
15
|
+
return set;
|
|
16
|
+
}
|
|
17
|
+
function sortByTimestamp(a, b) {
|
|
18
|
+
return a.timestamp > b.timestamp ? 1 : -1;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
function createValueSetComponentDefinitionFromSchema(componentName, componentId, schema, options) {
|
|
24
|
+
const data = new Map();
|
|
25
|
+
const dirtyIterator = new Set();
|
|
26
|
+
const queuedCommands = [];
|
|
27
|
+
// only sort the array if the latest (N) element has a timestamp <= N-1
|
|
28
|
+
function shouldSort(row) {
|
|
29
|
+
const len = row.raw.length;
|
|
30
|
+
if (len > 1 && row.raw[len - 1].timestamp <= row.raw[len - 2].timestamp) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
function gotUpdated(entity) {
|
|
36
|
+
const row = data.get(entity);
|
|
37
|
+
/* istanbul ignore else */
|
|
38
|
+
if (row) {
|
|
39
|
+
if (shouldSort(row)) {
|
|
40
|
+
row.raw.sort(sortByTimestamp);
|
|
41
|
+
}
|
|
42
|
+
while (row.raw.length > options.maxElements) {
|
|
43
|
+
row.raw.shift();
|
|
44
|
+
}
|
|
45
|
+
const frozenSet = freezeSet(new Set(row?.raw.map(($) => $.value)));
|
|
46
|
+
row.frozenSet = frozenSet;
|
|
47
|
+
return frozenSet;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
/* istanbul ignore next */
|
|
51
|
+
return emptyReadonlySet;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function append(entity, value) {
|
|
55
|
+
let row = data.get(entity);
|
|
56
|
+
if (!row) {
|
|
57
|
+
row = { raw: [], frozenSet: emptyReadonlySet };
|
|
58
|
+
data.set(entity, row);
|
|
59
|
+
}
|
|
60
|
+
const usedValue = schema.extend ? schema.extend(value) : value;
|
|
61
|
+
const timestamp = options.timestampFunction(usedValue);
|
|
62
|
+
if (invariant_1.__DEV__) {
|
|
63
|
+
// only freeze the objects in dev mode to warn the developers because
|
|
64
|
+
// it is an expensive operation
|
|
65
|
+
Object.freeze(usedValue);
|
|
66
|
+
}
|
|
67
|
+
row.raw.push({ value: usedValue, timestamp });
|
|
68
|
+
return { set: gotUpdated(entity), value: usedValue };
|
|
69
|
+
}
|
|
70
|
+
const ret = {
|
|
71
|
+
get componentId() {
|
|
72
|
+
return componentId;
|
|
73
|
+
},
|
|
74
|
+
get componentName() {
|
|
75
|
+
return componentName;
|
|
76
|
+
},
|
|
77
|
+
get componentType() {
|
|
78
|
+
// a getter is used here to prevent accidental changes
|
|
79
|
+
return 1 /* ComponentType.GrowOnlyValueSet */;
|
|
80
|
+
},
|
|
81
|
+
schema,
|
|
82
|
+
has(entity) {
|
|
83
|
+
return data.has(entity);
|
|
84
|
+
},
|
|
85
|
+
entityDeleted(entity) {
|
|
86
|
+
data.delete(entity);
|
|
87
|
+
},
|
|
88
|
+
get(entity) {
|
|
89
|
+
const values = data.get(entity);
|
|
90
|
+
if (values) {
|
|
91
|
+
return values.frozenSet;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
return emptyReadonlySet;
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
addValue(entity, rawValue) {
|
|
98
|
+
const { set, value } = append(entity, rawValue);
|
|
99
|
+
dirtyIterator.add(entity);
|
|
100
|
+
const buf = new ByteBuffer_1.ReadWriteByteBuffer();
|
|
101
|
+
schema.serialize(value, buf);
|
|
102
|
+
queuedCommands.push({
|
|
103
|
+
componentId,
|
|
104
|
+
data: buf.toBinary(),
|
|
105
|
+
entityId: entity,
|
|
106
|
+
timestamp: 0,
|
|
107
|
+
type: crdt_1.CrdtMessageType.APPEND_VALUE
|
|
108
|
+
});
|
|
109
|
+
return set;
|
|
110
|
+
},
|
|
111
|
+
*iterator() {
|
|
112
|
+
for (const [entity, component] of data) {
|
|
113
|
+
yield [entity, component.frozenSet];
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
*dirtyIterator() {
|
|
117
|
+
for (const entity of dirtyIterator) {
|
|
118
|
+
yield entity;
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
getCrdtUpdates() {
|
|
122
|
+
// return a copy of the commands, and then clear the local copy
|
|
123
|
+
dirtyIterator.clear();
|
|
124
|
+
return queuedCommands.splice(0, queuedCommands.length);
|
|
125
|
+
},
|
|
126
|
+
updateFromCrdt(_body) {
|
|
127
|
+
if (_body.type === crdt_1.CrdtMessageType.APPEND_VALUE) {
|
|
128
|
+
const buf = new ByteBuffer_1.ReadWriteByteBuffer(_body.data);
|
|
129
|
+
append(_body.entityId, schema.deserialize(buf));
|
|
130
|
+
}
|
|
131
|
+
return [null, undefined];
|
|
132
|
+
},
|
|
133
|
+
dumpCrdtStateToBuffer: function (buffer) {
|
|
134
|
+
for (const [entity, { raw }] of data) {
|
|
135
|
+
for (const it of raw) {
|
|
136
|
+
const buf = new ByteBuffer_1.ReadWriteByteBuffer();
|
|
137
|
+
schema.serialize(it.value, buf);
|
|
138
|
+
crdt_1.AppendValueOperation.write(entity, 0, componentId, buf.toBinary(), buffer);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
return ret;
|
|
144
|
+
}
|
|
145
|
+
exports.createValueSetComponentDefinitionFromSchema = createValueSetComponentDefinitionFromSchema;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ByteBuffer } from '../serialization/ByteBuffer';
|
|
2
|
+
import { OnChangeFunction } from '../systems/crdt';
|
|
3
|
+
import { Entity } from './entity';
|
|
4
|
+
import { SystemItem } from './systems';
|
|
5
|
+
import type { IEngine, IEngineOptions } from './types';
|
|
6
|
+
export * from './input';
|
|
7
|
+
export * from './readonly';
|
|
8
|
+
export * from './types';
|
|
9
|
+
export { Entity, ByteBuffer, SystemItem, OnChangeFunction };
|
|
10
|
+
/**
|
|
11
|
+
* Internal constructor of new engines, this is an internal API
|
|
12
|
+
* @public
|
|
13
|
+
* @deprecated Prevent manual usage prefer "engine" for scene development
|
|
14
|
+
*/
|
|
15
|
+
export declare function Engine(options?: IEngineOptions): IEngine;
|
|
@@ -0,0 +1,247 @@
|
|
|
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
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
26
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.Engine = void 0;
|
|
30
|
+
const components = __importStar(require("../components"));
|
|
31
|
+
const component_number_1 = require("../components/component-number");
|
|
32
|
+
const invariant_1 = require("../runtime/invariant");
|
|
33
|
+
const schemas_1 = require("../schemas");
|
|
34
|
+
const crdt_1 = require("../systems/crdt");
|
|
35
|
+
const lww_element_set_component_definition_1 = require("./lww-element-set-component-definition");
|
|
36
|
+
const entity_1 = require("./entity");
|
|
37
|
+
const systems_1 = require("./systems");
|
|
38
|
+
const grow_only_value_set_component_definition_1 = require("./grow-only-value-set-component-definition");
|
|
39
|
+
__exportStar(require("./input"), exports);
|
|
40
|
+
__exportStar(require("./readonly"), exports);
|
|
41
|
+
__exportStar(require("./types"), exports);
|
|
42
|
+
function preEngine() {
|
|
43
|
+
const entityContainer = (0, entity_1.EntityContainer)();
|
|
44
|
+
const componentsDefinition = new Map();
|
|
45
|
+
const systems = (0, systems_1.SystemContainer)();
|
|
46
|
+
let sealed = false;
|
|
47
|
+
function addSystem(fn, priority = systems_1.SYSTEMS_REGULAR_PRIORITY, name) {
|
|
48
|
+
systems.add(fn, priority, name);
|
|
49
|
+
}
|
|
50
|
+
function removeSystem(selector) {
|
|
51
|
+
return systems.remove(selector);
|
|
52
|
+
}
|
|
53
|
+
function addEntity() {
|
|
54
|
+
const entity = entityContainer.generateEntity();
|
|
55
|
+
return entity;
|
|
56
|
+
}
|
|
57
|
+
function removeEntity(entity) {
|
|
58
|
+
for (const [, component] of componentsDefinition) {
|
|
59
|
+
component.entityDeleted(entity, true);
|
|
60
|
+
}
|
|
61
|
+
return entityContainer.removeEntity(entity);
|
|
62
|
+
}
|
|
63
|
+
function registerComponentDefinition(componentName, component) {
|
|
64
|
+
/* istanbul ignore next */
|
|
65
|
+
if (sealed)
|
|
66
|
+
throw new Error('Engine is already sealed. No components can be added at this stage');
|
|
67
|
+
const componentId = (0, component_number_1.componentNumberFromName)(componentName);
|
|
68
|
+
const prev = componentsDefinition.get(componentId);
|
|
69
|
+
if (prev) {
|
|
70
|
+
throw new Error(`Component number ${componentId} was already registered.`);
|
|
71
|
+
}
|
|
72
|
+
/* istanbul ignore next */
|
|
73
|
+
if (component.componentName !== componentName) {
|
|
74
|
+
throw new Error(`Component name doesn't match componentDefinition.componentName ${componentName} != ${component.componentName}`);
|
|
75
|
+
}
|
|
76
|
+
/* istanbul ignore next */
|
|
77
|
+
if (component.componentId !== componentId) {
|
|
78
|
+
throw new Error(`Component number doesn't match componentDefinition.componentId ${componentId} != ${component.componentId}`);
|
|
79
|
+
}
|
|
80
|
+
componentsDefinition.set(componentId, component);
|
|
81
|
+
return component;
|
|
82
|
+
}
|
|
83
|
+
function defineComponentFromSchema(componentName, schema) {
|
|
84
|
+
/* istanbul ignore next */
|
|
85
|
+
if (sealed)
|
|
86
|
+
throw new Error('Engine is already sealed. No components can be added at this stage');
|
|
87
|
+
const componentId = (0, component_number_1.componentNumberFromName)(componentName);
|
|
88
|
+
const prev = componentsDefinition.get(componentId);
|
|
89
|
+
if (prev) {
|
|
90
|
+
// TODO: assert spec === prev.spec
|
|
91
|
+
return prev;
|
|
92
|
+
}
|
|
93
|
+
const newComponent = (0, lww_element_set_component_definition_1.createComponentDefinitionFromSchema)(componentName, componentId, schema);
|
|
94
|
+
componentsDefinition.set(componentId, newComponent);
|
|
95
|
+
return newComponent;
|
|
96
|
+
}
|
|
97
|
+
function defineValueSetComponentFromSchema(componentName, schema, options) {
|
|
98
|
+
/* istanbul ignore next */
|
|
99
|
+
if (sealed)
|
|
100
|
+
throw new Error('Engine is already sealed. No components can be added at this stage');
|
|
101
|
+
const componentId = (0, component_number_1.componentNumberFromName)(componentName);
|
|
102
|
+
const prev = componentsDefinition.get(componentId);
|
|
103
|
+
if (prev) {
|
|
104
|
+
// TODO: assert spec === prev.spec
|
|
105
|
+
return prev;
|
|
106
|
+
}
|
|
107
|
+
const newComponent = (0, grow_only_value_set_component_definition_1.createValueSetComponentDefinitionFromSchema)(componentName, componentId, schema, options);
|
|
108
|
+
componentsDefinition.set(componentId, newComponent);
|
|
109
|
+
return newComponent;
|
|
110
|
+
}
|
|
111
|
+
function defineComponent(componentName, mapSpec, constructorDefault) {
|
|
112
|
+
if (sealed)
|
|
113
|
+
throw new Error('Engine is already sealed. No components can be added at this stage');
|
|
114
|
+
const componentId = (0, component_number_1.componentNumberFromName)(componentName);
|
|
115
|
+
const prev = componentsDefinition.get(componentId);
|
|
116
|
+
if (prev) {
|
|
117
|
+
// TODO: assert spec === prev.spec
|
|
118
|
+
return prev;
|
|
119
|
+
}
|
|
120
|
+
const schemaSpec = schemas_1.Schemas.Map(mapSpec, constructorDefault);
|
|
121
|
+
const def = (0, lww_element_set_component_definition_1.createComponentDefinitionFromSchema)(componentName, componentId, schemaSpec);
|
|
122
|
+
const newComponent = {
|
|
123
|
+
...def,
|
|
124
|
+
create(entity, val) {
|
|
125
|
+
return def.create(entity, val);
|
|
126
|
+
},
|
|
127
|
+
createOrReplace(entity, val) {
|
|
128
|
+
return def.createOrReplace(entity, val);
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
componentsDefinition.set(componentId, newComponent);
|
|
132
|
+
return newComponent;
|
|
133
|
+
}
|
|
134
|
+
function getComponent(componentIdOrName) {
|
|
135
|
+
const componentId = typeof componentIdOrName === 'number' ? componentIdOrName : (0, component_number_1.componentNumberFromName)(componentIdOrName);
|
|
136
|
+
const component = componentsDefinition.get(componentId);
|
|
137
|
+
if (!component) {
|
|
138
|
+
throw new Error(`Component ${componentId} not found. You need to declare the components at the beginnig of the engine declaration`);
|
|
139
|
+
}
|
|
140
|
+
return component;
|
|
141
|
+
}
|
|
142
|
+
function getComponentOrNull(componentIdOrName) {
|
|
143
|
+
const componentId = typeof componentIdOrName === 'number' ? componentIdOrName : (0, component_number_1.componentNumberFromName)(componentIdOrName);
|
|
144
|
+
return (componentsDefinition.get(componentId) ??
|
|
145
|
+
/* istanbul ignore next */
|
|
146
|
+
null);
|
|
147
|
+
}
|
|
148
|
+
function* getEntitiesWith(...components) {
|
|
149
|
+
for (const [entity, ...groupComp] of getComponentDefGroup(...components)) {
|
|
150
|
+
yield [entity, ...groupComp.map((c) => c.get(entity))];
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function* getComponentDefGroup(...args) {
|
|
154
|
+
const [firstComponentDef, ...componentDefinitions] = args;
|
|
155
|
+
for (const [entity] of firstComponentDef.iterator()) {
|
|
156
|
+
let matches = true;
|
|
157
|
+
for (const componentDef of componentDefinitions) {
|
|
158
|
+
if (!componentDef.has(entity)) {
|
|
159
|
+
matches = false;
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (matches) {
|
|
164
|
+
yield [entity, ...args];
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
function getSystems() {
|
|
169
|
+
return systems.getSystems();
|
|
170
|
+
}
|
|
171
|
+
function componentsIter() {
|
|
172
|
+
return componentsDefinition.values();
|
|
173
|
+
}
|
|
174
|
+
function removeComponentDefinition(componentIdOrName) {
|
|
175
|
+
if (sealed)
|
|
176
|
+
throw new Error('Engine is already sealed. No components can be removed at this stage');
|
|
177
|
+
const componentId = typeof componentIdOrName === 'number' ? componentIdOrName : (0, component_number_1.componentNumberFromName)(componentIdOrName);
|
|
178
|
+
componentsDefinition.delete(componentId);
|
|
179
|
+
}
|
|
180
|
+
components.Transform({ defineComponentFromSchema });
|
|
181
|
+
function seal() {
|
|
182
|
+
if (!sealed) {
|
|
183
|
+
sealed = true;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
addEntity,
|
|
188
|
+
removeEntity,
|
|
189
|
+
addSystem,
|
|
190
|
+
getSystems,
|
|
191
|
+
removeSystem,
|
|
192
|
+
defineComponent,
|
|
193
|
+
defineComponentFromSchema,
|
|
194
|
+
defineValueSetComponentFromSchema,
|
|
195
|
+
getEntitiesWith,
|
|
196
|
+
getComponent,
|
|
197
|
+
getComponentOrNull,
|
|
198
|
+
removeComponentDefinition,
|
|
199
|
+
registerComponentDefinition,
|
|
200
|
+
entityContainer,
|
|
201
|
+
componentsIter,
|
|
202
|
+
seal
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Internal constructor of new engines, this is an internal API
|
|
207
|
+
* @public
|
|
208
|
+
* @deprecated Prevent manual usage prefer "engine" for scene development
|
|
209
|
+
*/
|
|
210
|
+
function Engine(options) {
|
|
211
|
+
const partialEngine = preEngine();
|
|
212
|
+
const crdtSystem = (0, crdt_1.crdtSceneSystem)(partialEngine, options?.onChangeFunction || null);
|
|
213
|
+
async function update(dt) {
|
|
214
|
+
await crdtSystem.receiveMessages();
|
|
215
|
+
for (const system of partialEngine.getSystems()) {
|
|
216
|
+
const ret = system.fn(dt);
|
|
217
|
+
(0, invariant_1.checkNotThenable)(ret, `A system (${system.name || 'anonymous'}) returned a thenable. Systems cannot be async functions. Documentation: https://dcl.gg/sdk/sync-systems`);
|
|
218
|
+
}
|
|
219
|
+
// get the deleted entities to send the DeleteEntity CRDT commands
|
|
220
|
+
const deletedEntites = partialEngine.entityContainer.releaseRemovedEntities();
|
|
221
|
+
await crdtSystem.sendMessages(deletedEntites);
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
addEntity: partialEngine.addEntity,
|
|
225
|
+
removeEntity: partialEngine.removeEntity,
|
|
226
|
+
addSystem: partialEngine.addSystem,
|
|
227
|
+
removeSystem: partialEngine.removeSystem,
|
|
228
|
+
defineComponent: partialEngine.defineComponent,
|
|
229
|
+
defineComponentFromSchema: partialEngine.defineComponentFromSchema,
|
|
230
|
+
defineValueSetComponentFromSchema: partialEngine.defineValueSetComponentFromSchema,
|
|
231
|
+
registerComponentDefinition: partialEngine.registerComponentDefinition,
|
|
232
|
+
getEntitiesWith: partialEngine.getEntitiesWith,
|
|
233
|
+
getComponent: partialEngine.getComponent,
|
|
234
|
+
getComponentOrNull: partialEngine.getComponentOrNull,
|
|
235
|
+
removeComponentDefinition: partialEngine.removeComponentDefinition,
|
|
236
|
+
componentsIter: partialEngine.componentsIter,
|
|
237
|
+
seal: partialEngine.seal,
|
|
238
|
+
update,
|
|
239
|
+
RootEntity: 0,
|
|
240
|
+
PlayerEntity: 1,
|
|
241
|
+
CameraEntity: 2,
|
|
242
|
+
getEntityState: partialEngine.entityContainer.getEntityState,
|
|
243
|
+
addTransport: crdtSystem.addTransport,
|
|
244
|
+
entityContainer: partialEngine.entityContainer
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
exports.Engine = Engine;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { InputAction } from '../components/generated/pb/decentraland/sdk/components/common/input_action.gen';
|
|
2
|
+
import { PointerEventType } from '../components/generated/pb/decentraland/sdk/components/common/input_action.gen';
|
|
3
|
+
import { PBPointerEventsResult } from '../components/generated/pb/decentraland/sdk/components/pointer_events_result.gen';
|
|
4
|
+
import { Entity } from './entity';
|
|
5
|
+
/**
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export type IInputSystem = {
|
|
9
|
+
/**
|
|
10
|
+
* @public
|
|
11
|
+
* Check if a pointer event has been emitted in the last tick-update.
|
|
12
|
+
* @param inputAction - the input action to query
|
|
13
|
+
* @param pointerEventType - the pointer event type to query
|
|
14
|
+
* @param entity - the entity to query, ignore for global
|
|
15
|
+
* @returns boolean
|
|
16
|
+
*/
|
|
17
|
+
isTriggered: (inputAction: InputAction, pointerEventType: PointerEventType, entity?: Entity) => boolean;
|
|
18
|
+
/**
|
|
19
|
+
* @public
|
|
20
|
+
* Check if an input action is currently being pressed.
|
|
21
|
+
* @param inputAction - the input action to query
|
|
22
|
+
* @returns boolean
|
|
23
|
+
*/
|
|
24
|
+
isPressed: (inputAction: InputAction) => boolean;
|
|
25
|
+
/**
|
|
26
|
+
* @public
|
|
27
|
+
* Get the input command info if a pointer event has been emitted in the last tick-update.
|
|
28
|
+
* @param inputAction - the input action to query
|
|
29
|
+
* @param pointerEventType - the pointer event type to query
|
|
30
|
+
* @param entity - the entity to query, ignore for global
|
|
31
|
+
* @returns the input command info or undefined if there is no command in the last tick-update
|
|
32
|
+
*/
|
|
33
|
+
getInputCommand: (inputAction: InputAction, pointerEventType: PointerEventType, entity?: Entity) => PBPointerEventsResult | null;
|
|
34
|
+
};
|