@dcl/hammurabi-server 1.0.0-17268386187.commit-b609629
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/CLAUDE.md +90 -0
- package/LICENSE +201 -0
- package/README.md +125 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +79 -0
- package/dist/cli.js.map +1 -0
- package/dist/lib/babylon/avatar-rendering-system.d.ts +16 -0
- package/dist/lib/babylon/avatar-rendering-system.d.ts.map +1 -0
- package/dist/lib/babylon/avatar-rendering-system.js +96 -0
- package/dist/lib/babylon/avatar-rendering-system.js.map +1 -0
- package/dist/lib/babylon/avatars/AvatarRenderer.d.ts +40 -0
- package/dist/lib/babylon/avatars/AvatarRenderer.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/AvatarRenderer.js +260 -0
- package/dist/lib/babylon/avatars/AvatarRenderer.js.map +1 -0
- package/dist/lib/babylon/avatars/CharacterController.d.ts +88 -0
- package/dist/lib/babylon/avatars/CharacterController.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/CharacterController.js +463 -0
- package/dist/lib/babylon/avatars/CharacterController.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/body.d.ts +4 -0
- package/dist/lib/babylon/avatars/adr-65/body.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/body.js +47 -0
- package/dist/lib/babylon/avatars/adr-65/body.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/customizations.d.ts +11 -0
- package/dist/lib/babylon/avatars/adr-65/customizations.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/customizations.js +111 -0
- package/dist/lib/babylon/avatars/adr-65/customizations.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/emote.d.ts +9 -0
- package/dist/lib/babylon/avatars/adr-65/emote.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/emote.js +46 -0
- package/dist/lib/babylon/avatars/adr-65/emote.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/loader.d.ts +8 -0
- package/dist/lib/babylon/avatars/adr-65/loader.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/loader.js +54 -0
- package/dist/lib/babylon/avatars/adr-65/loader.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/representation.d.ts +12 -0
- package/dist/lib/babylon/avatars/adr-65/representation.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/representation.js +77 -0
- package/dist/lib/babylon/avatars/adr-65/representation.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/slots.d.ts +5 -0
- package/dist/lib/babylon/avatars/adr-65/slots.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/slots.js +62 -0
- package/dist/lib/babylon/avatars/adr-65/slots.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/types.d.ts +17 -0
- package/dist/lib/babylon/avatars/adr-65/types.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/types.js +3 -0
- package/dist/lib/babylon/avatars/adr-65/types.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/utils.d.ts +8 -0
- package/dist/lib/babylon/avatars/adr-65/utils.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/utils.js +29 -0
- package/dist/lib/babylon/avatars/adr-65/utils.js.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/wearable.d.ts +7 -0
- package/dist/lib/babylon/avatars/adr-65/wearable.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/adr-65/wearable.js +64 -0
- package/dist/lib/babylon/avatars/adr-65/wearable.js.map +1 -0
- package/dist/lib/babylon/avatars/avatar-asset-manager.d.ts +12 -0
- package/dist/lib/babylon/avatars/avatar-asset-manager.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/avatar-asset-manager.js +31 -0
- package/dist/lib/babylon/avatars/avatar-asset-manager.js.map +1 -0
- package/dist/lib/babylon/avatars/loader.d.ts +6 -0
- package/dist/lib/babylon/avatars/loader.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/loader.js +108 -0
- package/dist/lib/babylon/avatars/loader.js.map +1 -0
- package/dist/lib/babylon/avatars/urn.d.ts +2 -0
- package/dist/lib/babylon/avatars/urn.d.ts.map +1 -0
- package/dist/lib/babylon/avatars/urn.js +9 -0
- package/dist/lib/babylon/avatars/urn.js.map +1 -0
- package/dist/lib/babylon/index.d.ts +6 -0
- package/dist/lib/babylon/index.d.ts.map +1 -0
- package/dist/lib/babylon/index.js +85 -0
- package/dist/lib/babylon/index.js.map +1 -0
- package/dist/lib/babylon/input.d.ts +35 -0
- package/dist/lib/babylon/input.d.ts.map +1 -0
- package/dist/lib/babylon/input.js +137 -0
- package/dist/lib/babylon/input.js.map +1 -0
- package/dist/lib/babylon/scene/AssetManager.d.ts +19 -0
- package/dist/lib/babylon/scene/AssetManager.d.ts.map +1 -0
- package/dist/lib/babylon/scene/AssetManager.js +271 -0
- package/dist/lib/babylon/scene/AssetManager.js.map +1 -0
- package/dist/lib/babylon/scene/BabylonEntity.d.ts +84 -0
- package/dist/lib/babylon/scene/BabylonEntity.d.ts.map +1 -0
- package/dist/lib/babylon/scene/BabylonEntity.js +174 -0
- package/dist/lib/babylon/scene/BabylonEntity.js.map +1 -0
- package/dist/lib/babylon/scene/connect-context-rpc.d.ts +8 -0
- package/dist/lib/babylon/scene/connect-context-rpc.d.ts.map +1 -0
- package/dist/lib/babylon/scene/connect-context-rpc.js +210 -0
- package/dist/lib/babylon/scene/connect-context-rpc.js.map +1 -0
- package/dist/lib/babylon/scene/coordinates.d.ts +5 -0
- package/dist/lib/babylon/scene/coordinates.d.ts.map +1 -0
- package/dist/lib/babylon/scene/coordinates.js +17 -0
- package/dist/lib/babylon/scene/coordinates.js.map +1 -0
- package/dist/lib/babylon/scene/hot-reload.d.ts +9 -0
- package/dist/lib/babylon/scene/hot-reload.d.ts.map +1 -0
- package/dist/lib/babylon/scene/hot-reload.js +65 -0
- package/dist/lib/babylon/scene/hot-reload.js.map +1 -0
- package/dist/lib/babylon/scene/load.d.ts +54 -0
- package/dist/lib/babylon/scene/load.d.ts.map +1 -0
- package/dist/lib/babylon/scene/load.js +154 -0
- package/dist/lib/babylon/scene/load.js.map +1 -0
- package/dist/lib/babylon/scene/logic/apply-animations.d.ts +3 -0
- package/dist/lib/babylon/scene/logic/apply-animations.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/apply-animations.js +50 -0
- package/dist/lib/babylon/scene/logic/apply-animations.js.map +1 -0
- package/dist/lib/babylon/scene/logic/billboards.d.ts +3 -0
- package/dist/lib/babylon/scene/logic/billboards.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/billboards.js +12 -0
- package/dist/lib/babylon/scene/logic/billboards.js.map +1 -0
- package/dist/lib/babylon/scene/logic/camera-follows-player.d.ts +7 -0
- package/dist/lib/babylon/scene/logic/camera-follows-player.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/camera-follows-player.js +35 -0
- package/dist/lib/babylon/scene/logic/camera-follows-player.js.map +1 -0
- package/dist/lib/babylon/scene/logic/colliders.d.ts +9 -0
- package/dist/lib/babylon/scene/logic/colliders.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/colliders.js +79 -0
- package/dist/lib/babylon/scene/logic/colliders.js.map +1 -0
- package/dist/lib/babylon/scene/logic/cyclic-transform.d.ts +12 -0
- package/dist/lib/babylon/scene/logic/cyclic-transform.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/cyclic-transform.js +67 -0
- package/dist/lib/babylon/scene/logic/cyclic-transform.js.map +1 -0
- package/dist/lib/babylon/scene/logic/delayed-interpolation.d.ts +27 -0
- package/dist/lib/babylon/scene/logic/delayed-interpolation.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/delayed-interpolation.js +49 -0
- package/dist/lib/babylon/scene/logic/delayed-interpolation.js.map +1 -0
- package/dist/lib/babylon/scene/logic/easings.d.ts +7 -0
- package/dist/lib/babylon/scene/logic/easings.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/easings.js +100 -0
- package/dist/lib/babylon/scene/logic/easings.js.map +1 -0
- package/dist/lib/babylon/scene/logic/hide-camera-obstuction-system.d.ts +5 -0
- package/dist/lib/babylon/scene/logic/hide-camera-obstuction-system.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/hide-camera-obstuction-system.js +145 -0
- package/dist/lib/babylon/scene/logic/hide-camera-obstuction-system.js.map +1 -0
- package/dist/lib/babylon/scene/logic/local-avatar-scene.d.ts +10 -0
- package/dist/lib/babylon/scene/logic/local-avatar-scene.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/local-avatar-scene.js +50 -0
- package/dist/lib/babylon/scene/logic/local-avatar-scene.js.map +1 -0
- package/dist/lib/babylon/scene/logic/pointer-events.d.ts +12 -0
- package/dist/lib/babylon/scene/logic/pointer-events.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/pointer-events.js +199 -0
- package/dist/lib/babylon/scene/logic/pointer-events.js.map +1 -0
- package/dist/lib/babylon/scene/logic/raycasts.d.ts +21 -0
- package/dist/lib/babylon/scene/logic/raycasts.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/raycasts.js +142 -0
- package/dist/lib/babylon/scene/logic/raycasts.js.map +1 -0
- package/dist/lib/babylon/scene/logic/static-entities.d.ts +18 -0
- package/dist/lib/babylon/scene/logic/static-entities.d.ts.map +1 -0
- package/dist/lib/babylon/scene/logic/static-entities.js +64 -0
- package/dist/lib/babylon/scene/logic/static-entities.js.map +1 -0
- package/dist/lib/babylon/scene/nodejs-runtime.d.ts +4 -0
- package/dist/lib/babylon/scene/nodejs-runtime.d.ts.map +1 -0
- package/dist/lib/babylon/scene/nodejs-runtime.js +100 -0
- package/dist/lib/babylon/scene/nodejs-runtime.js.map +1 -0
- package/dist/lib/babylon/scene/scene-context.d.ts +116 -0
- package/dist/lib/babylon/scene/scene-context.d.ts.map +1 -0
- package/dist/lib/babylon/scene/scene-context.js +492 -0
- package/dist/lib/babylon/scene/scene-context.js.map +1 -0
- package/dist/lib/babylon/scene/scene-culling.d.ts +6 -0
- package/dist/lib/babylon/scene/scene-culling.d.ts.map +1 -0
- package/dist/lib/babylon/scene/scene-culling.js +23 -0
- package/dist/lib/babylon/scene/scene-culling.js.map +1 -0
- package/dist/lib/babylon/scene/update-scheduler.d.ts +7 -0
- package/dist/lib/babylon/scene/update-scheduler.d.ts.map +1 -0
- package/dist/lib/babylon/scene/update-scheduler.js +40 -0
- package/dist/lib/babylon/scene/update-scheduler.js.map +1 -0
- package/dist/lib/babylon/time-based-animation.d.ts +13 -0
- package/dist/lib/babylon/time-based-animation.d.ts.map +1 -0
- package/dist/lib/babylon/time-based-animation.js +35 -0
- package/dist/lib/babylon/time-based-animation.js.map +1 -0
- package/dist/lib/babylon/visual/ambientLights.d.ts +6 -0
- package/dist/lib/babylon/visual/ambientLights.d.ts.map +1 -0
- package/dist/lib/babylon/visual/ambientLights.js +65 -0
- package/dist/lib/babylon/visual/ambientLights.js.map +1 -0
- package/dist/lib/babylon/visual/glowLayer.d.ts +6 -0
- package/dist/lib/babylon/visual/glowLayer.d.ts.map +1 -0
- package/dist/lib/babylon/visual/glowLayer.js +59 -0
- package/dist/lib/babylon/visual/glowLayer.js.map +1 -0
- package/dist/lib/babylon/visual/parcelOutline.d.ts +7 -0
- package/dist/lib/babylon/visual/parcelOutline.d.ts.map +1 -0
- package/dist/lib/babylon/visual/parcelOutline.js +88 -0
- package/dist/lib/babylon/visual/parcelOutline.js.map +1 -0
- package/dist/lib/babylon/visual/reticle.d.ts +3 -0
- package/dist/lib/babylon/visual/reticle.d.ts.map +1 -0
- package/dist/lib/babylon/visual/reticle.js +60 -0
- package/dist/lib/babylon/visual/reticle.js.map +1 -0
- package/dist/lib/babylon/visual/ui.d.ts +8 -0
- package/dist/lib/babylon/visual/ui.d.ts.map +1 -0
- package/dist/lib/babylon/visual/ui.js +54 -0
- package/dist/lib/babylon/visual/ui.js.map +1 -0
- package/dist/lib/common-runtime/game-loop.d.ts +4 -0
- package/dist/lib/common-runtime/game-loop.d.ts.map +1 -0
- package/dist/lib/common-runtime/game-loop.js +31 -0
- package/dist/lib/common-runtime/game-loop.js.map +1 -0
- package/dist/lib/common-runtime/modules.d.ts +244 -0
- package/dist/lib/common-runtime/modules.d.ts.map +1 -0
- package/dist/lib/common-runtime/modules.js +74 -0
- package/dist/lib/common-runtime/modules.js.map +1 -0
- package/dist/lib/common-runtime/startup.d.ts +8 -0
- package/dist/lib/common-runtime/startup.d.ts.map +1 -0
- package/dist/lib/common-runtime/startup.js +45 -0
- package/dist/lib/common-runtime/startup.js.map +1 -0
- package/dist/lib/common-runtime/types.d.ts +15 -0
- package/dist/lib/common-runtime/types.d.ts.map +1 -0
- package/dist/lib/common-runtime/types.js +7 -0
- package/dist/lib/common-runtime/types.js.map +1 -0
- package/dist/lib/decentraland/ByteBuffer/index.d.ts +75 -0
- package/dist/lib/decentraland/ByteBuffer/index.d.ts.map +1 -0
- package/dist/lib/decentraland/ByteBuffer/index.js +279 -0
- package/dist/lib/decentraland/ByteBuffer/index.js.map +1 -0
- package/dist/lib/decentraland/ByteBuffer/types.d.ts +109 -0
- package/dist/lib/decentraland/ByteBuffer/types.d.ts.map +1 -0
- package/dist/lib/decentraland/ByteBuffer/types.js +3 -0
- package/dist/lib/decentraland/ByteBuffer/types.js.map +1 -0
- package/dist/lib/decentraland/communications/CommsTransportWrapper.d.ts +45 -0
- package/dist/lib/decentraland/communications/CommsTransportWrapper.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/CommsTransportWrapper.js +174 -0
- package/dist/lib/decentraland/communications/CommsTransportWrapper.js.map +1 -0
- package/dist/lib/decentraland/communications/avatar-communication-system.d.ts +18 -0
- package/dist/lib/decentraland/communications/avatar-communication-system.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/avatar-communication-system.js +203 -0
- package/dist/lib/decentraland/communications/avatar-communication-system.js.map +1 -0
- package/dist/lib/decentraland/communications/connect-adapter.d.ts +5 -0
- package/dist/lib/decentraland/communications/connect-adapter.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/connect-adapter.js +110 -0
- package/dist/lib/decentraland/communications/connect-adapter.js.map +1 -0
- package/dist/lib/decentraland/communications/connect-transport.d.ts +5 -0
- package/dist/lib/decentraland/communications/connect-transport.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/connect-transport.js +32 -0
- package/dist/lib/decentraland/communications/connect-transport.js.map +1 -0
- package/dist/lib/decentraland/communications/networked-profile-system.d.ts +10 -0
- package/dist/lib/decentraland/communications/networked-profile-system.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/networked-profile-system.js +73 -0
- package/dist/lib/decentraland/communications/networked-profile-system.js.map +1 -0
- package/dist/lib/decentraland/communications/player-entity-manager.d.ts +55 -0
- package/dist/lib/decentraland/communications/player-entity-manager.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/player-entity-manager.js +167 -0
- package/dist/lib/decentraland/communications/player-entity-manager.js.map +1 -0
- package/dist/lib/decentraland/communications/position-report-system.d.ts +8 -0
- package/dist/lib/decentraland/communications/position-report-system.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/position-report-system.js +51 -0
- package/dist/lib/decentraland/communications/position-report-system.js.map +1 -0
- package/dist/lib/decentraland/communications/realm-communications-system.d.ts +17 -0
- package/dist/lib/decentraland/communications/realm-communications-system.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/realm-communications-system.js +111 -0
- package/dist/lib/decentraland/communications/realm-communications-system.js.map +1 -0
- package/dist/lib/decentraland/communications/scene-comms.d.ts +9 -0
- package/dist/lib/decentraland/communications/scene-comms.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/scene-comms.js +20 -0
- package/dist/lib/decentraland/communications/scene-comms.js.map +1 -0
- package/dist/lib/decentraland/communications/transports/livekit.d.ts +27 -0
- package/dist/lib/decentraland/communications/transports/livekit.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/transports/livekit.js +135 -0
- package/dist/lib/decentraland/communications/transports/livekit.js.map +1 -0
- package/dist/lib/decentraland/communications/transports/ws-room.d.ts +26 -0
- package/dist/lib/decentraland/communications/transports/ws-room.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/transports/ws-room.js +235 -0
- package/dist/lib/decentraland/communications/transports/ws-room.js.map +1 -0
- package/dist/lib/decentraland/communications/types.d.ts +76 -0
- package/dist/lib/decentraland/communications/types.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/types.js +6 -0
- package/dist/lib/decentraland/communications/types.js.map +1 -0
- package/dist/lib/decentraland/communications/ws-async-channel.d.ts +6 -0
- package/dist/lib/decentraland/communications/ws-async-channel.d.ts.map +1 -0
- package/dist/lib/decentraland/communications/ws-async-channel.js +52 -0
- package/dist/lib/decentraland/communications/ws-async-channel.js.map +1 -0
- package/dist/lib/decentraland/crdt-internal/components.d.ts +156 -0
- package/dist/lib/decentraland/crdt-internal/components.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-internal/components.js +8 -0
- package/dist/lib/decentraland/crdt-internal/components.js.map +1 -0
- package/dist/lib/decentraland/crdt-internal/conflict-resolution.d.ts +45 -0
- package/dist/lib/decentraland/crdt-internal/conflict-resolution.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-internal/conflict-resolution.js +49 -0
- package/dist/lib/decentraland/crdt-internal/conflict-resolution.js.map +1 -0
- package/dist/lib/decentraland/crdt-internal/dataCompare.d.ts +6 -0
- package/dist/lib/decentraland/crdt-internal/dataCompare.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-internal/dataCompare.js +34 -0
- package/dist/lib/decentraland/crdt-internal/dataCompare.js.map +1 -0
- package/dist/lib/decentraland/crdt-internal/generational-index-pool.d.ts +22 -0
- package/dist/lib/decentraland/crdt-internal/generational-index-pool.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-internal/generational-index-pool.js +91 -0
- package/dist/lib/decentraland/crdt-internal/generational-index-pool.js.map +1 -0
- package/dist/lib/decentraland/crdt-internal/grow-only-set.d.ts +10 -0
- package/dist/lib/decentraland/crdt-internal/grow-only-set.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-internal/grow-only-set.js +129 -0
- package/dist/lib/decentraland/crdt-internal/grow-only-set.js.map +1 -0
- package/dist/lib/decentraland/crdt-internal/last-write-win-element-set.d.ts +11 -0
- package/dist/lib/decentraland/crdt-internal/last-write-win-element-set.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-internal/last-write-win-element-set.js +224 -0
- package/dist/lib/decentraland/crdt-internal/last-write-win-element-set.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/appendValue.d.ts +15 -0
- package/dist/lib/decentraland/crdt-wire-protocol/appendValue.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/appendValue.js +50 -0
- package/dist/lib/decentraland/crdt-wire-protocol/appendValue.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/crdtMessageProtocol.d.ts +31 -0
- package/dist/lib/decentraland/crdt-wire-protocol/crdtMessageProtocol.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/crdtMessageProtocol.js +72 -0
- package/dist/lib/decentraland/crdt-wire-protocol/crdtMessageProtocol.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/deleteComponent.d.ts +14 -0
- package/dist/lib/decentraland/crdt-wire-protocol/deleteComponent.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/deleteComponent.js +44 -0
- package/dist/lib/decentraland/crdt-wire-protocol/deleteComponent.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/deleteEntity.d.ts +11 -0
- package/dist/lib/decentraland/crdt-wire-protocol/deleteEntity.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/deleteEntity.js +35 -0
- package/dist/lib/decentraland/crdt-wire-protocol/deleteEntity.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/index.d.ts +8 -0
- package/dist/lib/decentraland/crdt-wire-protocol/index.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/index.js +24 -0
- package/dist/lib/decentraland/crdt-wire-protocol/index.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/message.d.ts +17 -0
- package/dist/lib/decentraland/crdt-wire-protocol/message.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/message.js +49 -0
- package/dist/lib/decentraland/crdt-wire-protocol/message.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/prettyPrint.d.ts +4 -0
- package/dist/lib/decentraland/crdt-wire-protocol/prettyPrint.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/prettyPrint.js +26 -0
- package/dist/lib/decentraland/crdt-wire-protocol/prettyPrint.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/putComponent.d.ts +15 -0
- package/dist/lib/decentraland/crdt-wire-protocol/putComponent.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/putComponent.js +48 -0
- package/dist/lib/decentraland/crdt-wire-protocol/putComponent.js.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/types.d.ts +80 -0
- package/dist/lib/decentraland/crdt-wire-protocol/types.d.ts.map +1 -0
- package/dist/lib/decentraland/crdt-wire-protocol/types.js +15 -0
- package/dist/lib/decentraland/crdt-wire-protocol/types.js.map +1 -0
- package/dist/lib/decentraland/identifiers.d.ts +6 -0
- package/dist/lib/decentraland/identifiers.d.ts.map +1 -0
- package/dist/lib/decentraland/identifiers.js +22 -0
- package/dist/lib/decentraland/identifiers.js.map +1 -0
- package/dist/lib/decentraland/identity/avatar.d.ts +4 -0
- package/dist/lib/decentraland/identity/avatar.d.ts.map +1 -0
- package/dist/lib/decentraland/identity/avatar.js +57 -0
- package/dist/lib/decentraland/identity/avatar.js.map +1 -0
- package/dist/lib/decentraland/identity/login.d.ts +8 -0
- package/dist/lib/decentraland/identity/login.d.ts.map +1 -0
- package/dist/lib/decentraland/identity/login.js +121 -0
- package/dist/lib/decentraland/identity/login.js.map +1 -0
- package/dist/lib/decentraland/identity/signed-fetch.d.ts +17 -0
- package/dist/lib/decentraland/identity/signed-fetch.d.ts.map +1 -0
- package/dist/lib/decentraland/identity/signed-fetch.js +47 -0
- package/dist/lib/decentraland/identity/signed-fetch.js.map +1 -0
- package/dist/lib/decentraland/identity/types.d.ts +11 -0
- package/dist/lib/decentraland/identity/types.d.ts.map +1 -0
- package/dist/lib/decentraland/identity/types.js +3 -0
- package/dist/lib/decentraland/identity/types.js.map +1 -0
- package/dist/lib/decentraland/positions.d.ts +15 -0
- package/dist/lib/decentraland/positions.d.ts.map +1 -0
- package/dist/lib/decentraland/positions.js +40 -0
- package/dist/lib/decentraland/positions.js.map +1 -0
- package/dist/lib/decentraland/realm/resolution.d.ts +2 -0
- package/dist/lib/decentraland/realm/resolution.d.ts.map +1 -0
- package/dist/lib/decentraland/realm/resolution.js +39 -0
- package/dist/lib/decentraland/realm/resolution.js.map +1 -0
- package/dist/lib/decentraland/scene/content-server-entity.d.ts +34 -0
- package/dist/lib/decentraland/scene/content-server-entity.d.ts.map +1 -0
- package/dist/lib/decentraland/scene/content-server-entity.js +22 -0
- package/dist/lib/decentraland/scene/content-server-entity.js.map +1 -0
- package/dist/lib/decentraland/scene/spawn-points.d.ts +16 -0
- package/dist/lib/decentraland/scene/spawn-points.d.ts.map +1 -0
- package/dist/lib/decentraland/scene/spawn-points.js +78 -0
- package/dist/lib/decentraland/scene/spawn-points.js.map +1 -0
- package/dist/lib/decentraland/scene/types.d.ts +38 -0
- package/dist/lib/decentraland/scene/types.d.ts.map +1 -0
- package/dist/lib/decentraland/scene/types.js +3 -0
- package/dist/lib/decentraland/scene/types.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/animator-component.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/animator-component.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/animator-component.js +12 -0
- package/dist/lib/decentraland/sdk-components/animator-component.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/avatar-base.d.ts +5 -0
- package/dist/lib/decentraland/sdk-components/avatar-base.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/avatar-base.js +40 -0
- package/dist/lib/decentraland/sdk-components/avatar-base.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/avatar-customizations.d.ts +5 -0
- package/dist/lib/decentraland/sdk-components/avatar-customizations.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/avatar-customizations.js +9 -0
- package/dist/lib/decentraland/sdk-components/avatar-customizations.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/avatar-shape.d.ts +5 -0
- package/dist/lib/decentraland/sdk-components/avatar-shape.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/avatar-shape.js +33 -0
- package/dist/lib/decentraland/sdk-components/avatar-shape.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/billboard-component.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/billboard-component.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/billboard-component.js +15 -0
- package/dist/lib/decentraland/sdk-components/billboard-component.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/delayed-interpolation.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/delayed-interpolation.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/delayed-interpolation.js +15 -0
- package/dist/lib/decentraland/sdk-components/delayed-interpolation.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/engine-info.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/engine-info.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/engine-info.js +7 -0
- package/dist/lib/decentraland/sdk-components/engine-info.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/gltf-component.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/gltf-component.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/gltf-component.js +114 -0
- package/dist/lib/decentraland/sdk-components/gltf-component.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/gltf-loading-state.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/gltf-loading-state.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/gltf-loading-state.js +7 -0
- package/dist/lib/decentraland/sdk-components/gltf-loading-state.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/material-component.d.ts +5 -0
- package/dist/lib/decentraland/sdk-components/material-component.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/material-component.js +92 -0
- package/dist/lib/decentraland/sdk-components/material-component.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/mesh-collider-component.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/mesh-collider-component.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/mesh-collider-component.js +37 -0
- package/dist/lib/decentraland/sdk-components/mesh-collider-component.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/mesh-renderer-component.d.ts +5 -0
- package/dist/lib/decentraland/sdk-components/mesh-renderer-component.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/mesh-renderer-component.js +111 -0
- package/dist/lib/decentraland/sdk-components/mesh-renderer-component.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/pb-based-component-helper.d.ts +10 -0
- package/dist/lib/decentraland/sdk-components/pb-based-component-helper.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/pb-based-component-helper.js +23 -0
- package/dist/lib/decentraland/sdk-components/pb-based-component-helper.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/player-identity-data.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/player-identity-data.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/player-identity-data.js +7 -0
- package/dist/lib/decentraland/sdk-components/player-identity-data.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/pointer-events-result.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/pointer-events-result.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/pointer-events-result.js +7 -0
- package/dist/lib/decentraland/sdk-components/pointer-events-result.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/pointer-events.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/pointer-events.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/pointer-events.js +15 -0
- package/dist/lib/decentraland/sdk-components/pointer-events.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/raycast-component.d.ts +5 -0
- package/dist/lib/decentraland/sdk-components/raycast-component.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/raycast-component.js +66 -0
- package/dist/lib/decentraland/sdk-components/raycast-component.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/transform-component.d.ts +13 -0
- package/dist/lib/decentraland/sdk-components/transform-component.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/transform-component.js +84 -0
- package/dist/lib/decentraland/sdk-components/transform-component.js.map +1 -0
- package/dist/lib/decentraland/sdk-components/tween.d.ts +3 -0
- package/dist/lib/decentraland/sdk-components/tween.d.ts.map +1 -0
- package/dist/lib/decentraland/sdk-components/tween.js +15 -0
- package/dist/lib/decentraland/sdk-components/tween.js.map +1 -0
- package/dist/lib/decentraland/state.d.ts +24 -0
- package/dist/lib/decentraland/state.d.ts.map +1 -0
- package/dist/lib/decentraland/state.js +16 -0
- package/dist/lib/decentraland/state.js.map +1 -0
- package/dist/lib/decentraland/system.d.ts +7 -0
- package/dist/lib/decentraland/system.d.ts.map +1 -0
- package/dist/lib/decentraland/system.js +13 -0
- package/dist/lib/decentraland/system.js.map +1 -0
- package/dist/lib/decentraland/types.d.ts +9 -0
- package/dist/lib/decentraland/types.d.ts.map +1 -0
- package/dist/lib/decentraland/types.js +3 -0
- package/dist/lib/decentraland/types.js.map +1 -0
- package/dist/lib/decentraland/virtual-scene.d.ts +12 -0
- package/dist/lib/decentraland/virtual-scene.d.ts.map +1 -0
- package/dist/lib/decentraland/virtual-scene.js +3 -0
- package/dist/lib/decentraland/virtual-scene.js.map +1 -0
- package/dist/lib/engine-main.d.ts +8 -0
- package/dist/lib/engine-main.d.ts.map +1 -0
- package/dist/lib/engine-main.js +103 -0
- package/dist/lib/engine-main.js.map +1 -0
- package/dist/lib/misc/atom.d.ts +13 -0
- package/dist/lib/misc/atom.d.ts.map +1 -0
- package/dist/lib/misc/atom.js +66 -0
- package/dist/lib/misc/atom.js.map +1 -0
- package/dist/lib/misc/bit-operations.d.ts +3 -0
- package/dist/lib/misc/bit-operations.d.ts.map +1 -0
- package/dist/lib/misc/bit-operations.js +14 -0
- package/dist/lib/misc/bit-operations.js.map +1 -0
- package/dist/lib/misc/flat-fetch.d.ts +16 -0
- package/dist/lib/misc/flat-fetch.d.ts.map +1 -0
- package/dist/lib/misc/flat-fetch.js +26 -0
- package/dist/lib/misc/flat-fetch.js.map +1 -0
- package/dist/lib/misc/json.d.ts +3 -0
- package/dist/lib/misc/json.d.ts.map +1 -0
- package/dist/lib/misc/json.js +24 -0
- package/dist/lib/misc/json.js.map +1 -0
- package/dist/lib/misc/logger.d.ts +6 -0
- package/dist/lib/misc/logger.d.ts.map +1 -0
- package/dist/lib/misc/logger.js +24 -0
- package/dist/lib/misc/logger.js.map +1 -0
- package/dist/lib/misc/memoize.d.ts +2 -0
- package/dist/lib/misc/memoize.d.ts.map +1 -0
- package/dist/lib/misc/memoize.js +16 -0
- package/dist/lib/misc/memoize.js.map +1 -0
- package/dist/lib/misc/promises.d.ts +3 -0
- package/dist/lib/misc/promises.d.ts.map +1 -0
- package/dist/lib/misc/promises.js +14 -0
- package/dist/lib/misc/promises.js.map +1 -0
- package/dist/lib/polyfills/xmlhttprequest.d.ts +6 -0
- package/dist/lib/polyfills/xmlhttprequest.d.ts.map +1 -0
- package/dist/lib/polyfills/xmlhttprequest.js +127 -0
- package/dist/lib/polyfills/xmlhttprequest.js.map +1 -0
- package/dist/lib/quick-js/convert-handles.d.ts +14 -0
- package/dist/lib/quick-js/convert-handles.d.ts.map +1 -0
- package/dist/lib/quick-js/convert-handles.js +83 -0
- package/dist/lib/quick-js/convert-handles.js.map +1 -0
- package/dist/lib/quick-js/index.d.ts +12 -0
- package/dist/lib/quick-js/index.d.ts.map +1 -0
- package/dist/lib/quick-js/index.js +159 -0
- package/dist/lib/quick-js/index.js.map +1 -0
- package/dist/lib/quick-js/rpc-scene-runtime.d.ts +13 -0
- package/dist/lib/quick-js/rpc-scene-runtime.d.ts.map +1 -0
- package/dist/lib/quick-js/rpc-scene-runtime.js +32 -0
- package/dist/lib/quick-js/rpc-scene-runtime.js.map +1 -0
- package/dist/lib/quick-js/types.d.ts +35 -0
- package/dist/lib/quick-js/types.d.ts.map +1 -0
- package/dist/lib/quick-js/types.js +3 -0
- package/dist/lib/quick-js/types.js.map +1 -0
- package/dist/lib/web-worker-runtime/context.d.ts +12 -0
- package/dist/lib/web-worker-runtime/context.d.ts.map +1 -0
- package/dist/lib/web-worker-runtime/context.js +97 -0
- package/dist/lib/web-worker-runtime/context.js.map +1 -0
- package/dist/lib/web-worker-runtime/sandbox.d.ts +9 -0
- package/dist/lib/web-worker-runtime/sandbox.d.ts.map +1 -0
- package/dist/lib/web-worker-runtime/sandbox.js +98 -0
- package/dist/lib/web-worker-runtime/sandbox.js.map +1 -0
- package/dist/lib/web-worker-runtime/web-worker-scene-runtime.d.ts +13 -0
- package/dist/lib/web-worker-runtime/web-worker-scene-runtime.d.ts.map +1 -0
- package/dist/lib/web-worker-runtime/web-worker-scene-runtime.js +32 -0
- package/dist/lib/web-worker-runtime/web-worker-scene-runtime.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Scene } from "@babylonjs/core";
|
|
2
|
+
import { PBAvatarShape } from "@dcl/protocol/out-js/decentraland/sdk/components/avatar_shape.gen";
|
|
3
|
+
import { Avatar } from "@dcl/schemas";
|
|
4
|
+
export declare function createLocalAvatarSceneSystem(scene: Scene, currentAvatar: Avatar): Promise<{
|
|
5
|
+
playerEntity: import("../BabylonEntity").BabylonEntity;
|
|
6
|
+
update(): void;
|
|
7
|
+
lateUpdate(): void;
|
|
8
|
+
setAvatarShape: (value: PBAvatarShape) => void;
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=local-avatar-scene.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-avatar-scene.d.ts","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/local-avatar-scene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAIvC,OAAO,EAAE,aAAa,EAAE,MAAM,mEAAmE,CAAA;AAEjG,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAIrC,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM;;;;4BAmBrD,aAAa;GA6B7C"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createLocalAvatarSceneSystem = void 0;
|
|
4
|
+
const scene_context_1 = require("../scene-context");
|
|
5
|
+
const static_entities_1 = require("./static-entities");
|
|
6
|
+
const avatar_shape_1 = require("../../../decentraland/sdk-components/avatar-shape");
|
|
7
|
+
// this system internally creates a SceneContext to host the playerEntity
|
|
8
|
+
// IMPORTANT: this behavior is not final, will be revisited while implementing AvatarAttachment component
|
|
9
|
+
async function createLocalAvatarSceneSystem(scene, currentAvatar) {
|
|
10
|
+
const localAvatarScene = new scene_context_1.SceneContext(scene, {
|
|
11
|
+
urn: 'localAvatarScene',
|
|
12
|
+
baseUrl: "https://peer.decentraland.org/content/contents",
|
|
13
|
+
entity: {
|
|
14
|
+
content: [],
|
|
15
|
+
metadata: { main: "injected", scene: { base: "0,0", parcels: [] } },
|
|
16
|
+
type: "scene",
|
|
17
|
+
},
|
|
18
|
+
}, true, 'local-avatar');
|
|
19
|
+
await localAvatarScene.initAsyncJobs();
|
|
20
|
+
const playerEntity = localAvatarScene.getOrCreateEntity(static_entities_1.StaticEntities.PlayerEntity);
|
|
21
|
+
function setAvatarShape(value) {
|
|
22
|
+
localAvatarScene.components[avatar_shape_1.avatarShapeComponent.componentId].createOrReplace(static_entities_1.StaticEntities.PlayerEntity, value);
|
|
23
|
+
// Skip setAvatarRenderer in headless mode - requires canvas/GUI textures
|
|
24
|
+
}
|
|
25
|
+
function setAvatarShapeFromAvatar(av) {
|
|
26
|
+
setAvatarShape({
|
|
27
|
+
id: av.ethAddress,
|
|
28
|
+
name: av.name,
|
|
29
|
+
wearables: av.avatar.wearables,
|
|
30
|
+
emotes: av.avatar.emotes?.map($ => $.urn) ?? [],
|
|
31
|
+
bodyShape: av.avatar.bodyShape ?? "urn:decentraland:off-chain:base-avatars:BaseMale",
|
|
32
|
+
eyeColor: av.avatar.eyes.color,
|
|
33
|
+
hairColor: av.avatar.hair.color,
|
|
34
|
+
skinColor: av.avatar.skin.color
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
setAvatarShapeFromAvatar(currentAvatar);
|
|
38
|
+
return {
|
|
39
|
+
playerEntity,
|
|
40
|
+
update() {
|
|
41
|
+
localAvatarScene.update(() => true);
|
|
42
|
+
},
|
|
43
|
+
lateUpdate() {
|
|
44
|
+
localAvatarScene.lateUpdate();
|
|
45
|
+
},
|
|
46
|
+
setAvatarShape
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
exports.createLocalAvatarSceneSystem = createLocalAvatarSceneSystem;
|
|
50
|
+
//# sourceMappingURL=local-avatar-scene.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-avatar-scene.js","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/local-avatar-scene.ts"],"names":[],"mappings":";;;AACA,oDAA+C;AAC/C,uDAAkD;AAClD,oFAA2G;AAK3G,yEAAyE;AACzE,yGAAyG;AAClG,KAAK,UAAU,4BAA4B,CAAC,KAAY,EAAE,aAAqB;IACpF,MAAM,gBAAgB,GAAG,IAAI,4BAAY,CACvC,KAAK,EACL;QACE,GAAG,EAAE,kBAAkB;QACvB,OAAO,EAAE,gDAAgD;QACzD,MAAM,EAAE;YACN,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE;YACnE,IAAI,EAAE,OAAO;SACd;KACF,EACD,IAAI,EACJ,cAAc,CACf,CAAA;IAED,MAAM,gBAAgB,CAAC,aAAa,EAAE,CAAA;IACtC,MAAM,YAAY,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,gCAAc,CAAC,YAAY,CAAC,CAAA;IAEpF,SAAS,cAAc,CAAC,KAAoB;QAC1C,gBAAgB,CAAC,UAAU,CAAC,mCAAoB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gCAAc,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;QACjH,yEAAyE;IAC3E,CAAC;IAED,SAAS,wBAAwB,CAAC,EAAU;QAC1C,cAAc,CAAC;YACb,EAAE,EAAE,EAAE,CAAC,UAAU;YACjB,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS;YAC9B,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE;YAC/C,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,kDAAkD;YACpF,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;YAC9B,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;YAC/B,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;SAChC,CAAC,CAAA;IACJ,CAAC;IACD,wBAAwB,CAAC,aAAa,CAAC,CAAA;IAEvC,OAAO;QACL,YAAY;QACZ,MAAM;YACJ,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;QACD,UAAU;YACR,gBAAgB,CAAC,UAAU,EAAE,CAAA;QAC/B,CAAC;QACD,cAAc;KACf,CAAA;AACH,CAAC;AAhDD,oEAgDC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Scene } from '@babylonjs/core';
|
|
2
|
+
import { BabylonEntity } from '../BabylonEntity';
|
|
3
|
+
import { InputAction, PointerEventType } from '@dcl/protocol/out-js/decentraland/sdk/components/common/input_action.gen';
|
|
4
|
+
export declare function entityHasPointerEvents(entity: BabylonEntity): boolean;
|
|
5
|
+
export declare function pickPointerEventsMesh(scene: Scene): void;
|
|
6
|
+
export declare function pickActivePointerEventsEntity(scene: Scene): BabylonEntity | null;
|
|
7
|
+
/**
|
|
8
|
+
* This function reacts to a pointer event triggered by any input. If an entity was picked,
|
|
9
|
+
* it will trigger the corresponding PointerEvent
|
|
10
|
+
*/
|
|
11
|
+
export declare function interactWithScene(eventType: PointerEventType, action: InputAction): void;
|
|
12
|
+
//# sourceMappingURL=pointer-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pointer-events.d.ts","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/pointer-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqD,KAAK,EAAW,MAAM,iBAAiB,CAAA;AAEnG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAKhD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,0EAA0E,CAAA;AAMxH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa,WAE3D;AAoCD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,QAIjD;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,GAAG,IAAI,CA+BhF;AAiFD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,QAcjF"}
|
|
@@ -0,0 +1,199 @@
|
|
|
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.interactWithScene = exports.pickActivePointerEventsEntity = exports.pickPointerEventsMesh = exports.entityHasPointerEvents = void 0;
|
|
27
|
+
const GUI = __importStar(require("@babylonjs/gui"));
|
|
28
|
+
const BabylonEntity_1 = require("../BabylonEntity");
|
|
29
|
+
const colliders_1 = require("./colliders");
|
|
30
|
+
const mesh_collider_gen_1 = require("@dcl/protocol/out-js/decentraland/sdk/components/mesh_collider.gen");
|
|
31
|
+
const memoize_1 = require("../../../misc/memoize");
|
|
32
|
+
const ui_1 = require("../../visual/ui");
|
|
33
|
+
const input_action_gen_1 = require("@dcl/protocol/out-js/decentraland/sdk/components/common/input_action.gen");
|
|
34
|
+
const pointer_events_result_1 = require("../../../decentraland/sdk-components/pointer-events-result");
|
|
35
|
+
const raycasts_1 = require("./raycasts");
|
|
36
|
+
// returns true if the entity has PointerEvents
|
|
37
|
+
function entityHasPointerEvents(entity) {
|
|
38
|
+
return !!entity.appliedComponents.pointerEvents;
|
|
39
|
+
}
|
|
40
|
+
exports.entityHasPointerEvents = entityHasPointerEvents;
|
|
41
|
+
let lastPickedEntity = null;
|
|
42
|
+
let lastPickPoint = null;
|
|
43
|
+
let globalLamportTimestamp = 0;
|
|
44
|
+
const hoverText = (0, memoize_1.memoize)((scene) => {
|
|
45
|
+
const text = new GUI.TextBlock("but1", "");
|
|
46
|
+
text.width = "250px";
|
|
47
|
+
text.height = "60px";
|
|
48
|
+
text.color = "white";
|
|
49
|
+
text.fontSize = 24;
|
|
50
|
+
text.shadowColor = "black";
|
|
51
|
+
text.shadowOffsetX = 2;
|
|
52
|
+
text.shadowOffsetY = 2;
|
|
53
|
+
text.top = "100px";
|
|
54
|
+
(0, ui_1.advancedUiTexture)(scene).addControl(text);
|
|
55
|
+
return text;
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* This function walks the parents of the provided searchEntity
|
|
59
|
+
* @returns the first BabylonEntity it encounters
|
|
60
|
+
*/
|
|
61
|
+
function getParentEntity(leafEntity) {
|
|
62
|
+
// walk the parents until we find the searchEntity we are looking for
|
|
63
|
+
let parent = leafEntity;
|
|
64
|
+
if (leafEntity instanceof BabylonEntity_1.BabylonEntity)
|
|
65
|
+
return leafEntity;
|
|
66
|
+
while (parent = parent?.parent) {
|
|
67
|
+
if (parent instanceof BabylonEntity_1.BabylonEntity)
|
|
68
|
+
return parent;
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
function pickPointerEventsMesh(scene) {
|
|
73
|
+
const pickedEntity = pickActivePointerEventsEntity(scene);
|
|
74
|
+
hoverNewEntity(pickedEntity, scene);
|
|
75
|
+
}
|
|
76
|
+
exports.pickPointerEventsMesh = pickPointerEventsMesh;
|
|
77
|
+
function pickActivePointerEventsEntity(scene) {
|
|
78
|
+
const camera = scene.activeCamera;
|
|
79
|
+
if (!camera)
|
|
80
|
+
return null;
|
|
81
|
+
const pickInfo = scene.pick(scene.getEngine().getRenderWidth() / 2, scene.getEngine().getRenderHeight() / 2, (mesh) => {
|
|
82
|
+
// select meshes with CL_POINTER
|
|
83
|
+
if ((0, colliders_1.getColliderLayers)(mesh) & mesh_collider_gen_1.ColliderLayer.CL_POINTER) {
|
|
84
|
+
// and then only filter by meshes having PointerEvents
|
|
85
|
+
const parentEntity = getParentEntity(mesh);
|
|
86
|
+
if (parentEntity) {
|
|
87
|
+
return entityHasPointerEvents(parentEntity);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
91
|
+
}, false, camera);
|
|
92
|
+
if (pickInfo.pickedMesh && pickInfo.pickedPoint) {
|
|
93
|
+
lastPickPoint = pickInfo;
|
|
94
|
+
const parentEntity = getParentEntity(pickInfo.pickedMesh);
|
|
95
|
+
return parentEntity;
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
exports.pickActivePointerEventsEntity = pickActivePointerEventsEntity;
|
|
100
|
+
function addPointerEventResult(entity, result) {
|
|
101
|
+
if (!lastPickedEntity?.appliedComponents.pointerEvents)
|
|
102
|
+
return;
|
|
103
|
+
const context = lastPickedEntity.context.deref();
|
|
104
|
+
if (!context)
|
|
105
|
+
return;
|
|
106
|
+
const PointerEventsResult = context.components[pointer_events_result_1.pointerEventsResultComponent.componentId];
|
|
107
|
+
PointerEventsResult.addValue(entity.entityId, {
|
|
108
|
+
tickNumber: context.currentTick,
|
|
109
|
+
...result
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
function hoverNewEntity(entity, scene) {
|
|
113
|
+
if (lastPickedEntity && lastPickedEntity !== entity) {
|
|
114
|
+
interactWithScene(input_action_gen_1.PointerEventType.PET_HOVER_LEAVE, input_action_gen_1.InputAction.UNRECOGNIZED);
|
|
115
|
+
}
|
|
116
|
+
lastPickedEntity = entity;
|
|
117
|
+
if (entity && lastPickedEntity !== entity) {
|
|
118
|
+
interactWithScene(input_action_gen_1.PointerEventType.PET_HOVER_ENTER, input_action_gen_1.InputAction.UNRECOGNIZED);
|
|
119
|
+
}
|
|
120
|
+
if (entity) {
|
|
121
|
+
const instructions = [];
|
|
122
|
+
for (const event of entity.appliedComponents.pointerEvents?.pointerEvents || []) {
|
|
123
|
+
if (event.eventInfo?.hoverText) {
|
|
124
|
+
let button = '[?]';
|
|
125
|
+
if (event.eventInfo.button === input_action_gen_1.InputAction.IA_PRIMARY) {
|
|
126
|
+
button = '[E]';
|
|
127
|
+
}
|
|
128
|
+
else if (event.eventInfo.button === input_action_gen_1.InputAction.IA_SECONDARY) {
|
|
129
|
+
button = '[F]';
|
|
130
|
+
}
|
|
131
|
+
else if (event.eventInfo.button === input_action_gen_1.InputAction.IA_ACTION_3) {
|
|
132
|
+
button = '[1]';
|
|
133
|
+
}
|
|
134
|
+
else if (event.eventInfo.button === input_action_gen_1.InputAction.IA_ACTION_4) {
|
|
135
|
+
button = '[2]';
|
|
136
|
+
}
|
|
137
|
+
else if (event.eventInfo.button === input_action_gen_1.InputAction.IA_ACTION_5) {
|
|
138
|
+
button = '[3]';
|
|
139
|
+
}
|
|
140
|
+
else if (event.eventInfo.button === input_action_gen_1.InputAction.IA_ACTION_6) {
|
|
141
|
+
button = '[4]';
|
|
142
|
+
}
|
|
143
|
+
else if (event.eventInfo.button === input_action_gen_1.InputAction.IA_FORWARD) {
|
|
144
|
+
button = '[FORWARD]';
|
|
145
|
+
}
|
|
146
|
+
else if (event.eventInfo.button === input_action_gen_1.InputAction.IA_BACKWARD) {
|
|
147
|
+
button = '[BACKWARD]';
|
|
148
|
+
}
|
|
149
|
+
else if (event.eventInfo.button === input_action_gen_1.InputAction.IA_LEFT) {
|
|
150
|
+
button = '[LEFT]';
|
|
151
|
+
}
|
|
152
|
+
else if (event.eventInfo.button === input_action_gen_1.InputAction.IA_RIGHT) {
|
|
153
|
+
button = '[RIGHT]';
|
|
154
|
+
}
|
|
155
|
+
else if (event.eventInfo.button === input_action_gen_1.InputAction.IA_WALK) {
|
|
156
|
+
button = '[WALK]';
|
|
157
|
+
}
|
|
158
|
+
else if (event.eventInfo.button === input_action_gen_1.InputAction.IA_POINTER) {
|
|
159
|
+
button = '[CLICK]';
|
|
160
|
+
}
|
|
161
|
+
else if (event.eventInfo.button === input_action_gen_1.InputAction.IA_JUMP) {
|
|
162
|
+
button = '[JUMP]';
|
|
163
|
+
}
|
|
164
|
+
instructions.push(button + ' ' + event.eventInfo?.hoverText);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (typeof OffscreenCanvas !== 'undefined') {
|
|
168
|
+
const label = hoverText(scene);
|
|
169
|
+
label.text = instructions.join('\n');
|
|
170
|
+
label.isVisible = true;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
if (typeof OffscreenCanvas !== 'undefined') {
|
|
175
|
+
const label = hoverText(scene);
|
|
176
|
+
label.isVisible = false;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* This function reacts to a pointer event triggered by any input. If an entity was picked,
|
|
182
|
+
* it will trigger the corresponding PointerEvent
|
|
183
|
+
*/
|
|
184
|
+
function interactWithScene(eventType, action) {
|
|
185
|
+
if (!lastPickedEntity?.appliedComponents.pointerEvents || !lastPickPoint)
|
|
186
|
+
return;
|
|
187
|
+
const context = lastPickedEntity.context.deref();
|
|
188
|
+
if (!context)
|
|
189
|
+
return;
|
|
190
|
+
// TODO: check for max distance and input filtering
|
|
191
|
+
addPointerEventResult(lastPickedEntity, {
|
|
192
|
+
state: eventType,
|
|
193
|
+
button: action,
|
|
194
|
+
hit: (0, raycasts_1.pickingToRaycastHit)(context, lastPickPoint, lastPickPoint.ray),
|
|
195
|
+
timestamp: globalLamportTimestamp++,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
exports.interactWithScene = interactWithScene;
|
|
199
|
+
//# sourceMappingURL=pointer-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pointer-events.js","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/pointer-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as BABYLON from "@babylonjs/core";
|
|
2
|
+
import { Ray } from "@babylonjs/core";
|
|
3
|
+
import { RaycastHit } from "@dcl/protocol/out-js/decentraland/sdk/components/common/raycast_hit.gen";
|
|
4
|
+
import { RaycastQueryType } from "@dcl/protocol/out-js/decentraland/sdk/components/raycast.gen";
|
|
5
|
+
import { PBRaycastResult } from "@dcl/protocol/out-js/decentraland/sdk/components/raycast_result.gen";
|
|
6
|
+
import { SceneContext } from "../scene-context";
|
|
7
|
+
/**
|
|
8
|
+
* The processRaycasts function iterates over a copy of the pendingRaycastOperations
|
|
9
|
+
* and for each it does
|
|
10
|
+
* 1. It performs the final ray transformations based on the final positions of the entities
|
|
11
|
+
* 2. Filters the meshes to perform the raycast
|
|
12
|
+
* 3. Updates the RaycastResult component with the result of the query
|
|
13
|
+
* 4. If necessary, removes the raycast from pendingRaycastOperations
|
|
14
|
+
*/
|
|
15
|
+
export declare function processRaycasts(scene: SceneContext): void;
|
|
16
|
+
export declare function raycastResultFromRay(scene: SceneContext, ray: Ray, results: BABYLON.PickingInfo[], queryType: RaycastQueryType, timestamp: number): PBRaycastResult;
|
|
17
|
+
/**
|
|
18
|
+
* Converts a result of a raycast (PickingInfo) into a RaycastHit of the Decentraland Protocol
|
|
19
|
+
*/
|
|
20
|
+
export declare function pickingToRaycastHit(scene: SceneContext, pickingInfo: BABYLON.PickingInfo, ray: BABYLON.Ray): RaycastHit;
|
|
21
|
+
//# sourceMappingURL=raycasts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raycasts.d.ts","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/raycasts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAW,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,yEAAyE,CAAC;AACrG,OAAO,EAAa,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AAC3G,OAAO,EAAE,eAAe,EAAE,MAAM,qEAAqE,CAAC;AAEtG,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMhD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,QAkClD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,mBAiBjJ;AAsFD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,UAAU,CAWvH"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pickingToRaycastHit = exports.raycastResultFromRay = exports.processRaycasts = void 0;
|
|
4
|
+
const core_1 = require("@babylonjs/core");
|
|
5
|
+
const raycast_gen_1 = require("@dcl/protocol/out-js/decentraland/sdk/components/raycast.gen");
|
|
6
|
+
const raycast_component_1 = require("../../../decentraland/sdk-components/raycast-component");
|
|
7
|
+
const coordinates_1 = require("../coordinates");
|
|
8
|
+
const BabylonEntity_1 = require("../BabylonEntity");
|
|
9
|
+
const colliders_1 = require("./colliders");
|
|
10
|
+
const mesh_collider_gen_1 = require("@dcl/protocol/out-js/decentraland/sdk/components/mesh_collider.gen");
|
|
11
|
+
/**
|
|
12
|
+
* The processRaycasts function iterates over a copy of the pendingRaycastOperations
|
|
13
|
+
* and for each it does
|
|
14
|
+
* 1. It performs the final ray transformations based on the final positions of the entities
|
|
15
|
+
* 2. Filters the meshes to perform the raycast
|
|
16
|
+
* 3. Updates the RaycastResult component with the result of the query
|
|
17
|
+
* 4. If necessary, removes the raycast from pendingRaycastOperations
|
|
18
|
+
*/
|
|
19
|
+
function processRaycasts(scene) {
|
|
20
|
+
const RaycastResult = scene.components[raycast_component_1.raycastResultComponent.componentId];
|
|
21
|
+
const Raycast = scene.components[raycast_component_1.raycastComponent.componentId];
|
|
22
|
+
// clone the set into an array to mutate the set while iterating
|
|
23
|
+
const iter = Array.from(scene.pendingRaycastOperations);
|
|
24
|
+
for (const entityId of iter) {
|
|
25
|
+
const raycast = Raycast.getOrNull(entityId);
|
|
26
|
+
if (raycast) {
|
|
27
|
+
const entity = scene.getEntityOrNull(entityId);
|
|
28
|
+
if (entity && entity.appliedComponents.raycast) {
|
|
29
|
+
const ray = computeRayDirection(scene, raycast, entity.appliedComponents.raycast.ray, entity);
|
|
30
|
+
// get a list of all possible meshes to project this ray to
|
|
31
|
+
const DEFAULT_RAYCAST_MASK = mesh_collider_gen_1.ColliderLayer.CL_POINTER | mesh_collider_gen_1.ColliderLayer.CL_PHYSICS;
|
|
32
|
+
const intersectableMeshes = Array.from((0, colliders_1.pickMeshesForMask)(scene.rootNode, raycast.collisionMask ?? DEFAULT_RAYCAST_MASK));
|
|
33
|
+
// then perform the actual raycast
|
|
34
|
+
const results = ray.intersectsMeshes(intersectableMeshes, false);
|
|
35
|
+
const raycastResult = raycastResultFromRay(scene, ray, results, raycast.queryType, raycast.timestamp || 0);
|
|
36
|
+
// send the result back to the scene
|
|
37
|
+
RaycastResult.createOrReplace(entity.entityId, raycastResult);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// lastly remove the raycast from the list if necessary
|
|
41
|
+
const shouldRaycastBeDeletedFromPendingList = !raycast?.continuous;
|
|
42
|
+
if (shouldRaycastBeDeletedFromPendingList) {
|
|
43
|
+
scene.pendingRaycastOperations.delete(entityId);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.processRaycasts = processRaycasts;
|
|
48
|
+
function raycastResultFromRay(scene, ray, results, queryType, timestamp) {
|
|
49
|
+
// start preparing the result
|
|
50
|
+
const raycastResult = {
|
|
51
|
+
direction: core_1.Vector3.Normalize(ray.direction),
|
|
52
|
+
globalOrigin: (0, coordinates_1.globalCoordinatesToSceneCoordinates)(scene, ray.origin),
|
|
53
|
+
timestamp,
|
|
54
|
+
hits: [],
|
|
55
|
+
tickNumber: scene.currentTick
|
|
56
|
+
};
|
|
57
|
+
if (queryType === raycast_gen_1.RaycastQueryType.RQT_HIT_FIRST && results.length) {
|
|
58
|
+
raycastResult.hits = [pickingToRaycastHit(scene, pickClosest(results), ray)];
|
|
59
|
+
}
|
|
60
|
+
else if (queryType === raycast_gen_1.RaycastQueryType.RQT_QUERY_ALL && results.length) {
|
|
61
|
+
raycastResult.hits = results.map(_ => pickingToRaycastHit(scene, _, ray));
|
|
62
|
+
}
|
|
63
|
+
return raycastResult;
|
|
64
|
+
}
|
|
65
|
+
exports.raycastResultFromRay = raycastResultFromRay;
|
|
66
|
+
/**
|
|
67
|
+
* Pick closest selects the closest point of an array. By .distance field
|
|
68
|
+
*/
|
|
69
|
+
function pickClosest(elems) {
|
|
70
|
+
let closest = undefined;
|
|
71
|
+
for (let it of elems) {
|
|
72
|
+
if (!closest || it.distance < closest.distance) {
|
|
73
|
+
closest = it;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return closest;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Compute ray direction calculates the "global coordinates" ray to perform
|
|
80
|
+
* the raycast operation.
|
|
81
|
+
*/
|
|
82
|
+
function computeRayDirection(scene, raycast, ray, entity) {
|
|
83
|
+
const originOffset = raycast.originOffset ?? core_1.Vector3.Zero();
|
|
84
|
+
const globalOrigin = core_1.Vector3.TransformCoordinatesToRef(new core_1.Vector3(originOffset.x, originOffset.y, originOffset.z), entity.getWorldMatrix(), ray.origin);
|
|
85
|
+
// and then calculate the global direction, relative to the
|
|
86
|
+
if (!raycast.direction) {
|
|
87
|
+
// the default value if direction is missing is a local-space forward vector
|
|
88
|
+
core_1.Vector3.TransformNormalToRef(core_1.Vector3.Forward(), entity.getWorldMatrix(), ray.direction);
|
|
89
|
+
}
|
|
90
|
+
else if (raycast.direction?.$case === 'localDirection') {
|
|
91
|
+
// then localDirection, is used to detect collisions in a path
|
|
92
|
+
// i.e. Vector3.Forward(), it takes into consideration the rotation of
|
|
93
|
+
// the entity to perform the raycast in local coordinates
|
|
94
|
+
core_1.Vector3.TransformNormalToRef(new core_1.Vector3(raycast.direction.localDirection.x ?? 0, raycast.direction.localDirection.y ?? 0, raycast.direction.localDirection.z ?? 1), entity.getWorldMatrix(), ray.direction);
|
|
95
|
+
}
|
|
96
|
+
else if (raycast.direction?.$case === 'globalDirection') {
|
|
97
|
+
ray.direction.set(raycast.direction?.globalDirection.x, raycast.direction?.globalDirection.y, raycast.direction?.globalDirection.z).normalize();
|
|
98
|
+
}
|
|
99
|
+
else if (raycast.direction?.$case == 'globalTarget') {
|
|
100
|
+
const sceneTarget = new core_1.Vector3(raycast.direction.globalTarget.x, raycast.direction.globalTarget.y, raycast.direction.globalTarget.z);
|
|
101
|
+
const globalTarget = (0, coordinates_1.sceneCoordinatesToBabylonGlobalCoordinates)(scene, sceneTarget);
|
|
102
|
+
// scene one is to make it easy to point towards a pin-pointed element
|
|
103
|
+
// in global space, like a fixed tower
|
|
104
|
+
ray.direction.set(globalTarget.x - globalOrigin.x, globalTarget.y - globalOrigin.y, globalTarget.z - globalOrigin.z).normalize();
|
|
105
|
+
}
|
|
106
|
+
else if (raycast.direction?.$case == 'targetEntity') {
|
|
107
|
+
const targetEntity = scene.getEntityOrNull(raycast.direction.targetEntity);
|
|
108
|
+
const sceneTarget = targetEntity ? targetEntity.absolutePosition : core_1.Vector3.Zero();
|
|
109
|
+
const globalTarget = (0, coordinates_1.sceneCoordinatesToBabylonGlobalCoordinates)(scene, sceneTarget);
|
|
110
|
+
// scene one is to make it easy to point towards a pin-pointed element
|
|
111
|
+
// in global space, like a fixed tower
|
|
112
|
+
ray.direction.set(globalTarget.x - globalOrigin.x, globalTarget.y - globalOrigin.y, globalTarget.z - globalOrigin.z).normalize();
|
|
113
|
+
}
|
|
114
|
+
return ray;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Converts a result of a raycast (PickingInfo) into a RaycastHit of the Decentraland Protocol
|
|
118
|
+
*/
|
|
119
|
+
function pickingToRaycastHit(scene, pickingInfo, ray) {
|
|
120
|
+
if (!pickingInfo.pickedPoint)
|
|
121
|
+
debugger;
|
|
122
|
+
return {
|
|
123
|
+
normalHit: pickingInfo.getNormal(true) || undefined,
|
|
124
|
+
direction: ray.direction,
|
|
125
|
+
globalOrigin: (0, coordinates_1.globalCoordinatesToSceneCoordinates)(scene, ray.origin),
|
|
126
|
+
length: pickingInfo.distance,
|
|
127
|
+
position: (0, coordinates_1.globalCoordinatesToSceneCoordinates)(scene, pickingInfo.pickedPoint),
|
|
128
|
+
entityId: getParentEntityId(pickingInfo.pickedMesh),
|
|
129
|
+
meshName: pickingInfo.pickedMesh?.name
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
exports.pickingToRaycastHit = pickingToRaycastHit;
|
|
133
|
+
// iterates the parents of the mesh until the a BabylonEntity is reached, it returns its .entityId
|
|
134
|
+
function getParentEntityId(node) {
|
|
135
|
+
let parent = node;
|
|
136
|
+
while (parent = parent?.parent) {
|
|
137
|
+
if (parent instanceof BabylonEntity_1.BabylonEntity)
|
|
138
|
+
return parent.entityId;
|
|
139
|
+
}
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=raycasts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raycasts.js","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/raycasts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SceneContext } from "../scene-context";
|
|
2
|
+
import { Entity } from "../../../decentraland/types";
|
|
3
|
+
export declare const StaticEntities: {
|
|
4
|
+
readonly RootEntity: number;
|
|
5
|
+
readonly PlayerEntity: number;
|
|
6
|
+
readonly CameraEntity: number;
|
|
7
|
+
readonly GlobalCenterOfCoordinates: number;
|
|
8
|
+
};
|
|
9
|
+
export declare const PLAYER_HEIGHT = 1.7;
|
|
10
|
+
export declare const MAX_RESERVED_ENTITY = 512;
|
|
11
|
+
export declare const AVATAR_ENTITY_RANGE: [number, number];
|
|
12
|
+
export declare function entityIsInRange(entity: Entity, range: [number, number]): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* This function updates the static entities to be reported back to the scene once
|
|
15
|
+
* per frame and when the scene asks for the initial state.
|
|
16
|
+
*/
|
|
17
|
+
export declare function updateStaticEntities(context: SceneContext): void;
|
|
18
|
+
//# sourceMappingURL=static-entities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static-entities.d.ts","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/static-entities.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAKrD,eAAO,MAAM,cAAc;;;;;CAKjB,CAAA;AAEV,eAAO,MAAM,aAAa,MAAM,CAAA;AAChC,eAAO,MAAM,mBAAmB,MAAM,CAAA;AACtC,eAAO,MAAM,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,CAA8B,CAAA;AAI/E,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,WAGtE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,QAiDzD"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateStaticEntities = exports.entityIsInRange = exports.AVATAR_ENTITY_RANGE = exports.MAX_RESERVED_ENTITY = exports.PLAYER_HEIGHT = exports.StaticEntities = void 0;
|
|
4
|
+
const core_1 = require("@babylonjs/core");
|
|
5
|
+
const transform_component_1 = require("../../../decentraland/sdk-components/transform-component");
|
|
6
|
+
const coordinates_1 = require("../coordinates");
|
|
7
|
+
const engine_info_1 = require("../../../decentraland/sdk-components/engine-info");
|
|
8
|
+
const generational_index_pool_1 = require("../../../decentraland/crdt-internal/generational-index-pool");
|
|
9
|
+
const state_1 = require("../../../decentraland/state");
|
|
10
|
+
exports.StaticEntities = {
|
|
11
|
+
RootEntity: 0,
|
|
12
|
+
PlayerEntity: 1,
|
|
13
|
+
CameraEntity: 2,
|
|
14
|
+
GlobalCenterOfCoordinates: 5,
|
|
15
|
+
};
|
|
16
|
+
exports.PLAYER_HEIGHT = 1.7;
|
|
17
|
+
exports.MAX_RESERVED_ENTITY = 512;
|
|
18
|
+
exports.AVATAR_ENTITY_RANGE = [128, exports.MAX_RESERVED_ENTITY];
|
|
19
|
+
// this function defines if the engine should accept updates to the entity by its
|
|
20
|
+
// entity number
|
|
21
|
+
function entityIsInRange(entity, range) {
|
|
22
|
+
const [entityNumber, _version] = generational_index_pool_1.EntityUtils.fromEntityId(entity);
|
|
23
|
+
return entityNumber < range[1] && entityNumber >= range[0];
|
|
24
|
+
}
|
|
25
|
+
exports.entityIsInRange = entityIsInRange;
|
|
26
|
+
/**
|
|
27
|
+
* This function updates the static entities to be reported back to the scene once
|
|
28
|
+
* per frame and when the scene asks for the initial state.
|
|
29
|
+
*/
|
|
30
|
+
function updateStaticEntities(context) {
|
|
31
|
+
const EngineInfo = context.components[engine_info_1.engineInfoComponent.componentId];
|
|
32
|
+
if (!EngineInfo.has(exports.StaticEntities.RootEntity))
|
|
33
|
+
EngineInfo.create(exports.StaticEntities.RootEntity, { frameNumber: 0, tickNumber: 0, totalRuntime: 0 });
|
|
34
|
+
const info = EngineInfo.getMutable(exports.StaticEntities.RootEntity);
|
|
35
|
+
info.tickNumber = context.currentTick;
|
|
36
|
+
info.totalRuntime = context.getElapsedTime();
|
|
37
|
+
info.frameNumber = context.babylonScene.getEngine().frameId - context.startFrame;
|
|
38
|
+
const Transform = context.components[transform_component_1.transformComponent.componentId];
|
|
39
|
+
if (!Transform.has(exports.StaticEntities.CameraEntity))
|
|
40
|
+
Transform.create(exports.StaticEntities.CameraEntity, { position: core_1.Vector3.Zero(), scale: core_1.Vector3.One(), rotation: core_1.Quaternion.Identity(), parent: exports.StaticEntities.RootEntity });
|
|
41
|
+
if (!Transform.has(exports.StaticEntities.PlayerEntity))
|
|
42
|
+
Transform.create(exports.StaticEntities.PlayerEntity, { position: core_1.Vector3.Zero(), scale: core_1.Vector3.One(), rotation: core_1.Quaternion.Identity(), parent: exports.StaticEntities.RootEntity });
|
|
43
|
+
if (!Transform.has(exports.StaticEntities.GlobalCenterOfCoordinates))
|
|
44
|
+
Transform.create(exports.StaticEntities.GlobalCenterOfCoordinates, { position: context.rootNode.position.scale(-1), scale: core_1.Vector3.One(), rotation: core_1.Quaternion.Identity(), parent: exports.StaticEntities.RootEntity });
|
|
45
|
+
// StaticEntities.PlayerEntity
|
|
46
|
+
{
|
|
47
|
+
const playerTransform = Transform.getMutable(exports.StaticEntities.PlayerEntity);
|
|
48
|
+
const player = state_1.playerEntityAtom.getOrNull();
|
|
49
|
+
// convert the camera position to scene-space coordinates
|
|
50
|
+
playerTransform.position = (0, coordinates_1.globalCoordinatesToSceneCoordinates)(context, player?.absolutePosition ?? core_1.Vector3.Zero());
|
|
51
|
+
playerTransform.rotation = player?.absoluteRotationQuaternion ?? core_1.Quaternion.Identity();
|
|
52
|
+
}
|
|
53
|
+
// StaticEntities.CameraEntity
|
|
54
|
+
{
|
|
55
|
+
const engineCamera = context.babylonScene.activeCamera;
|
|
56
|
+
const cameraTransform = Transform.getMutable(exports.StaticEntities.CameraEntity);
|
|
57
|
+
engineCamera?.getWorldMatrix().decompose(undefined, cameraTransform.rotation, cameraTransform.position);
|
|
58
|
+
// convert the camera position to scene-space coordinates
|
|
59
|
+
cameraTransform.position = (0, coordinates_1.globalCoordinatesToSceneCoordinates)(context, cameraTransform.position);
|
|
60
|
+
cameraTransform.scale.setAll(1);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.updateStaticEntities = updateStaticEntities;
|
|
64
|
+
//# sourceMappingURL=static-entities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static-entities.js","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/static-entities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { LoadableScene } from "../../decentraland/scene/content-server-entity";
|
|
2
|
+
import { SceneContext } from "./scene-context";
|
|
3
|
+
export declare function connectSceneContextUsingNodeJs(ctx: SceneContext, loadableScene: LoadableScene): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=nodejs-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodejs-runtime.d.ts","sourceRoot":"","sources":["../../../../src/lib/babylon/scene/nodejs-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAA;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AA0C9C,wBAAsB,8BAA8B,CAAC,GAAG,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,iBAoCnG"}
|