@dcl/ecs 7.29.1-35861881691.commit-e4e55e9 → 7.29.1-35901015152.commit-d1b7b96
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/extended/AvatarEquippedData.d.ts +15 -0
- package/dist/components/extended/AvatarEquippedData.js +10 -0
- package/dist/components/extended/AvatarShape.d.ts +15 -0
- package/dist/components/extended/AvatarShape.js +10 -0
- package/dist/components/extended/MeshCollider.d.ts +9 -0
- package/dist/components/extended/MeshCollider.js +6 -0
- package/dist/components/extended/MeshRenderer.d.ts +8 -0
- package/dist/components/extended/MeshRenderer.js +5 -0
- package/dist/components/generated/AvatarMovement.gen.d.ts +1 -0
- package/dist/components/generated/AvatarMovement.gen.js +25 -0
- package/dist/components/generated/AvatarMovementInfo.gen.d.ts +1 -0
- package/dist/components/generated/AvatarMovementInfo.gen.js +25 -0
- package/dist/components/generated/CameraLayer.gen.d.ts +1 -0
- package/dist/components/generated/CameraLayer.gen.js +25 -0
- package/dist/components/generated/CameraLayers.gen.d.ts +1 -0
- package/dist/components/generated/CameraLayers.gen.js +25 -0
- package/dist/components/generated/GlobalLight.gen.d.ts +1 -0
- package/dist/components/generated/GlobalLight.gen.js +25 -0
- package/dist/components/generated/GltfNode.gen.d.ts +1 -0
- package/dist/components/generated/GltfNode.gen.js +25 -0
- package/dist/components/generated/GltfNodeState.gen.d.ts +1 -0
- package/dist/components/generated/GltfNodeState.gen.js +25 -0
- package/dist/components/generated/TextureCamera.gen.d.ts +1 -0
- package/dist/components/generated/TextureCamera.gen.js +25 -0
- package/dist/components/generated/UiCanvas.gen.d.ts +1 -0
- package/dist/components/generated/UiCanvas.gen.js +25 -0
- package/dist/components/generated/UiScrollResult.gen.d.ts +1 -0
- package/dist/components/generated/UiScrollResult.gen.js +25 -0
- package/dist/components/generated/component-names.gen.js +10 -0
- package/dist/components/generated/global.gen.d.ts +20 -4
- package/dist/components/generated/global.gen.js +10 -2
- package/dist/components/generated/index.gen.d.ts +40 -0
- package/dist/components/generated/index.gen.js +50 -0
- package/dist/components/generated/pb/decentraland/common/texture.gen.d.ts +20 -0
- package/dist/components/generated/pb/decentraland/common/texture.gen.js +65 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_base.gen.d.ts +2 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_base.gen.js +17 -1
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +2 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +10 -1
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +2 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +10 -1
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.d.ts +57 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.js +204 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.d.ts +65 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.js +228 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +2 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +10 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +30 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +104 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +14 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +50 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +2 -0
- package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +10 -1
- package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +4 -1
- package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +3 -0
- package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +34 -0
- package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.js +61 -0
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +19 -0
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +46 -1
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +50 -0
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +41 -0
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +27 -0
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +59 -0
- package/dist/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +22 -0
- package/dist/components/generated/pb/decentraland/sdk/components/material.gen.js +57 -1
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +20 -0
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +56 -0
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +21 -3
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +56 -0
- package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +8 -2
- package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +3 -0
- package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +13 -0
- package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.js +30 -0
- package/dist/components/generated/pb/decentraland/sdk/components/text_shape.gen.d.ts +2 -0
- package/dist/components/generated/pb/decentraland/sdk/components/text_shape.gen.js +10 -0
- package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +74 -0
- package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +191 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +19 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +60 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_dropdown.gen.d.ts +2 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_dropdown.gen.js +10 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_input.gen.d.ts +6 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_input.gen.js +30 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +15 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +42 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +2 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +10 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +35 -0
- package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +90 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.js +6 -0
- package/dist/components/types.d.ts +2 -0
- package/dist/engine/input.js +8 -8
- package/dist/engine/lww-element-set-component-definition.js +14 -20
- package/dist/engine/readonly.d.ts +1 -1
- package/dist/engine/readonly.js +0 -10
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -0
- package/dist/schemas/OneOf.js +1 -13
- package/dist/systems/cyclicParentingChecker.js +4 -9
- package/dist/systems/events.d.ts +48 -0
- package/dist/systems/events.js +70 -48
- package/dist/systems/raycast.d.ts +5 -1
- package/dist/systems/raycast.js +5 -1
- package/dist-cjs/components/extended/AvatarEquippedData.d.ts +15 -0
- package/dist-cjs/components/extended/AvatarEquippedData.js +14 -0
- package/dist-cjs/components/extended/AvatarShape.d.ts +15 -0
- package/dist-cjs/components/extended/AvatarShape.js +14 -0
- package/dist-cjs/components/extended/MeshCollider.d.ts +9 -0
- package/dist-cjs/components/extended/MeshCollider.js +6 -0
- package/dist-cjs/components/extended/MeshRenderer.d.ts +8 -0
- package/dist-cjs/components/extended/MeshRenderer.js +5 -0
- package/dist-cjs/components/generated/AvatarMovement.gen.d.ts +1 -0
- package/dist-cjs/components/generated/AvatarMovement.gen.js +28 -0
- package/dist-cjs/components/generated/AvatarMovementInfo.gen.d.ts +1 -0
- package/dist-cjs/components/generated/AvatarMovementInfo.gen.js +28 -0
- package/dist-cjs/components/generated/CameraLayer.gen.d.ts +1 -0
- package/dist-cjs/components/generated/CameraLayer.gen.js +28 -0
- package/dist-cjs/components/generated/CameraLayers.gen.d.ts +1 -0
- package/dist-cjs/components/generated/CameraLayers.gen.js +28 -0
- package/dist-cjs/components/generated/GlobalLight.gen.d.ts +1 -0
- package/dist-cjs/components/generated/GlobalLight.gen.js +28 -0
- package/dist-cjs/components/generated/GltfNode.gen.d.ts +1 -0
- package/dist-cjs/components/generated/GltfNode.gen.js +28 -0
- package/dist-cjs/components/generated/GltfNodeState.gen.d.ts +1 -0
- package/dist-cjs/components/generated/GltfNodeState.gen.js +28 -0
- package/dist-cjs/components/generated/TextureCamera.gen.d.ts +1 -0
- package/dist-cjs/components/generated/TextureCamera.gen.js +28 -0
- package/dist-cjs/components/generated/UiCanvas.gen.d.ts +1 -0
- package/dist-cjs/components/generated/UiCanvas.gen.js +28 -0
- package/dist-cjs/components/generated/UiScrollResult.gen.d.ts +1 -0
- package/dist-cjs/components/generated/UiScrollResult.gen.js +28 -0
- package/dist-cjs/components/generated/component-names.gen.js +10 -0
- package/dist-cjs/components/generated/global.gen.d.ts +20 -4
- package/dist-cjs/components/generated/global.gen.js +12 -4
- package/dist-cjs/components/generated/index.gen.d.ts +40 -0
- package/dist-cjs/components/generated/index.gen.js +62 -2
- package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.d.ts +20 -0
- package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.js +66 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_base.gen.d.ts +2 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_base.gen.js +17 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +2 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +10 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +2 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +10 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.d.ts +57 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.js +210 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.d.ts +65 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.js +234 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +2 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +10 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +30 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +110 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +14 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +56 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +2 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +10 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +4 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +3 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +34 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.js +67 -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 +46 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +50 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +47 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +27 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +65 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +22 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.js +58 -2
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +20 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +57 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +21 -3
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +57 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +8 -2
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +3 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +13 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.js +31 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/text_shape.gen.d.ts +2 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/text_shape.gen.js +10 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +74 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +197 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +19 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +66 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_dropdown.gen.d.ts +2 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_dropdown.gen.js +10 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input.gen.d.ts +6 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input.gen.js +30 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +15 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +48 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +2 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +10 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +35 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +91 -1
- package/dist-cjs/components/index.d.ts +4 -0
- package/dist-cjs/components/index.js +9 -1
- package/dist-cjs/components/types.d.ts +2 -0
- package/dist-cjs/engine/input.js +8 -8
- package/dist-cjs/engine/lww-element-set-component-definition.js +14 -20
- package/dist-cjs/engine/readonly.d.ts +1 -1
- package/dist-cjs/engine/readonly.js +0 -10
- package/dist-cjs/index.d.ts +3 -1
- package/dist-cjs/index.js +4 -1
- package/dist-cjs/schemas/OneOf.js +1 -13
- package/dist-cjs/systems/cyclicParentingChecker.js +4 -9
- package/dist-cjs/systems/events.d.ts +48 -0
- package/dist-cjs/systems/events.js +70 -48
- package/dist-cjs/systems/raycast.d.ts +5 -1
- package/dist-cjs/systems/raycast.js +5 -1
- package/package.json +2 -2
package/dist/components/index.js
CHANGED
|
@@ -2,6 +2,8 @@ import { defineAnimatorComponent } from './extended/Animator';
|
|
|
2
2
|
import { defineAudioSourceComponent } from './extended/AudioSource';
|
|
3
3
|
import { defineAudioAnalysisComponent } from './extended/AudioAnalysis';
|
|
4
4
|
import { defineMaterialComponent } from './extended/Material';
|
|
5
|
+
import { defineAvatarEquippedDataComponent } from './extended/AvatarEquippedData';
|
|
6
|
+
import { defineAvatarShapeComponent } from './extended/AvatarShape';
|
|
5
7
|
import { defineMeshColliderComponent } from './extended/MeshCollider';
|
|
6
8
|
import { defineMeshRendererComponent } from './extended/MeshRenderer';
|
|
7
9
|
import { defineTweenComponent } from './extended/Tween';
|
|
@@ -37,6 +39,10 @@ export const MeshRenderer = (engine) => defineMeshRendererComponent(engine);
|
|
|
37
39
|
/* @__PURE__ */
|
|
38
40
|
export const MeshCollider = (engine) => defineMeshColliderComponent(engine);
|
|
39
41
|
/* @__PURE__ */
|
|
42
|
+
export const AvatarShape = (engine) => defineAvatarShapeComponent(engine);
|
|
43
|
+
/* @__PURE__ */
|
|
44
|
+
export const AvatarEquippedData = (engine) => defineAvatarEquippedDataComponent(engine);
|
|
45
|
+
/* @__PURE__ */
|
|
40
46
|
export const Tween = (engine) => defineTweenComponent(engine);
|
|
41
47
|
/* @__PURE__ */
|
|
42
48
|
export const VirtualCamera = (engine) => defineVirtualCameraComponent(engine);
|
|
@@ -4,6 +4,8 @@ export type { AudioAnalysisComponentDefinitionExtended, AudioAnalysisView } from
|
|
|
4
4
|
export type { AudioStreamComponentDefinitionExtended } from './extended/AudioStream';
|
|
5
5
|
export type { MeshRendererComponentDefinitionExtended } from './extended/MeshRenderer';
|
|
6
6
|
export type { MeshColliderComponentDefinitionExtended } from './extended/MeshCollider';
|
|
7
|
+
export type { AvatarShapeComponentDefinitionExtended, AvatarShapeType } from './extended/AvatarShape';
|
|
8
|
+
export type { AvatarEquippedDataComponentDefinitionExtended, AvatarEquippedDataType } from './extended/AvatarEquippedData';
|
|
7
9
|
export type { TextureHelper, MaterialComponentDefinitionExtended, FlatTexture, ReadonlyFlatMaterial, ReadonlyFlatTexture, FlatMaterial } from './extended/Material';
|
|
8
10
|
export type { TweenHelper, TweenComponentDefinitionExtended, SetMoveRotateScaleParams, MoveRotateScaleModeParams } from './extended/Tween';
|
|
9
11
|
export type { CameraTransitionHelper, VirtualCameraComponentDefinitionExtended } from './extended/VirtualCamera';
|
package/dist/engine/input.js
CHANGED
|
@@ -57,22 +57,22 @@ export function createInputSystem(engine) {
|
|
|
57
57
|
const arrayCommands = Array.from(commands);
|
|
58
58
|
for (let i = arrayCommands.length - 1; i >= 0; i--) {
|
|
59
59
|
const command = arrayCommands[i];
|
|
60
|
-
// Commands are kept sorted by timestamp, so this one and every one
|
|
61
|
-
// below it belongs to a frame that was already accounted for. Stopping
|
|
62
|
-
// on the button state instead would end this entity's whole loop over
|
|
63
|
-
// a button another entity had already reported this frame.
|
|
64
|
-
if (command.timestamp <= globalState.previousFrameMaxTimestamp) {
|
|
65
|
-
break;
|
|
66
|
-
}
|
|
67
60
|
if (command.timestamp > maxTimestamp) {
|
|
68
61
|
maxTimestamp = command.timestamp;
|
|
69
62
|
}
|
|
70
|
-
globalState.
|
|
63
|
+
if (command.timestamp > globalState.previousFrameMaxTimestamp) {
|
|
64
|
+
globalState.thisFrameCommands.push(command);
|
|
65
|
+
}
|
|
71
66
|
if (command.state === 0 /* PointerEventType.PET_UP */ || command.state === 1 /* PointerEventType.PET_DOWN */) {
|
|
72
67
|
const prevCommand = globalState.buttonState.get(command.button);
|
|
73
68
|
if (!prevCommand || command.timestamp > prevCommand.timestamp) {
|
|
74
69
|
globalState.buttonState.set(command.button, command);
|
|
75
70
|
}
|
|
71
|
+
else {
|
|
72
|
+
// since we are iterating a descending array, we can early finish the
|
|
73
|
+
// loop
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
}
|
|
@@ -201,16 +201,12 @@ export function createComponentDefinitionFromSchema(componentName, componentId,
|
|
|
201
201
|
return data.has(entity);
|
|
202
202
|
},
|
|
203
203
|
deleteFrom(entity, markAsDirty = true) {
|
|
204
|
-
// Presence, not truthiness: a component defined from a primitive schema can
|
|
205
|
-
// legitimately hold 0, false or an empty string, and deleting one must still
|
|
206
|
-
// return the value that was there.
|
|
207
|
-
const had = data.has(entity);
|
|
208
204
|
const component = data.get(entity);
|
|
209
205
|
if (data.delete(entity) && markAsDirty) {
|
|
210
206
|
dirtyIterator.add(entity);
|
|
211
207
|
}
|
|
212
208
|
lastSentData.delete(entity);
|
|
213
|
-
return
|
|
209
|
+
return component || null;
|
|
214
210
|
},
|
|
215
211
|
entityDeleted(entity, markAsDirty) {
|
|
216
212
|
if (data.delete(entity) && markAsDirty) {
|
|
@@ -219,20 +215,19 @@ export function createComponentDefinitionFromSchema(componentName, componentId,
|
|
|
219
215
|
lastSentData.delete(entity);
|
|
220
216
|
},
|
|
221
217
|
getOrNull(entity) {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
if (!data.has(entity))
|
|
225
|
-
return null;
|
|
226
|
-
return deepReadonly(data.get(entity));
|
|
218
|
+
const component = data.get(entity);
|
|
219
|
+
return component ? deepReadonly(component) : null;
|
|
227
220
|
},
|
|
228
221
|
get(entity) {
|
|
229
|
-
|
|
222
|
+
const component = data.get(entity);
|
|
223
|
+
if (!component) {
|
|
230
224
|
throw new Error(`[getFrom] Component ${componentName} for entity #${entity} not found`);
|
|
231
225
|
}
|
|
232
|
-
return deepReadonly(
|
|
226
|
+
return deepReadonly(component);
|
|
233
227
|
},
|
|
234
228
|
create(entity, value) {
|
|
235
|
-
|
|
229
|
+
const component = data.get(entity);
|
|
230
|
+
if (component) {
|
|
236
231
|
throw new Error(`[create] Component ${componentName} for ${entity} already exists`);
|
|
237
232
|
}
|
|
238
233
|
const usedValue = value === undefined ? schema.create() : schema.extend ? schema.extend(value) : value;
|
|
@@ -248,22 +243,21 @@ export function createComponentDefinitionFromSchema(componentName, componentId,
|
|
|
248
243
|
return usedValue;
|
|
249
244
|
},
|
|
250
245
|
getMutableOrNull(entity) {
|
|
251
|
-
|
|
252
|
-
if (!
|
|
246
|
+
const component = data.get(entity);
|
|
247
|
+
if (!component) {
|
|
253
248
|
return null;
|
|
254
249
|
}
|
|
255
250
|
dirtyIterator.add(entity);
|
|
256
|
-
return
|
|
251
|
+
return component;
|
|
257
252
|
},
|
|
258
253
|
getOrCreateMutable(entity, value) {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
if (!data.has(entity)) {
|
|
254
|
+
const component = data.get(entity);
|
|
255
|
+
if (!component) {
|
|
262
256
|
return this.create(entity, value);
|
|
263
257
|
}
|
|
264
258
|
else {
|
|
265
259
|
dirtyIterator.add(entity);
|
|
266
|
-
return
|
|
260
|
+
return component;
|
|
267
261
|
}
|
|
268
262
|
},
|
|
269
263
|
getMutable(entity) {
|
package/dist/engine/readonly.js
CHANGED
|
@@ -2,15 +2,5 @@
|
|
|
2
2
|
* @internal
|
|
3
3
|
*/
|
|
4
4
|
export function deepReadonly(val) {
|
|
5
|
-
// A component can be defined straight from a primitive or array schema, not
|
|
6
|
-
// only from a Map, which is why this is no longer constrained to an object.
|
|
7
|
-
// Spreading those threw the value away: a number came back as {}, an array
|
|
8
|
-
// as an object keyed by index.
|
|
9
|
-
if (val === null || typeof val !== 'object') {
|
|
10
|
-
return val;
|
|
11
|
-
}
|
|
12
|
-
if (Array.isArray(val)) {
|
|
13
|
-
return Object.freeze([...val]);
|
|
14
|
-
}
|
|
15
5
|
return Object.freeze({ ...val });
|
|
16
6
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export * from './systems/triggerArea';
|
|
|
16
16
|
export * from './systems/physics';
|
|
17
17
|
export * from './engine/entity';
|
|
18
18
|
export * from './components/types';
|
|
19
|
-
import { MaterialComponentDefinitionExtended, MeshColliderComponentDefinitionExtended, MeshRendererComponentDefinitionExtended, TransformComponentExtended, AnimatorComponentDefinitionExtended, AudioSourceComponentDefinitionExtended, AudioAnalysisComponentDefinitionExtended, AudioStreamComponentDefinitionExtended, ISyncComponents, TweenComponentDefinitionExtended, INetowrkEntity, INetowrkParent, VirtualCameraComponentDefinitionExtended, InputModifierComponentDefinitionExtended, LightSourceComponentDefinitionExtended, TriggerAreaComponentDefinitionExtended, ParticleSystemComponentDefinitionExtended, TouchScreenControlsComponentDefinitionExtended } from './components/types';
|
|
19
|
+
import { MaterialComponentDefinitionExtended, MeshColliderComponentDefinitionExtended, MeshRendererComponentDefinitionExtended, AvatarShapeComponentDefinitionExtended, AvatarEquippedDataComponentDefinitionExtended, TransformComponentExtended, AnimatorComponentDefinitionExtended, AudioSourceComponentDefinitionExtended, AudioAnalysisComponentDefinitionExtended, AudioStreamComponentDefinitionExtended, ISyncComponents, TweenComponentDefinitionExtended, INetowrkEntity, INetowrkParent, VirtualCameraComponentDefinitionExtended, InputModifierComponentDefinitionExtended, LightSourceComponentDefinitionExtended, TriggerAreaComponentDefinitionExtended, ParticleSystemComponentDefinitionExtended, TouchScreenControlsComponentDefinitionExtended } from './components/types';
|
|
20
20
|
import { NameComponent } from './components/manual/Name';
|
|
21
21
|
import { TagsComponentDefinitionExtended } from './components/manual/Tags';
|
|
22
22
|
export declare const Transform: TransformComponentExtended;
|
|
@@ -27,6 +27,8 @@ export declare const AudioStream: AudioStreamComponentDefinitionExtended;
|
|
|
27
27
|
export declare const Material: MaterialComponentDefinitionExtended;
|
|
28
28
|
export declare const MeshRenderer: MeshRendererComponentDefinitionExtended;
|
|
29
29
|
export declare const MeshCollider: MeshColliderComponentDefinitionExtended;
|
|
30
|
+
export declare const AvatarShape: AvatarShapeComponentDefinitionExtended;
|
|
31
|
+
export declare const AvatarEquippedData: AvatarEquippedDataComponentDefinitionExtended;
|
|
30
32
|
export declare const Name: NameComponent;
|
|
31
33
|
export declare const Tags: TagsComponentDefinitionExtended;
|
|
32
34
|
export declare const Tween: TweenComponentDefinitionExtended;
|
package/dist/index.js
CHANGED
|
@@ -31,6 +31,9 @@ export const AudioStream = /* @__PURE__*/ components.AudioStream(engine);
|
|
|
31
31
|
export const Material = /* @__PURE__*/ components.Material(engine);
|
|
32
32
|
export const MeshRenderer = /* @__PURE__*/ components.MeshRenderer(engine);
|
|
33
33
|
export const MeshCollider = /* @__PURE__*/ components.MeshCollider(engine);
|
|
34
|
+
export const AvatarShape = /* @__PURE__*/ components.AvatarShape(engine);
|
|
35
|
+
export const AvatarEquippedData =
|
|
36
|
+
/* @__PURE__*/ components.AvatarEquippedData(engine);
|
|
34
37
|
export const Name = components.Name(engine);
|
|
35
38
|
export const Tags = components.Tags(engine);
|
|
36
39
|
export const Tween = /* @__PURE__*/ components.Tween(engine);
|
package/dist/schemas/OneOf.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/** Reserved case index for a value whose case was never selected. */
|
|
2
|
-
const NO_CASE = 0;
|
|
3
1
|
export const IOneOf = (specs) => {
|
|
4
2
|
const specKeys = Object.keys(specs);
|
|
5
3
|
const keyToIndex = specKeys.reduce((dict, key, index) => {
|
|
@@ -12,22 +10,12 @@ export const IOneOf = (specs) => {
|
|
|
12
10
|
}, {});
|
|
13
11
|
return {
|
|
14
12
|
serialize({ $case, value }, builder) {
|
|
15
|
-
// `create()` selects no case, so a field the scene never set arrives here
|
|
16
|
-
// with an undefined `$case`. Index 0 is free, cases start at 1.
|
|
17
|
-
if ($case === undefined) {
|
|
18
|
-
builder.writeUint8(NO_CASE);
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
13
|
const _value = keyToIndex[$case.toString()] + 1;
|
|
22
14
|
builder.writeUint8(_value);
|
|
23
15
|
specs[$case].serialize(value, builder);
|
|
24
16
|
},
|
|
25
17
|
deserialize(reader) {
|
|
26
|
-
const
|
|
27
|
-
if (caseIndex === NO_CASE) {
|
|
28
|
-
return {};
|
|
29
|
-
}
|
|
30
|
-
const $case = specKeys[caseIndex - 1];
|
|
18
|
+
const $case = specKeys[reader.readInt8() - 1];
|
|
31
19
|
const value = specs[$case].deserialize(reader);
|
|
32
20
|
return { $case, value };
|
|
33
21
|
},
|
|
@@ -16,22 +16,17 @@ import * as components from '../components';
|
|
|
16
16
|
*/
|
|
17
17
|
export function cyclicParentingChecker(engine) {
|
|
18
18
|
const Transform = components.Transform(engine);
|
|
19
|
-
// Reused by every walk: the checker is synchronous, so only one is ever in
|
|
20
|
-
// flight. A cycle anywhere above the entity has to end the walk, not only one
|
|
21
|
-
// the entity is part of, otherwise the ancestors repeat forever.
|
|
22
|
-
const visited = new Set();
|
|
23
19
|
return () => {
|
|
24
20
|
for (const entity of Transform.dirtyIterator()) {
|
|
25
|
-
visited.clear();
|
|
26
|
-
visited.add(entity);
|
|
27
21
|
let transform = Transform.getOrNull(entity);
|
|
28
22
|
while (transform && transform.parent) {
|
|
29
|
-
if (
|
|
23
|
+
if (transform.parent === entity) {
|
|
30
24
|
console.error(`There is a cyclic parent with entity ${entity}`);
|
|
31
25
|
break;
|
|
32
26
|
}
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
else {
|
|
28
|
+
transform = Transform.getOrNull(transform.parent);
|
|
29
|
+
}
|
|
35
30
|
}
|
|
36
31
|
}
|
|
37
32
|
};
|
package/dist/systems/events.d.ts
CHANGED
|
@@ -50,6 +50,24 @@ export interface PointerEventsSystem {
|
|
|
50
50
|
* @param entity - Entity where the callback was attached
|
|
51
51
|
*/
|
|
52
52
|
removeOnPointerHoverLeave(entity: Entity): void;
|
|
53
|
+
/**
|
|
54
|
+
* @public
|
|
55
|
+
* Remove the callback for onPointerDrag event
|
|
56
|
+
* @param entity - Entity where the callback was attached
|
|
57
|
+
*/
|
|
58
|
+
removeOnPointerDrag(entity: Entity): void;
|
|
59
|
+
/**
|
|
60
|
+
* @public
|
|
61
|
+
* Remove the callback for onPointerDragLocked event
|
|
62
|
+
* @param entity - Entity where the callback was attached
|
|
63
|
+
*/
|
|
64
|
+
removeOnPointerDragLocked(entity: Entity): void;
|
|
65
|
+
/**
|
|
66
|
+
* @public
|
|
67
|
+
* Remove the callback for onPointerDragEnd event
|
|
68
|
+
* @param entity - Entity where the callback was attached
|
|
69
|
+
*/
|
|
70
|
+
removeOnPointerDragEnd(entity: Entity): void;
|
|
53
71
|
/**
|
|
54
72
|
* @public
|
|
55
73
|
* Remove the callback for onProximityDown event
|
|
@@ -128,6 +146,36 @@ export interface PointerEventsSystem {
|
|
|
128
146
|
entity: Entity;
|
|
129
147
|
opts?: Partial<EventSystemOptions>;
|
|
130
148
|
}, cb: EventSystemCallback): void;
|
|
149
|
+
/**
|
|
150
|
+
* @public
|
|
151
|
+
* Execute callback while the user holds the button pressed and moves the pointer, having pressed it on the entity
|
|
152
|
+
* @param pointerData - Entity to attach the callback - Opts to trigger Feedback and Button
|
|
153
|
+
* @param cb - Function to execute on every drag update
|
|
154
|
+
*/
|
|
155
|
+
onPointerDrag(pointerData: {
|
|
156
|
+
entity: Entity;
|
|
157
|
+
opts?: Partial<EventSystemOptions>;
|
|
158
|
+
}, cb: EventSystemCallback): void;
|
|
159
|
+
/**
|
|
160
|
+
* @public
|
|
161
|
+
* Same as onPointerDrag, but the cursor is locked in place for the duration of the drag
|
|
162
|
+
* @param pointerData - Entity to attach the callback - Opts to trigger Feedback and Button
|
|
163
|
+
* @param cb - Function to execute on every drag update
|
|
164
|
+
*/
|
|
165
|
+
onPointerDragLocked(pointerData: {
|
|
166
|
+
entity: Entity;
|
|
167
|
+
opts?: Partial<EventSystemOptions>;
|
|
168
|
+
}, cb: EventSystemCallback): void;
|
|
169
|
+
/**
|
|
170
|
+
* @public
|
|
171
|
+
* Execute callback when the user releases the button after a drag that started on the entity
|
|
172
|
+
* @param pointerData - Entity to attach the callback - Opts to trigger Feedback and Button
|
|
173
|
+
* @param cb - Function to execute when the drag ends
|
|
174
|
+
*/
|
|
175
|
+
onPointerDragEnd(pointerData: {
|
|
176
|
+
entity: Entity;
|
|
177
|
+
opts?: Partial<EventSystemOptions>;
|
|
178
|
+
}, cb: EventSystemCallback): void;
|
|
131
179
|
/**
|
|
132
180
|
* @public
|
|
133
181
|
* Execute callback when the user presses the proximity button on the entity
|
package/dist/systems/events.js
CHANGED
|
@@ -20,21 +20,14 @@ export function createPointerEventsSystem(engine, inputSystem) {
|
|
|
20
20
|
EventType[EventType["HoverLeave"] = 4] = "HoverLeave";
|
|
21
21
|
EventType[EventType["ProximityEnter"] = 5] = "ProximityEnter";
|
|
22
22
|
EventType[EventType["ProximityLeave"] = 6] = "ProximityLeave";
|
|
23
|
+
EventType[EventType["Drag"] = 7] = "Drag";
|
|
24
|
+
EventType[EventType["DragLocked"] = 8] = "DragLocked";
|
|
25
|
+
EventType[EventType["DragEnd"] = 9] = "DragEnd";
|
|
23
26
|
})(EventType || (EventType = {}));
|
|
24
27
|
const eventsMap = new Map();
|
|
25
28
|
function getEvent(entity) {
|
|
26
29
|
return eventsMap.get(entity) || eventsMap.set(entity, new Map()).get(entity);
|
|
27
30
|
}
|
|
28
|
-
// A cursor handler and a proximity handler are separate registrations that
|
|
29
|
-
// produce separate PointerEvents entries, so they need separate slots here
|
|
30
|
-
// too. Keying on the event type alone made onProximityDown evict whatever
|
|
31
|
-
// onPointerDown had left.
|
|
32
|
-
function eventKey(type, interactionType) {
|
|
33
|
-
return `${type}:${interactionType}`;
|
|
34
|
-
}
|
|
35
|
-
function setEvent(entity, type, cb, opts, interactionType = 0 /* InteractionType.CURSOR */) {
|
|
36
|
-
getEvent(entity).set(eventKey(type, interactionType), { cb, opts, eventType: type });
|
|
37
|
-
}
|
|
38
31
|
function setPointerEvent(entity, type, opts, interactionType = 0 /* InteractionType.CURSOR */) {
|
|
39
32
|
const pointerEvent = PointerEvents.getMutableOrNull(entity) || PointerEvents.create(entity);
|
|
40
33
|
pointerEvent.pointerEvents.push({
|
|
@@ -52,27 +45,13 @@ export function createPointerEventsSystem(engine, inputSystem) {
|
|
|
52
45
|
interactionType: interactionType ?? 0 /* InteractionType.CURSOR */
|
|
53
46
|
});
|
|
54
47
|
}
|
|
55
|
-
function removePointerEvent(entity, type,
|
|
48
|
+
function removePointerEvent(entity, type, button, interactionType = 0 /* InteractionType.CURSOR */) {
|
|
56
49
|
const pointerEvent = PointerEvents.getMutableOrNull(entity);
|
|
57
50
|
if (!pointerEvent)
|
|
58
51
|
return;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
// everything the entry was built from, or removing one handler can take the
|
|
63
|
-
// other's descriptor and leave the renderer advertising the wrong interaction.
|
|
64
|
-
const index = pointerEvent.pointerEvents.findIndex((pointer) => sameSlot(pointer) &&
|
|
65
|
-
pointer.eventInfo?.button === opts.button &&
|
|
66
|
-
pointer.eventInfo?.hoverText === opts.hoverText &&
|
|
67
|
-
pointer.eventInfo?.showFeedback === opts.showFeedback &&
|
|
68
|
-
pointer.eventInfo?.showHighlight === opts.showHighlight &&
|
|
69
|
-
pointer.eventInfo?.maxDistance === opts.maxDistance &&
|
|
70
|
-
pointer.eventInfo?.maxPlayerDistance === opts.maxPlayerDistance &&
|
|
71
|
-
pointer.eventInfo?.priority === opts.priority &&
|
|
72
|
-
pointer.eventInfo?.maxCameraDistance === opts.maxCameraDistance);
|
|
73
|
-
if (index === -1)
|
|
74
|
-
return;
|
|
75
|
-
pointerEvent.pointerEvents.splice(index, 1);
|
|
52
|
+
pointerEvent.pointerEvents = pointerEvent.pointerEvents.filter((pointer) => !(pointer.eventInfo?.button === button &&
|
|
53
|
+
pointer.eventType === type &&
|
|
54
|
+
pointer.interactionType === interactionType));
|
|
76
55
|
}
|
|
77
56
|
function getPointerEvent(eventType) {
|
|
78
57
|
if (eventType === EventType.Up) {
|
|
@@ -90,20 +69,24 @@ export function createPointerEventsSystem(engine, inputSystem) {
|
|
|
90
69
|
else if (eventType === EventType.ProximityLeave) {
|
|
91
70
|
return 5 /* PointerEventType.PET_PROXIMITY_LEAVE */;
|
|
92
71
|
}
|
|
72
|
+
else if (eventType === EventType.Drag) {
|
|
73
|
+
return 7 /* PointerEventType.PET_DRAG */;
|
|
74
|
+
}
|
|
75
|
+
else if (eventType === EventType.DragLocked) {
|
|
76
|
+
return 6 /* PointerEventType.PET_DRAG_LOCKED */;
|
|
77
|
+
}
|
|
78
|
+
else if (eventType === EventType.DragEnd) {
|
|
79
|
+
return 8 /* PointerEventType.PET_DRAG_END */;
|
|
80
|
+
}
|
|
93
81
|
return 1 /* PointerEventType.PET_DOWN */;
|
|
94
82
|
}
|
|
95
83
|
function removeEvent(entity, type, interactionType = 0 /* InteractionType.CURSOR */) {
|
|
96
84
|
const event = getEvent(entity);
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
// so every removal has to take one away. Gating on hoverText left the
|
|
101
|
-
// renderer showing an interaction whose callback was already gone, and made
|
|
102
|
-
// re-registering grow the component by one entry each time.
|
|
103
|
-
if (pointerEvent) {
|
|
104
|
-
removePointerEvent(entity, getPointerEvent(type), pointerEvent.opts, interactionType);
|
|
85
|
+
const pointerEvent = event.get(type);
|
|
86
|
+
if (pointerEvent?.opts.hoverText) {
|
|
87
|
+
removePointerEvent(entity, getPointerEvent(type), pointerEvent.opts.button);
|
|
105
88
|
}
|
|
106
|
-
event.delete(
|
|
89
|
+
event.delete(type);
|
|
107
90
|
}
|
|
108
91
|
engine.addSystem(function PointerEventSystem() {
|
|
109
92
|
for (const [entity, event] of eventsMap) {
|
|
@@ -111,7 +94,7 @@ export function createPointerEventsSystem(engine, inputSystem) {
|
|
|
111
94
|
eventsMap.delete(entity);
|
|
112
95
|
continue;
|
|
113
96
|
}
|
|
114
|
-
for (const [, { cb, opts
|
|
97
|
+
for (const [eventType, { cb, opts }] of event) {
|
|
115
98
|
if (eventType === EventType.Click) {
|
|
116
99
|
const command = inputSystem.getClick(opts.button, entity);
|
|
117
100
|
if (command)
|
|
@@ -122,7 +105,10 @@ export function createPointerEventsSystem(engine, inputSystem) {
|
|
|
122
105
|
eventType === EventType.HoverEnter ||
|
|
123
106
|
eventType === EventType.HoverLeave ||
|
|
124
107
|
eventType === EventType.ProximityEnter ||
|
|
125
|
-
eventType === EventType.ProximityLeave
|
|
108
|
+
eventType === EventType.ProximityLeave ||
|
|
109
|
+
eventType === EventType.Drag ||
|
|
110
|
+
eventType === EventType.DragLocked ||
|
|
111
|
+
eventType === EventType.DragEnd) {
|
|
126
112
|
const command = inputSystem.getInputCommand(opts.button, getPointerEvent(eventType), entity);
|
|
127
113
|
if (command) {
|
|
128
114
|
checkNotThenable(cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
|
|
@@ -139,7 +125,7 @@ export function createPointerEventsSystem(engine, inputSystem) {
|
|
|
139
125
|
const { entity, opts } = data;
|
|
140
126
|
const options = getDefaultOpts(opts);
|
|
141
127
|
removeEvent(entity, EventType.Down);
|
|
142
|
-
|
|
128
|
+
getEvent(entity).set(EventType.Down, { cb, opts: options });
|
|
143
129
|
setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options);
|
|
144
130
|
};
|
|
145
131
|
const onPointerUp = (...args) => {
|
|
@@ -150,7 +136,7 @@ export function createPointerEventsSystem(engine, inputSystem) {
|
|
|
150
136
|
const { entity, opts } = data;
|
|
151
137
|
const options = getDefaultOpts(opts);
|
|
152
138
|
removeEvent(entity, EventType.Up);
|
|
153
|
-
|
|
139
|
+
getEvent(entity).set(EventType.Up, { cb, opts: options });
|
|
154
140
|
setPointerEvent(entity, 0 /* PointerEventType.PET_UP */, options);
|
|
155
141
|
};
|
|
156
142
|
const onPointerHoverEnter = (...args) => {
|
|
@@ -158,7 +144,7 @@ export function createPointerEventsSystem(engine, inputSystem) {
|
|
|
158
144
|
const { entity, opts } = data;
|
|
159
145
|
const options = getDefaultOpts(opts);
|
|
160
146
|
removeEvent(entity, EventType.HoverEnter);
|
|
161
|
-
|
|
147
|
+
getEvent(entity).set(EventType.HoverEnter, { cb, opts: options });
|
|
162
148
|
setPointerEvent(entity, 2 /* PointerEventType.PET_HOVER_ENTER */, options);
|
|
163
149
|
};
|
|
164
150
|
const onPointerHoverLeave = (...args) => {
|
|
@@ -166,15 +152,39 @@ export function createPointerEventsSystem(engine, inputSystem) {
|
|
|
166
152
|
const { entity, opts } = data;
|
|
167
153
|
const options = getDefaultOpts(opts);
|
|
168
154
|
removeEvent(entity, EventType.HoverLeave);
|
|
169
|
-
|
|
155
|
+
getEvent(entity).set(EventType.HoverLeave, { cb, opts: options });
|
|
170
156
|
setPointerEvent(entity, 3 /* PointerEventType.PET_HOVER_LEAVE */, options);
|
|
171
157
|
};
|
|
158
|
+
const onPointerDrag = (...args) => {
|
|
159
|
+
const [data, cb] = args;
|
|
160
|
+
const { entity, opts } = data;
|
|
161
|
+
const options = getDefaultOpts(opts);
|
|
162
|
+
removeEvent(entity, EventType.Drag);
|
|
163
|
+
getEvent(entity).set(EventType.Drag, { cb, opts: options });
|
|
164
|
+
setPointerEvent(entity, 7 /* PointerEventType.PET_DRAG */, options);
|
|
165
|
+
};
|
|
166
|
+
const onPointerDragLocked = (...args) => {
|
|
167
|
+
const [data, cb] = args;
|
|
168
|
+
const { entity, opts } = data;
|
|
169
|
+
const options = getDefaultOpts(opts);
|
|
170
|
+
removeEvent(entity, EventType.DragLocked);
|
|
171
|
+
getEvent(entity).set(EventType.DragLocked, { cb, opts: options });
|
|
172
|
+
setPointerEvent(entity, 6 /* PointerEventType.PET_DRAG_LOCKED */, options);
|
|
173
|
+
};
|
|
174
|
+
const onPointerDragEnd = (...args) => {
|
|
175
|
+
const [data, cb] = args;
|
|
176
|
+
const { entity, opts } = data;
|
|
177
|
+
const options = getDefaultOpts(opts);
|
|
178
|
+
removeEvent(entity, EventType.DragEnd);
|
|
179
|
+
getEvent(entity).set(EventType.DragEnd, { cb, opts: options });
|
|
180
|
+
setPointerEvent(entity, 8 /* PointerEventType.PET_DRAG_END */, options);
|
|
181
|
+
};
|
|
172
182
|
const onProximityDown = (...args) => {
|
|
173
183
|
const [data, cb] = args;
|
|
174
184
|
const { entity, opts } = data;
|
|
175
185
|
const options = getDefaultOpts(opts);
|
|
176
186
|
removeEvent(entity, EventType.Down, 1 /* InteractionType.PROXIMITY */);
|
|
177
|
-
|
|
187
|
+
getEvent(entity).set(EventType.Down, { cb, opts: options });
|
|
178
188
|
setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options, 1 /* InteractionType.PROXIMITY */);
|
|
179
189
|
};
|
|
180
190
|
const onProximityUp = (...args) => {
|
|
@@ -182,7 +192,7 @@ export function createPointerEventsSystem(engine, inputSystem) {
|
|
|
182
192
|
const { entity, opts } = data;
|
|
183
193
|
const options = getDefaultOpts(opts);
|
|
184
194
|
removeEvent(entity, EventType.Up, 1 /* InteractionType.PROXIMITY */);
|
|
185
|
-
|
|
195
|
+
getEvent(entity).set(EventType.Up, { cb, opts: options });
|
|
186
196
|
setPointerEvent(entity, 0 /* PointerEventType.PET_UP */, options, 1 /* InteractionType.PROXIMITY */);
|
|
187
197
|
};
|
|
188
198
|
const onProximityEnter = (...args) => {
|
|
@@ -190,7 +200,7 @@ export function createPointerEventsSystem(engine, inputSystem) {
|
|
|
190
200
|
const { entity, opts } = data;
|
|
191
201
|
const options = getDefaultOpts(opts);
|
|
192
202
|
removeEvent(entity, EventType.ProximityEnter, 1 /* InteractionType.PROXIMITY */);
|
|
193
|
-
|
|
203
|
+
getEvent(entity).set(EventType.ProximityEnter, { cb, opts: options });
|
|
194
204
|
setPointerEvent(entity, 4 /* PointerEventType.PET_PROXIMITY_ENTER */, options, 1 /* InteractionType.PROXIMITY */);
|
|
195
205
|
};
|
|
196
206
|
const onProximityLeave = (...args) => {
|
|
@@ -198,7 +208,7 @@ export function createPointerEventsSystem(engine, inputSystem) {
|
|
|
198
208
|
const { entity, opts } = data;
|
|
199
209
|
const options = getDefaultOpts(opts);
|
|
200
210
|
removeEvent(entity, EventType.ProximityLeave, 1 /* InteractionType.PROXIMITY */);
|
|
201
|
-
|
|
211
|
+
getEvent(entity).set(EventType.ProximityLeave, { cb, opts: options });
|
|
202
212
|
setPointerEvent(entity, 5 /* PointerEventType.PET_PROXIMITY_LEAVE */, options, 1 /* InteractionType.PROXIMITY */);
|
|
203
213
|
};
|
|
204
214
|
return {
|
|
@@ -217,6 +227,15 @@ export function createPointerEventsSystem(engine, inputSystem) {
|
|
|
217
227
|
removeOnPointerHoverLeave(entity) {
|
|
218
228
|
removeEvent(entity, EventType.HoverLeave);
|
|
219
229
|
},
|
|
230
|
+
removeOnPointerDrag(entity) {
|
|
231
|
+
removeEvent(entity, EventType.Drag);
|
|
232
|
+
},
|
|
233
|
+
removeOnPointerDragLocked(entity) {
|
|
234
|
+
removeEvent(entity, EventType.DragLocked);
|
|
235
|
+
},
|
|
236
|
+
removeOnPointerDragEnd(entity) {
|
|
237
|
+
removeEvent(entity, EventType.DragEnd);
|
|
238
|
+
},
|
|
220
239
|
removeOnProximityDown(entity) {
|
|
221
240
|
removeEvent(entity, EventType.Down, 1 /* InteractionType.PROXIMITY */);
|
|
222
241
|
},
|
|
@@ -235,13 +254,16 @@ export function createPointerEventsSystem(engine, inputSystem) {
|
|
|
235
254
|
// Clear previous event with over feedback included
|
|
236
255
|
removeEvent(entity, EventType.Click);
|
|
237
256
|
// Set new event
|
|
238
|
-
|
|
257
|
+
getEvent(entity).set(EventType.Click, { cb, opts: options });
|
|
239
258
|
setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options);
|
|
240
259
|
},
|
|
241
260
|
onPointerDown,
|
|
242
261
|
onPointerUp,
|
|
243
262
|
onPointerHoverEnter,
|
|
244
263
|
onPointerHoverLeave,
|
|
264
|
+
onPointerDrag,
|
|
265
|
+
onPointerDragLocked,
|
|
266
|
+
onPointerDragEnd,
|
|
245
267
|
onProximityDown,
|
|
246
268
|
onProximityUp,
|
|
247
269
|
onProximityEnter,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RaycastQueryType, PBRaycastResult } from '../components';
|
|
1
|
+
import { RaycastQueryType, RaycastShape, PBRaycastResult } from '../components';
|
|
2
2
|
import { DeepReadonlyObject, Entity } from '../engine';
|
|
3
3
|
import { Vector3 } from '../components/generated/pb/decentraland/common/vectors.gen';
|
|
4
4
|
/**
|
|
@@ -14,6 +14,10 @@ export type RaycastSystemOptions = {
|
|
|
14
14
|
queryType: RaycastQueryType;
|
|
15
15
|
continuous?: boolean | undefined;
|
|
16
16
|
collisionMask?: number | undefined;
|
|
17
|
+
/** shape to sweep along the ray, default RS_RAY (a point) */
|
|
18
|
+
shape?: RaycastShape | undefined;
|
|
19
|
+
/** include colliders from other scenes, default false */
|
|
20
|
+
includeWorld?: boolean | undefined;
|
|
17
21
|
};
|
|
18
22
|
export type LocalDirectionRaycastSystemOptions = {
|
|
19
23
|
direction?: Vector3;
|
package/dist/systems/raycast.js
CHANGED
|
@@ -12,7 +12,9 @@ export function createRaycastSystem(engine) {
|
|
|
12
12
|
queryType: 0 /* RaycastQueryType.RQT_HIT_FIRST */,
|
|
13
13
|
continuous: false,
|
|
14
14
|
originOffset: { x: 0, y: 0, z: 0 },
|
|
15
|
-
collisionMask: 2 /* ColliderLayer.CL_PHYSICS
|
|
15
|
+
collisionMask: 2 /* ColliderLayer.CL_PHYSICS */,
|
|
16
|
+
shape: 0 /* RaycastShape.RS_RAY */,
|
|
17
|
+
includeWorld: false
|
|
16
18
|
};
|
|
17
19
|
const getLocalDirectionRaycastDefaultOptions = (options = {}) => ({
|
|
18
20
|
...defaultOptions,
|
|
@@ -58,6 +60,8 @@ export function createRaycastSystem(engine) {
|
|
|
58
60
|
raycast.direction = raycastValue.directionRawValue;
|
|
59
61
|
raycast.continuous = raycastValue.continuous;
|
|
60
62
|
raycast.queryType = raycastValue.queryType;
|
|
63
|
+
raycast.shape = raycastValue.shape;
|
|
64
|
+
raycast.includeWorld = raycastValue.includeWorld;
|
|
61
65
|
entitiesCallbackResultMap.set(entity, { callback: callback });
|
|
62
66
|
};
|
|
63
67
|
nextTickRaycasts.push(onNextTick);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { IEngine, LastWriteWinElementSetComponentDefinition } from '../../engine';
|
|
2
|
+
import { PBAvatarEquippedData } from '../generated/pb/decentraland/sdk/components/avatar_equipped_data.gen';
|
|
3
|
+
/**
|
|
4
|
+
* @public
|
|
5
|
+
* AvatarEquippedData with `forceRender` optional: the wire type is a repeated field (always present, so the
|
|
6
|
+
* generated type requires it), but a scene rarely needs it and shouldn't have to pass `[]`.
|
|
7
|
+
*/
|
|
8
|
+
export type AvatarEquippedDataType = Omit<PBAvatarEquippedData, 'forceRender'> & {
|
|
9
|
+
forceRender?: string[] | undefined;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
export type AvatarEquippedDataComponentDefinitionExtended = LastWriteWinElementSetComponentDefinition<AvatarEquippedDataType>;
|
|
15
|
+
export declare function defineAvatarEquippedDataComponent(engine: Pick<IEngine, 'defineComponentFromSchema'>): AvatarEquippedDataComponentDefinitionExtended;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineAvatarEquippedDataComponent = void 0;
|
|
4
|
+
const AvatarEquippedData_gen_1 = require("../generated/AvatarEquippedData.gen");
|
|
5
|
+
function defineAvatarEquippedDataComponent(engine) {
|
|
6
|
+
const patchedSchema = { ...AvatarEquippedData_gen_1.AvatarEquippedDataSchema };
|
|
7
|
+
const origSerialize = patchedSchema.serialize;
|
|
8
|
+
patchedSchema.serialize = (value, builder) => {
|
|
9
|
+
origSerialize(value.forceRender === undefined ? { ...value, forceRender: [] } : value, builder);
|
|
10
|
+
};
|
|
11
|
+
const theComponent = engine.defineComponentFromSchema('core::AvatarEquippedData', patchedSchema);
|
|
12
|
+
return theComponent;
|
|
13
|
+
}
|
|
14
|
+
exports.defineAvatarEquippedDataComponent = defineAvatarEquippedDataComponent;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { IEngine, LastWriteWinElementSetComponentDefinition } from '../../engine';
|
|
2
|
+
import { PBAvatarShape } from '../generated/pb/decentraland/sdk/components/avatar_shape.gen';
|
|
3
|
+
/**
|
|
4
|
+
* @public
|
|
5
|
+
* AvatarShape with `forceRender` optional: the wire type is a repeated field (always present, so the
|
|
6
|
+
* generated type requires it), but a scene rarely needs it and shouldn't have to pass `[]`.
|
|
7
|
+
*/
|
|
8
|
+
export type AvatarShapeType = Omit<PBAvatarShape, 'forceRender'> & {
|
|
9
|
+
forceRender?: string[] | undefined;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
export type AvatarShapeComponentDefinitionExtended = LastWriteWinElementSetComponentDefinition<AvatarShapeType>;
|
|
15
|
+
export declare function defineAvatarShapeComponent(engine: Pick<IEngine, 'defineComponentFromSchema'>): AvatarShapeComponentDefinitionExtended;
|