@dcl/ecs 7.22.6-25007982108.commit-83012ab → 7.22.6-25375246959.commit-ec25d50
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/MeshCollider.d.ts +0 -8
- package/dist/components/extended/MeshCollider.js +0 -6
- package/dist/components/extended/MeshRenderer.d.ts +0 -8
- package/dist/components/extended/MeshRenderer.js +0 -5
- package/dist/components/extended/ParticleSystem.d.ts +24 -0
- package/dist/components/extended/ParticleSystem.js +23 -0
- package/dist/components/extended/Tween.d.ts +48 -1
- package/dist/components/extended/Tween.js +66 -0
- package/dist/components/generated/{TextureCamera.gen.js → AudioAnalysis.gen.js} +7 -7
- package/dist/components/generated/component-names.gen.js +1 -10
- package/dist/components/generated/global.gen.d.ts +2 -20
- package/dist/components/generated/global.gen.js +1 -10
- package/dist/components/generated/index.gen.d.ts +4 -40
- package/dist/components/generated/index.gen.js +5 -50
- package/dist/components/generated/pb/decentraland/common/texture.gen.d.ts +0 -20
- package/dist/components/generated/pb/decentraland/common/texture.gen.js +0 -65
- package/dist/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.d.ts +37 -0
- package/dist/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.js +161 -0
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +0 -2
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +1 -10
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +0 -43
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +1 -151
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +0 -2
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +0 -10
- package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +1 -37
- package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +1 -119
- package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +2 -4
- package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +1 -3
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +0 -19
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +1 -46
- package/dist/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +0 -22
- package/dist/components/generated/pb/decentraland/sdk/components/material.gen.js +1 -57
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +0 -20
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +0 -56
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +3 -21
- package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +0 -56
- package/dist/components/generated/pb/decentraland/sdk/components/particle_system.gen.d.ts +14 -1
- package/dist/components/generated/pb/decentraland/sdk/components/particle_system.gen.js +42 -4
- package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +2 -8
- package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +0 -3
- package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +0 -13
- package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.js +0 -30
- package/dist/components/generated/pb/decentraland/sdk/components/ui_input.gen.d.ts +0 -2
- package/dist/components/generated/pb/decentraland/sdk/components/ui_input.gen.js +0 -10
- package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +0 -4
- package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +0 -20
- package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +0 -35
- package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +0 -90
- package/dist/components/generated/types.gen.d.ts +1 -0
- package/dist/components/generated/types.gen.js +1 -0
- package/dist/components/index.d.ts +9 -11
- package/dist/components/index.js +8 -11
- package/dist/components/manual/Transform.d.ts +13 -0
- package/dist/components/manual/Transform.js +8 -0
- package/dist/components/types.d.ts +2 -3
- package/dist/engine/entity.js +4 -2
- package/dist/engine/grow-only-value-set-component-definition.js +1 -1
- package/dist/engine/input.d.ts +0 -6
- package/dist/engine/input.js +4 -9
- package/dist/engine/lww-element-set-component-definition.d.ts +2 -2
- package/dist/engine/lww-element-set-component-definition.js +24 -7
- package/dist/index.d.ts +4 -2
- package/dist/index.js +4 -1
- package/dist/runtime/globals.d.ts +1 -2
- package/dist/runtime/globals.js +1 -2
- package/dist/runtime/helpers/index.d.ts +1 -0
- package/dist/runtime/helpers/index.js +1 -0
- package/dist/runtime/helpers/tree.d.ts +6 -0
- package/dist/runtime/helpers/tree.js +2 -2
- package/dist/runtime/helpers/vectors.js +36 -0
- package/dist/runtime/initialization/index.d.ts +7 -0
- package/dist/runtime/initialization/index.js +6 -0
- package/dist/systems/crdt/index.js +6 -6
- package/dist/systems/events.d.ts +25 -59
- package/dist/systems/events.js +129 -145
- package/dist/systems/physics-force.js +140 -0
- package/dist/systems/physics-impulse.d.ts +12 -0
- package/dist/systems/physics-impulse.js +85 -0
- package/dist/systems/physics.d.ts +77 -0
- package/dist/systems/physics.js +18 -0
- package/dist/systems/raycast.d.ts +1 -3
- package/dist/systems/raycast.js +0 -2
- package/dist-cjs/components/extended/MeshCollider.d.ts +0 -8
- package/dist-cjs/components/extended/MeshCollider.js +0 -6
- package/dist-cjs/components/extended/MeshRenderer.d.ts +0 -8
- package/dist-cjs/components/extended/MeshRenderer.js +0 -5
- package/dist-cjs/components/extended/ParticleSystem.d.ts +24 -0
- package/dist-cjs/components/extended/ParticleSystem.js +28 -0
- package/dist-cjs/components/extended/Tween.d.ts +48 -1
- package/dist-cjs/components/extended/Tween.js +66 -0
- package/dist-cjs/components/generated/{TextureCamera.gen.js → AudioAnalysis.gen.js} +8 -8
- package/dist-cjs/components/generated/component-names.gen.js +1 -10
- package/dist-cjs/components/generated/global.gen.d.ts +2 -20
- package/dist-cjs/components/generated/global.gen.js +3 -12
- package/dist-cjs/components/generated/index.gen.d.ts +4 -40
- package/dist-cjs/components/generated/index.gen.js +8 -62
- package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.d.ts +0 -20
- package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.js +1 -66
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.d.ts +37 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_analysis.gen.js +167 -0
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +0 -2
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +1 -10
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +0 -43
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +2 -152
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +0 -2
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +0 -10
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +1 -37
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +2 -120
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +2 -4
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +1 -3
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +0 -19
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +1 -46
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +0 -22
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.js +2 -58
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +0 -20
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +1 -57
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +3 -21
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +1 -57
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/particle_system.gen.d.ts +14 -1
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/particle_system.gen.js +43 -5
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +2 -8
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +0 -3
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +0 -13
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.js +1 -31
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input.gen.d.ts +0 -2
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input.gen.js +0 -10
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +0 -4
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +0 -20
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +0 -35
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +1 -91
- package/dist-cjs/components/generated/types.gen.d.ts +1 -0
- package/dist-cjs/components/generated/types.gen.js +3 -0
- package/dist-cjs/components/index.d.ts +9 -11
- package/dist-cjs/components/index.js +11 -15
- package/dist-cjs/components/manual/Transform.d.ts +13 -0
- package/dist-cjs/components/manual/Transform.js +31 -0
- package/dist-cjs/components/types.d.ts +2 -3
- package/dist-cjs/engine/entity.js +4 -2
- package/dist-cjs/engine/grow-only-value-set-component-definition.js +1 -1
- package/dist-cjs/engine/input.d.ts +0 -6
- package/dist-cjs/engine/input.js +4 -9
- package/dist-cjs/engine/lww-element-set-component-definition.d.ts +2 -2
- package/dist-cjs/engine/lww-element-set-component-definition.js +24 -7
- package/dist-cjs/index.d.ts +4 -2
- package/dist-cjs/index.js +5 -2
- package/dist-cjs/runtime/globals.d.ts +1 -2
- package/dist-cjs/runtime/globals.js +1 -2
- package/dist-cjs/runtime/helpers/index.d.ts +1 -0
- package/dist-cjs/runtime/helpers/index.js +1 -0
- package/dist-cjs/runtime/helpers/tree.d.ts +6 -0
- package/dist-cjs/runtime/helpers/tree.js +3 -2
- package/dist-cjs/runtime/helpers/vectors.js +39 -0
- package/dist-cjs/runtime/initialization/index.d.ts +7 -0
- package/dist-cjs/runtime/initialization/index.js +7 -1
- package/dist-cjs/systems/crdt/index.js +6 -6
- package/dist-cjs/systems/events.d.ts +25 -59
- package/dist-cjs/systems/events.js +129 -145
- package/dist-cjs/systems/physics-force.js +167 -0
- package/dist-cjs/systems/physics-impulse.d.ts +12 -0
- package/dist-cjs/systems/physics-impulse.js +112 -0
- package/dist-cjs/systems/physics.d.ts +77 -0
- package/dist-cjs/systems/physics.js +23 -0
- package/dist-cjs/systems/raycast.d.ts +1 -3
- package/dist-cjs/systems/raycast.js +0 -2
- package/package.json +3 -2
- package/dist/components/extended/AvatarEquippedData.d.ts +0 -10
- package/dist/components/extended/AvatarEquippedData.js +0 -15
- package/dist/components/extended/AvatarShape.d.ts +0 -10
- package/dist/components/extended/AvatarShape.js +0 -15
- package/dist/components/generated/AvatarMovement.gen.d.ts +0 -1
- package/dist/components/generated/AvatarMovement.gen.js +0 -25
- package/dist/components/generated/AvatarMovementInfo.gen.d.ts +0 -1
- package/dist/components/generated/AvatarMovementInfo.gen.js +0 -25
- package/dist/components/generated/CameraLayer.gen.d.ts +0 -1
- package/dist/components/generated/CameraLayer.gen.js +0 -25
- package/dist/components/generated/CameraLayers.gen.d.ts +0 -1
- package/dist/components/generated/CameraLayers.gen.js +0 -25
- package/dist/components/generated/GlobalLight.gen.d.ts +0 -1
- package/dist/components/generated/GlobalLight.gen.js +0 -25
- package/dist/components/generated/GltfNode.gen.d.ts +0 -1
- package/dist/components/generated/GltfNode.gen.js +0 -25
- package/dist/components/generated/GltfNodeState.gen.d.ts +0 -1
- package/dist/components/generated/GltfNodeState.gen.js +0 -25
- package/dist/components/generated/TextureCamera.gen.d.ts +0 -1
- package/dist/components/generated/UiCanvas.gen.d.ts +0 -1
- package/dist/components/generated/UiCanvas.gen.js +0 -25
- package/dist/components/generated/UiScrollResult.gen.d.ts +0 -1
- package/dist/components/generated/UiScrollResult.gen.js +0 -25
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.d.ts +0 -20
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.js +0 -69
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.d.ts +0 -32
- package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.js +0 -126
- package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +0 -30
- package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +0 -104
- package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +0 -14
- package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +0 -50
- package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +0 -34
- package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.js +0 -61
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +0 -50
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +0 -41
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +0 -27
- package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +0 -59
- package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +0 -74
- package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +0 -191
- package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +0 -19
- package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +0 -60
- package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +0 -15
- package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +0 -42
- package/dist-cjs/components/extended/AvatarEquippedData.d.ts +0 -10
- package/dist-cjs/components/extended/AvatarEquippedData.js +0 -19
- package/dist-cjs/components/extended/AvatarShape.d.ts +0 -10
- package/dist-cjs/components/extended/AvatarShape.js +0 -19
- package/dist-cjs/components/generated/AvatarMovement.gen.js +0 -28
- package/dist-cjs/components/generated/AvatarMovementInfo.gen.js +0 -28
- package/dist-cjs/components/generated/CameraLayer.gen.js +0 -28
- package/dist-cjs/components/generated/CameraLayers.gen.js +0 -28
- package/dist-cjs/components/generated/GlobalLight.gen.js +0 -28
- package/dist-cjs/components/generated/GltfNode.gen.js +0 -28
- package/dist-cjs/components/generated/GltfNodeState.gen.d.ts +0 -1
- package/dist-cjs/components/generated/GltfNodeState.gen.js +0 -28
- package/dist-cjs/components/generated/TextureCamera.gen.d.ts +0 -1
- package/dist-cjs/components/generated/UiCanvas.gen.d.ts +0 -1
- package/dist-cjs/components/generated/UiCanvas.gen.js +0 -28
- package/dist-cjs/components/generated/UiScrollResult.gen.d.ts +0 -1
- package/dist-cjs/components/generated/UiScrollResult.gen.js +0 -28
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.d.ts +0 -20
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.js +0 -75
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.d.ts +0 -32
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.js +0 -132
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +0 -30
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +0 -110
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +0 -14
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +0 -56
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +0 -34
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.js +0 -67
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +0 -50
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +0 -47
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +0 -27
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +0 -65
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +0 -74
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +0 -197
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +0 -19
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +0 -66
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +0 -15
- package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +0 -48
- /package/{dist-cjs/components/generated/CameraLayers.gen.d.ts → dist/components/generated/AudioAnalysis.gen.d.ts} +0 -0
- /package/{dist-cjs/components/generated/GlobalLight.gen.d.ts → dist/runtime/helpers/vectors.d.ts} +0 -0
- /package/{dist-cjs/components/generated/GltfNode.gen.d.ts → dist/systems/physics-force.d.ts} +0 -0
- /package/dist-cjs/components/generated/{AvatarMovement.gen.d.ts → AudioAnalysis.gen.d.ts} +0 -0
- /package/dist-cjs/{components/generated/AvatarMovementInfo.gen.d.ts → runtime/helpers/vectors.d.ts} +0 -0
- /package/dist-cjs/{components/generated/CameraLayer.gen.d.ts → systems/physics-force.d.ts} +0 -0
|
@@ -17,12 +17,7 @@ export type EventSystemOptions = {
|
|
|
17
17
|
showFeedback?: boolean;
|
|
18
18
|
showHighlight?: boolean;
|
|
19
19
|
maxPlayerDistance?: number;
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @public
|
|
23
|
-
*/
|
|
24
|
-
export type EventSystemOptionsCallback = EventSystemOptions & {
|
|
25
|
-
cb: EventSystemCallback;
|
|
20
|
+
priority?: number;
|
|
26
21
|
};
|
|
27
22
|
export declare const getDefaultOpts: (opts?: Partial<EventSystemOptions>) => EventSystemOptions;
|
|
28
23
|
/**
|
|
@@ -55,35 +50,33 @@ export interface PointerEventsSystem {
|
|
|
55
50
|
removeOnPointerHoverLeave(entity: Entity): void;
|
|
56
51
|
/**
|
|
57
52
|
* @public
|
|
58
|
-
* Remove the callback for
|
|
53
|
+
* Remove the callback for onProximityDown event
|
|
59
54
|
* @param entity - Entity where the callback was attached
|
|
60
55
|
*/
|
|
61
|
-
|
|
56
|
+
removeOnProximityDown(entity: Entity): void;
|
|
62
57
|
/**
|
|
63
58
|
* @public
|
|
64
|
-
* Remove the callback for
|
|
59
|
+
* Remove the callback for onProximityUp event
|
|
65
60
|
* @param entity - Entity where the callback was attached
|
|
66
61
|
*/
|
|
67
|
-
|
|
62
|
+
removeOnProximityUp(entity: Entity): void;
|
|
68
63
|
/**
|
|
69
64
|
* @public
|
|
70
|
-
* Remove the callback for
|
|
65
|
+
* Remove the callback for onProximityEnter event
|
|
71
66
|
* @param entity - Entity where the callback was attached
|
|
72
67
|
*/
|
|
73
|
-
|
|
68
|
+
removeOnProximityEnter(entity: Entity): void;
|
|
74
69
|
/**
|
|
75
70
|
* @public
|
|
76
|
-
*
|
|
77
|
-
* @param
|
|
71
|
+
* Remove the callback for onProximityLeave event
|
|
72
|
+
* @param entity - Entity where the callback was attached
|
|
78
73
|
*/
|
|
79
|
-
|
|
80
|
-
entity: Entity;
|
|
81
|
-
optsList: EventSystemOptionsCallback[];
|
|
82
|
-
}): void;
|
|
74
|
+
removeOnProximityLeave(entity: Entity): void;
|
|
83
75
|
/**
|
|
84
76
|
* @public
|
|
85
77
|
* Execute callback when the user press the InputButton pointing at the entity
|
|
86
78
|
* @param pointerData - Entity to attach the callback, Opts to trigger Feedback and Button
|
|
79
|
+
* @param cb - Function to execute when click fires
|
|
87
80
|
*/
|
|
88
81
|
onPointerDown(pointerData: {
|
|
89
82
|
entity: Entity;
|
|
@@ -96,15 +89,6 @@ export interface PointerEventsSystem {
|
|
|
96
89
|
* @param opts - Opts to trigger Feedback and Button
|
|
97
90
|
*/
|
|
98
91
|
onPointerDown(entity: Entity, cb: EventSystemCallback, opts?: Partial<EventSystemOptions>): void;
|
|
99
|
-
/**
|
|
100
|
-
* @public
|
|
101
|
-
* Execute callbacks when the user releases one of the InputButtons pointing at the entity
|
|
102
|
-
* @param pointerData - Entity to attach the callbacks, list of options to trigger Feedback, Button, and Callback
|
|
103
|
-
*/
|
|
104
|
-
onPointerUp(pointerData: {
|
|
105
|
-
entity: Entity;
|
|
106
|
-
optsList: EventSystemOptionsCallback[];
|
|
107
|
-
}): void;
|
|
108
92
|
/**
|
|
109
93
|
* @public
|
|
110
94
|
* Execute callback when the user releases the InputButton pointing at the entity
|
|
@@ -144,59 +128,41 @@ export interface PointerEventsSystem {
|
|
|
144
128
|
}, cb: EventSystemCallback): void;
|
|
145
129
|
/**
|
|
146
130
|
* @public
|
|
147
|
-
* Execute
|
|
148
|
-
* @param pointerData - Entity to attach the callbacks, list of options to trigger Feedback, Button, and Callback
|
|
149
|
-
*/
|
|
150
|
-
onPointerDrag(pointerData: {
|
|
151
|
-
entity: Entity;
|
|
152
|
-
optsList: EventSystemOptionsCallback[];
|
|
153
|
-
}): void;
|
|
154
|
-
/**
|
|
155
|
-
* @public
|
|
156
|
-
* Execute callback when the user clicks and drags the pointer from inside the entity
|
|
131
|
+
* Execute callback when the user presses the proximity button on the entity
|
|
157
132
|
* @param pointerData - Entity to attach the callback - Opts to trigger Feedback and Button
|
|
158
133
|
* @param cb - Function to execute when click fires
|
|
159
134
|
*/
|
|
160
|
-
|
|
135
|
+
onProximityDown(pointerData: {
|
|
161
136
|
entity: Entity;
|
|
162
137
|
opts?: Partial<EventSystemOptions>;
|
|
163
138
|
}, cb: EventSystemCallback): void;
|
|
164
139
|
/**
|
|
165
140
|
* @public
|
|
166
|
-
* Execute
|
|
167
|
-
* @param pointerData - Entity to attach the callbacks, list of options to trigger Feedback, Button, and Callback
|
|
168
|
-
*/
|
|
169
|
-
onPointerDragLocked(pointerData: {
|
|
170
|
-
entity: Entity;
|
|
171
|
-
optsList: EventSystemOptionsCallback[];
|
|
172
|
-
}): void;
|
|
173
|
-
/**
|
|
174
|
-
* @public
|
|
175
|
-
* Execute callback when the user clicks and drags the pointer from inside the entity,
|
|
176
|
-
* locking the cursor in place
|
|
141
|
+
* Execute callback when the user releases the proximity button on the entity
|
|
177
142
|
* @param pointerData - Entity to attach the callback - Opts to trigger Feedback and Button
|
|
178
|
-
* @param cb - Function to execute when
|
|
143
|
+
* @param cb - Function to execute when event fires
|
|
179
144
|
*/
|
|
180
|
-
|
|
145
|
+
onProximityUp(pointerData: {
|
|
181
146
|
entity: Entity;
|
|
182
147
|
opts?: Partial<EventSystemOptions>;
|
|
183
148
|
}, cb: EventSystemCallback): void;
|
|
184
149
|
/**
|
|
185
150
|
* @public
|
|
186
|
-
* Execute
|
|
187
|
-
* @param pointerData - Entity to attach the
|
|
151
|
+
* Execute callback when the entity enters the proximity zone of the user
|
|
152
|
+
* @param pointerData - Entity to attach the callback - Opts to trigger Feedback and Button
|
|
153
|
+
* @param cb - Function to execute when event fires
|
|
188
154
|
*/
|
|
189
|
-
|
|
155
|
+
onProximityEnter(pointerData: {
|
|
190
156
|
entity: Entity;
|
|
191
|
-
|
|
192
|
-
}): void;
|
|
157
|
+
opts?: Partial<EventSystemOptions>;
|
|
158
|
+
}, cb: EventSystemCallback): void;
|
|
193
159
|
/**
|
|
194
160
|
* @public
|
|
195
|
-
* Execute callback when the
|
|
161
|
+
* Execute callback when the entity leaves the proximity zone of the user
|
|
196
162
|
* @param pointerData - Entity to attach the callback - Opts to trigger Feedback and Button
|
|
197
|
-
* @param cb - Function to execute when
|
|
163
|
+
* @param cb - Function to execute when event fires
|
|
198
164
|
*/
|
|
199
|
-
|
|
165
|
+
onProximityLeave(pointerData: {
|
|
200
166
|
entity: Entity;
|
|
201
167
|
opts?: Partial<EventSystemOptions>;
|
|
202
168
|
}, cb: EventSystemCallback): void;
|
|
@@ -45,15 +45,14 @@ function createPointerEventsSystem(engine, inputSystem) {
|
|
|
45
45
|
EventType[EventType["Up"] = 2] = "Up";
|
|
46
46
|
EventType[EventType["HoverEnter"] = 3] = "HoverEnter";
|
|
47
47
|
EventType[EventType["HoverLeave"] = 4] = "HoverLeave";
|
|
48
|
-
EventType[EventType["
|
|
49
|
-
EventType[EventType["
|
|
50
|
-
EventType[EventType["DragEnd"] = 7] = "DragEnd";
|
|
48
|
+
EventType[EventType["ProximityEnter"] = 5] = "ProximityEnter";
|
|
49
|
+
EventType[EventType["ProximityLeave"] = 6] = "ProximityLeave";
|
|
51
50
|
})(EventType || (EventType = {}));
|
|
52
51
|
const eventsMap = new Map();
|
|
53
52
|
function getEvent(entity) {
|
|
54
53
|
return eventsMap.get(entity) || eventsMap.set(entity, new Map()).get(entity);
|
|
55
54
|
}
|
|
56
|
-
function setPointerEvent(entity, type, opts) {
|
|
55
|
+
function setPointerEvent(entity, type, opts, interactionType = 0 /* InteractionType.CURSOR */) {
|
|
57
56
|
const pointerEvent = PointerEvents.getMutableOrNull(entity) || PointerEvents.create(entity);
|
|
58
57
|
pointerEvent.pointerEvents.push({
|
|
59
58
|
eventType: type,
|
|
@@ -63,15 +62,19 @@ function createPointerEventsSystem(engine, inputSystem) {
|
|
|
63
62
|
showHighlight: opts.showHighlight,
|
|
64
63
|
hoverText: opts.hoverText,
|
|
65
64
|
maxDistance: opts.maxDistance,
|
|
66
|
-
maxPlayerDistance: opts.maxPlayerDistance
|
|
67
|
-
|
|
65
|
+
maxPlayerDistance: opts.maxPlayerDistance,
|
|
66
|
+
priority: opts.priority
|
|
67
|
+
},
|
|
68
|
+
interactionType: interactionType ?? 0 /* InteractionType.CURSOR */
|
|
68
69
|
});
|
|
69
70
|
}
|
|
70
|
-
function removePointerEvent(entity, type, button) {
|
|
71
|
+
function removePointerEvent(entity, type, button, interactionType = 0 /* InteractionType.CURSOR */) {
|
|
71
72
|
const pointerEvent = PointerEvents.getMutableOrNull(entity);
|
|
72
73
|
if (!pointerEvent)
|
|
73
74
|
return;
|
|
74
|
-
pointerEvent.pointerEvents = pointerEvent.pointerEvents.filter((pointer) => !(pointer.eventInfo?.button === button &&
|
|
75
|
+
pointerEvent.pointerEvents = pointerEvent.pointerEvents.filter((pointer) => !(pointer.eventInfo?.button === button &&
|
|
76
|
+
pointer.eventType === type &&
|
|
77
|
+
pointer.interactionType === interactionType));
|
|
75
78
|
}
|
|
76
79
|
function getPointerEvent(eventType) {
|
|
77
80
|
if (eventType === EventType.Up) {
|
|
@@ -83,148 +86,117 @@ function createPointerEventsSystem(engine, inputSystem) {
|
|
|
83
86
|
else if (eventType === EventType.HoverEnter) {
|
|
84
87
|
return 2 /* PointerEventType.PET_HOVER_ENTER */;
|
|
85
88
|
}
|
|
86
|
-
else if (eventType === EventType.
|
|
87
|
-
return
|
|
88
|
-
}
|
|
89
|
-
else if (eventType === EventType.DragLocked) {
|
|
90
|
-
return 6 /* PointerEventType.PET_DRAG_LOCKED */;
|
|
89
|
+
else if (eventType === EventType.ProximityEnter) {
|
|
90
|
+
return 4 /* PointerEventType.PET_PROXIMITY_ENTER */;
|
|
91
91
|
}
|
|
92
|
-
else if (eventType === EventType.
|
|
93
|
-
return
|
|
92
|
+
else if (eventType === EventType.ProximityLeave) {
|
|
93
|
+
return 5 /* PointerEventType.PET_PROXIMITY_LEAVE */;
|
|
94
94
|
}
|
|
95
95
|
return 1 /* PointerEventType.PET_DOWN */;
|
|
96
96
|
}
|
|
97
|
-
function
|
|
98
|
-
if (pet === 0 /* PointerEventType.PET_UP */) {
|
|
99
|
-
return EventType.Up;
|
|
100
|
-
}
|
|
101
|
-
else if (pet === 2 /* PointerEventType.PET_HOVER_ENTER */) {
|
|
102
|
-
return EventType.HoverEnter;
|
|
103
|
-
}
|
|
104
|
-
else if (pet === 3 /* PointerEventType.PET_HOVER_LEAVE */) {
|
|
105
|
-
return EventType.HoverLeave;
|
|
106
|
-
}
|
|
107
|
-
else if (pet === 7 /* PointerEventType.PET_DRAG */) {
|
|
108
|
-
return EventType.Drag;
|
|
109
|
-
}
|
|
110
|
-
else if (pet === 6 /* PointerEventType.PET_DRAG_LOCKED */) {
|
|
111
|
-
return EventType.DragLocked;
|
|
112
|
-
}
|
|
113
|
-
else if (pet === 8 /* PointerEventType.PET_DRAG_END */) {
|
|
114
|
-
return EventType.DragEnd;
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
return EventType.Down;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
function removeEvent(entity, type) {
|
|
97
|
+
function removeEvent(entity, type, interactionType = 0 /* InteractionType.CURSOR */) {
|
|
121
98
|
const event = getEvent(entity);
|
|
122
|
-
const
|
|
123
|
-
if (
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
for (const button of pointerEventList.keys()) {
|
|
127
|
-
removePointerEvent(entity, getPointerEvent(type), button);
|
|
99
|
+
const pointerEvent = event.get(type);
|
|
100
|
+
if (pointerEvent?.opts.hoverText) {
|
|
101
|
+
removePointerEvent(entity, getPointerEvent(type), pointerEvent.opts.button);
|
|
128
102
|
}
|
|
129
103
|
event.delete(type);
|
|
130
104
|
}
|
|
131
105
|
engine.addSystem(function EventSystem() {
|
|
132
|
-
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
for (const entity of eventsMap.keys()) {
|
|
106
|
+
for (const [entity, event] of eventsMap) {
|
|
136
107
|
if (engine.getEntityState(entity) === entity_1.EntityState.Removed) {
|
|
137
108
|
eventsMap.delete(entity);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
for (const command of inputSystem.getInputCommands()) {
|
|
141
|
-
const entity = command.hit?.entityId;
|
|
142
|
-
if (entity === undefined) {
|
|
143
|
-
continue;
|
|
144
|
-
}
|
|
145
|
-
const entityMap = eventsMap.get(entity);
|
|
146
|
-
if (entityMap === undefined) {
|
|
147
109
|
continue;
|
|
148
110
|
}
|
|
149
|
-
const
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
111
|
+
for (const [eventType, { cb, opts }] of event) {
|
|
112
|
+
if (eventType === EventType.Click) {
|
|
113
|
+
const command = inputSystem.getClick(opts.button, entity);
|
|
114
|
+
if (command)
|
|
115
|
+
(0, invariant_1.checkNotThenable)(cb(command.up), 'Click event returned a thenable. Only synchronous functions are allowed');
|
|
154
116
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const data = clickMap.get(command.button);
|
|
165
|
-
if (data && inputSystem.getClick(command.button, entity)) {
|
|
166
|
-
(0, invariant_1.checkNotThenable)(data.cb(command), 'Click event returned a thenable. Only synchronous functions are allowed');
|
|
167
|
-
}
|
|
168
|
-
const anyData = clickMap.get(3 /* InputAction.IA_ANY */);
|
|
169
|
-
if (anyData && inputSystem.getClick(command.button, entity)) {
|
|
170
|
-
(0, invariant_1.checkNotThenable)(anyData.cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
|
|
117
|
+
if (eventType === EventType.Down ||
|
|
118
|
+
eventType === EventType.Up ||
|
|
119
|
+
eventType === EventType.HoverEnter ||
|
|
120
|
+
eventType === EventType.HoverLeave ||
|
|
121
|
+
eventType === EventType.ProximityEnter ||
|
|
122
|
+
eventType === EventType.ProximityLeave) {
|
|
123
|
+
const command = inputSystem.getInputCommand(opts.button, getPointerEvent(eventType), entity);
|
|
124
|
+
if (command) {
|
|
125
|
+
(0, invariant_1.checkNotThenable)(cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
|
|
171
126
|
}
|
|
172
127
|
}
|
|
173
128
|
}
|
|
174
129
|
}
|
|
175
130
|
});
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
};
|
|
131
|
+
const onPointerDown = (...args) => {
|
|
132
|
+
const [data, cb, maybeOpts] = args;
|
|
133
|
+
if (typeof data === 'number') {
|
|
134
|
+
return onPointerDown({ entity: data, opts: maybeOpts ?? {} }, cb);
|
|
135
|
+
}
|
|
136
|
+
const { entity, opts } = data;
|
|
137
|
+
const options = (0, exports.getDefaultOpts)(opts);
|
|
138
|
+
removeEvent(entity, EventType.Down);
|
|
139
|
+
getEvent(entity).set(EventType.Down, { cb, opts: options });
|
|
140
|
+
setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options);
|
|
141
|
+
};
|
|
142
|
+
const onPointerUp = (...args) => {
|
|
143
|
+
const [data, cb, maybeOpts] = args;
|
|
144
|
+
if (typeof data === 'number') {
|
|
145
|
+
return onPointerUp({ entity: data, opts: maybeOpts ?? {} }, cb);
|
|
146
|
+
}
|
|
147
|
+
const { entity, opts } = data;
|
|
148
|
+
const options = (0, exports.getDefaultOpts)(opts);
|
|
149
|
+
removeEvent(entity, EventType.Up);
|
|
150
|
+
getEvent(entity).set(EventType.Up, { cb, opts: options });
|
|
151
|
+
setPointerEvent(entity, 0 /* PointerEventType.PET_UP */, options);
|
|
152
|
+
};
|
|
153
|
+
const onPointerHoverEnter = (...args) => {
|
|
154
|
+
const [data, cb] = args;
|
|
155
|
+
const { entity, opts } = data;
|
|
156
|
+
const options = (0, exports.getDefaultOpts)(opts);
|
|
157
|
+
removeEvent(entity, EventType.HoverEnter);
|
|
158
|
+
getEvent(entity).set(EventType.HoverEnter, { cb, opts: options });
|
|
159
|
+
setPointerEvent(entity, 2 /* PointerEventType.PET_HOVER_ENTER */, options);
|
|
160
|
+
};
|
|
161
|
+
const onPointerHoverLeave = (...args) => {
|
|
162
|
+
const [data, cb] = args;
|
|
163
|
+
const { entity, opts } = data;
|
|
164
|
+
const options = (0, exports.getDefaultOpts)(opts);
|
|
165
|
+
removeEvent(entity, EventType.HoverLeave);
|
|
166
|
+
getEvent(entity).set(EventType.HoverLeave, { cb, opts: options });
|
|
167
|
+
setPointerEvent(entity, 3 /* PointerEventType.PET_HOVER_LEAVE */, options);
|
|
168
|
+
};
|
|
169
|
+
const onProximityDown = (...args) => {
|
|
170
|
+
const [data, cb] = args;
|
|
171
|
+
const { entity, opts } = data;
|
|
172
|
+
const options = (0, exports.getDefaultOpts)(opts);
|
|
173
|
+
removeEvent(entity, EventType.Down, 1 /* InteractionType.PROXIMITY */);
|
|
174
|
+
getEvent(entity).set(EventType.Down, { cb, opts: options });
|
|
175
|
+
setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options, 1 /* InteractionType.PROXIMITY */);
|
|
176
|
+
};
|
|
177
|
+
const onProximityUp = (...args) => {
|
|
178
|
+
const [data, cb] = args;
|
|
179
|
+
const { entity, opts } = data;
|
|
180
|
+
const options = (0, exports.getDefaultOpts)(opts);
|
|
181
|
+
removeEvent(entity, EventType.Up, 1 /* InteractionType.PROXIMITY */);
|
|
182
|
+
getEvent(entity).set(EventType.Up, { cb, opts: options });
|
|
183
|
+
setPointerEvent(entity, 0 /* PointerEventType.PET_UP */, options, 1 /* InteractionType.PROXIMITY */);
|
|
184
|
+
};
|
|
185
|
+
const onProximityEnter = (...args) => {
|
|
186
|
+
const [data, cb] = args;
|
|
187
|
+
const { entity, opts } = data;
|
|
188
|
+
const options = (0, exports.getDefaultOpts)(opts);
|
|
189
|
+
removeEvent(entity, EventType.ProximityEnter, 1 /* InteractionType.PROXIMITY */);
|
|
190
|
+
getEvent(entity).set(EventType.ProximityEnter, { cb, opts: options });
|
|
191
|
+
setPointerEvent(entity, 4 /* PointerEventType.PET_PROXIMITY_ENTER */, options, 1 /* InteractionType.PROXIMITY */);
|
|
192
|
+
};
|
|
193
|
+
const onProximityLeave = (...args) => {
|
|
194
|
+
const [data, cb] = args;
|
|
195
|
+
const { entity, opts } = data;
|
|
196
|
+
const options = (0, exports.getDefaultOpts)(opts);
|
|
197
|
+
removeEvent(entity, EventType.ProximityLeave, 1 /* InteractionType.PROXIMITY */);
|
|
198
|
+
getEvent(entity).set(EventType.ProximityLeave, { cb, opts: options });
|
|
199
|
+
setPointerEvent(entity, 5 /* PointerEventType.PET_PROXIMITY_LEAVE */, options, 1 /* InteractionType.PROXIMITY */);
|
|
228
200
|
};
|
|
229
201
|
return {
|
|
230
202
|
removeOnClick(entity) {
|
|
@@ -242,23 +214,35 @@ function createPointerEventsSystem(engine, inputSystem) {
|
|
|
242
214
|
removeOnPointerHoverLeave(entity) {
|
|
243
215
|
removeEvent(entity, EventType.HoverLeave);
|
|
244
216
|
},
|
|
245
|
-
|
|
246
|
-
removeEvent(entity, EventType.
|
|
217
|
+
removeOnProximityDown(entity) {
|
|
218
|
+
removeEvent(entity, EventType.Down, 1 /* InteractionType.PROXIMITY */);
|
|
219
|
+
},
|
|
220
|
+
removeOnProximityUp(entity) {
|
|
221
|
+
removeEvent(entity, EventType.Up, 1 /* InteractionType.PROXIMITY */);
|
|
247
222
|
},
|
|
248
|
-
|
|
249
|
-
removeEvent(entity, EventType.
|
|
223
|
+
removeOnProximityEnter(entity) {
|
|
224
|
+
removeEvent(entity, EventType.ProximityEnter, 1 /* InteractionType.PROXIMITY */);
|
|
250
225
|
},
|
|
251
|
-
|
|
252
|
-
removeEvent(entity, EventType.
|
|
226
|
+
removeOnProximityLeave(entity) {
|
|
227
|
+
removeEvent(entity, EventType.ProximityLeave, 1 /* InteractionType.PROXIMITY */);
|
|
228
|
+
},
|
|
229
|
+
onClick(value, cb) {
|
|
230
|
+
const { entity } = value;
|
|
231
|
+
const options = (0, exports.getDefaultOpts)(value.opts);
|
|
232
|
+
// Clear previous event with over feedback included
|
|
233
|
+
removeEvent(entity, EventType.Click);
|
|
234
|
+
// Set new event
|
|
235
|
+
getEvent(entity).set(EventType.Click, { cb, opts: options });
|
|
236
|
+
setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options);
|
|
253
237
|
},
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
238
|
+
onPointerDown,
|
|
239
|
+
onPointerUp,
|
|
240
|
+
onPointerHoverEnter,
|
|
241
|
+
onPointerHoverLeave,
|
|
242
|
+
onProximityDown,
|
|
243
|
+
onProximityUp,
|
|
244
|
+
onProximityEnter,
|
|
245
|
+
onProximityLeave
|
|
262
246
|
};
|
|
263
247
|
}
|
|
264
248
|
exports.createPointerEventsSystem = createPointerEventsSystem;
|
|
@@ -0,0 +1,167 @@
|
|
|
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.createPhysicsForceHelper = void 0;
|
|
27
|
+
const components = __importStar(require("../components"));
|
|
28
|
+
const helpers_1 = require("../runtime/helpers");
|
|
29
|
+
const physics_impulse_1 = require("./physics-impulse");
|
|
30
|
+
/** @internal */
|
|
31
|
+
function createPhysicsForceHelper(engine) {
|
|
32
|
+
const PhysicsCombinedForce = components.PhysicsCombinedForce(engine);
|
|
33
|
+
const Transform = components.Transform(engine);
|
|
34
|
+
const timers = (0, helpers_1.createTimers)(engine);
|
|
35
|
+
const durationTimers = new Map();
|
|
36
|
+
// Key = source entity producing the force (not the target); all forces target PlayerEntity.
|
|
37
|
+
const forceSources = new Map();
|
|
38
|
+
const repulsionSources = new Map();
|
|
39
|
+
let lastWrittenForceVector = null;
|
|
40
|
+
function recalcForce() {
|
|
41
|
+
if (forceSources.size === 0) {
|
|
42
|
+
if (PhysicsCombinedForce.has(engine.PlayerEntity)) {
|
|
43
|
+
PhysicsCombinedForce.deleteFrom(engine.PlayerEntity);
|
|
44
|
+
}
|
|
45
|
+
lastWrittenForceVector = null;
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const current = PhysicsCombinedForce.getOrNull(engine.PlayerEntity);
|
|
49
|
+
if (current && lastWrittenForceVector && current.vector) {
|
|
50
|
+
if (!helpers_1.Vector3.equals(current.vector, lastWrittenForceVector)) {
|
|
51
|
+
console.error('PBPhysicsCombinedForce was modified externally.', 'Expected:', lastWrittenForceVector, 'Found:', current.vector, '-- overwriting with local state.');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
let sum = { x: 0, y: 0, z: 0 };
|
|
55
|
+
for (const v of forceSources.values()) {
|
|
56
|
+
sum = helpers_1.Vector3.add(sum, v);
|
|
57
|
+
}
|
|
58
|
+
PhysicsCombinedForce.createOrReplace(engine.PlayerEntity, { vector: sum });
|
|
59
|
+
lastWrittenForceVector = sum;
|
|
60
|
+
}
|
|
61
|
+
function applyForceToPlayer(source, vector, magnitude) {
|
|
62
|
+
let finalVector;
|
|
63
|
+
if (helpers_1.Vector3.equalsToFloats(vector, 0, 0, 0))
|
|
64
|
+
return;
|
|
65
|
+
if (typeof magnitude === 'number') {
|
|
66
|
+
finalVector = helpers_1.Vector3.scale(helpers_1.Vector3.normalize(vector), magnitude);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
finalVector = vector;
|
|
70
|
+
}
|
|
71
|
+
forceSources.set(source, finalVector);
|
|
72
|
+
recalcForce();
|
|
73
|
+
}
|
|
74
|
+
function removeForceFromPlayer(source) {
|
|
75
|
+
repulsionSources.delete(source);
|
|
76
|
+
const timerId = durationTimers.get(source);
|
|
77
|
+
if (timerId !== undefined) {
|
|
78
|
+
timers.clearTimeout(timerId);
|
|
79
|
+
durationTimers.delete(source);
|
|
80
|
+
}
|
|
81
|
+
if (!forceSources.has(source))
|
|
82
|
+
return;
|
|
83
|
+
forceSources.delete(source);
|
|
84
|
+
recalcForce();
|
|
85
|
+
}
|
|
86
|
+
function scheduleForceDuration(source, seconds) {
|
|
87
|
+
const existing = durationTimers.get(source);
|
|
88
|
+
if (existing !== undefined) {
|
|
89
|
+
timers.clearTimeout(existing);
|
|
90
|
+
}
|
|
91
|
+
const timerId = timers.setTimeout(() => {
|
|
92
|
+
durationTimers.delete(source);
|
|
93
|
+
removeForceFromPlayer(source);
|
|
94
|
+
}, seconds * 1000);
|
|
95
|
+
durationTimers.set(source, timerId);
|
|
96
|
+
}
|
|
97
|
+
function applyForceToPlayerForDuration(source, duration, vector, magnitude) {
|
|
98
|
+
applyForceToPlayer(source, vector, magnitude);
|
|
99
|
+
scheduleForceDuration(source, duration);
|
|
100
|
+
}
|
|
101
|
+
function computeRepulsionVector(fromPosition, magnitude, radius, falloff) {
|
|
102
|
+
const diff = helpers_1.Vector3.subtract(Transform.get(engine.PlayerEntity).position, fromPosition);
|
|
103
|
+
if (helpers_1.Vector3.equalsToFloats(diff, 0, 0, 0))
|
|
104
|
+
return { x: 0, y: magnitude, z: 0 };
|
|
105
|
+
// Fast path: default params — no need to compute distance
|
|
106
|
+
if (radius === Infinity && falloff === physics_impulse_1.KnockbackFalloff.CONSTANT) {
|
|
107
|
+
return helpers_1.Vector3.scale(helpers_1.Vector3.normalize(diff), magnitude);
|
|
108
|
+
}
|
|
109
|
+
const distance = helpers_1.Vector3.length(diff);
|
|
110
|
+
if (distance > radius)
|
|
111
|
+
return null;
|
|
112
|
+
let effectiveMagnitude;
|
|
113
|
+
switch (falloff) {
|
|
114
|
+
case physics_impulse_1.KnockbackFalloff.LINEAR:
|
|
115
|
+
effectiveMagnitude = magnitude * (1 - distance / radius);
|
|
116
|
+
break;
|
|
117
|
+
case physics_impulse_1.KnockbackFalloff.INVERSE_SQUARE:
|
|
118
|
+
effectiveMagnitude = magnitude / (distance * distance + 1);
|
|
119
|
+
break;
|
|
120
|
+
case physics_impulse_1.KnockbackFalloff.CONSTANT:
|
|
121
|
+
default:
|
|
122
|
+
effectiveMagnitude = magnitude;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
if (effectiveMagnitude === 0)
|
|
126
|
+
return null;
|
|
127
|
+
// normalize(diff) * effectiveMagnitude in one step
|
|
128
|
+
return helpers_1.Vector3.scale(diff, effectiveMagnitude / distance);
|
|
129
|
+
}
|
|
130
|
+
function applyRepulsionForceToPlayer(source, fromPosition, magnitude, radius = Infinity, falloff = physics_impulse_1.KnockbackFalloff.CONSTANT) {
|
|
131
|
+
repulsionSources.set(source, { fromPosition, magnitude, radius, falloff });
|
|
132
|
+
const vector = computeRepulsionVector(fromPosition, magnitude, radius, falloff);
|
|
133
|
+
if (vector) {
|
|
134
|
+
forceSources.set(source, vector);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
forceSources.delete(source);
|
|
138
|
+
}
|
|
139
|
+
recalcForce();
|
|
140
|
+
}
|
|
141
|
+
// Background system: recalculate repulsion vectors and clean up stale forces every tick.
|
|
142
|
+
// Stale forces can appear when CRDT sync from another client writes PhysicsCombinedForce
|
|
143
|
+
// externally (entity-1 ambiguity: each client interprets entity 1 as its own player).
|
|
144
|
+
engine.addSystem(() => {
|
|
145
|
+
// Repulsion forces need per-tick direction recalculation as the player moves
|
|
146
|
+
if (repulsionSources.size > 0) {
|
|
147
|
+
for (const [source, { fromPosition, magnitude, radius, falloff }] of repulsionSources) {
|
|
148
|
+
const vector = computeRepulsionVector(fromPosition, magnitude, radius, falloff);
|
|
149
|
+
if (vector) {
|
|
150
|
+
forceSources.set(source, vector);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
forceSources.delete(source);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
recalcForce();
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
// No local sources — clean up any externally-created component (e.g. from CRDT sync)
|
|
160
|
+
if (forceSources.size === 0 && PhysicsCombinedForce.has(engine.PlayerEntity)) {
|
|
161
|
+
PhysicsCombinedForce.deleteFrom(engine.PlayerEntity);
|
|
162
|
+
lastWrittenForceVector = null;
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
return { applyForceToPlayer, removeForceFromPlayer, applyForceToPlayerForDuration, applyRepulsionForceToPlayer };
|
|
166
|
+
}
|
|
167
|
+
exports.createPhysicsForceHelper = createPhysicsForceHelper;
|