@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.
Files changed (209) hide show
  1. package/dist/components/extended/AvatarEquippedData.d.ts +15 -0
  2. package/dist/components/extended/AvatarEquippedData.js +10 -0
  3. package/dist/components/extended/AvatarShape.d.ts +15 -0
  4. package/dist/components/extended/AvatarShape.js +10 -0
  5. package/dist/components/extended/MeshCollider.d.ts +9 -0
  6. package/dist/components/extended/MeshCollider.js +6 -0
  7. package/dist/components/extended/MeshRenderer.d.ts +8 -0
  8. package/dist/components/extended/MeshRenderer.js +5 -0
  9. package/dist/components/generated/AvatarMovement.gen.d.ts +1 -0
  10. package/dist/components/generated/AvatarMovement.gen.js +25 -0
  11. package/dist/components/generated/AvatarMovementInfo.gen.d.ts +1 -0
  12. package/dist/components/generated/AvatarMovementInfo.gen.js +25 -0
  13. package/dist/components/generated/CameraLayer.gen.d.ts +1 -0
  14. package/dist/components/generated/CameraLayer.gen.js +25 -0
  15. package/dist/components/generated/CameraLayers.gen.d.ts +1 -0
  16. package/dist/components/generated/CameraLayers.gen.js +25 -0
  17. package/dist/components/generated/GlobalLight.gen.d.ts +1 -0
  18. package/dist/components/generated/GlobalLight.gen.js +25 -0
  19. package/dist/components/generated/GltfNode.gen.d.ts +1 -0
  20. package/dist/components/generated/GltfNode.gen.js +25 -0
  21. package/dist/components/generated/GltfNodeState.gen.d.ts +1 -0
  22. package/dist/components/generated/GltfNodeState.gen.js +25 -0
  23. package/dist/components/generated/TextureCamera.gen.d.ts +1 -0
  24. package/dist/components/generated/TextureCamera.gen.js +25 -0
  25. package/dist/components/generated/UiCanvas.gen.d.ts +1 -0
  26. package/dist/components/generated/UiCanvas.gen.js +25 -0
  27. package/dist/components/generated/UiScrollResult.gen.d.ts +1 -0
  28. package/dist/components/generated/UiScrollResult.gen.js +25 -0
  29. package/dist/components/generated/component-names.gen.js +10 -0
  30. package/dist/components/generated/global.gen.d.ts +20 -4
  31. package/dist/components/generated/global.gen.js +10 -2
  32. package/dist/components/generated/index.gen.d.ts +40 -0
  33. package/dist/components/generated/index.gen.js +50 -0
  34. package/dist/components/generated/pb/decentraland/common/texture.gen.d.ts +20 -0
  35. package/dist/components/generated/pb/decentraland/common/texture.gen.js +65 -0
  36. package/dist/components/generated/pb/decentraland/sdk/components/avatar_base.gen.d.ts +2 -0
  37. package/dist/components/generated/pb/decentraland/sdk/components/avatar_base.gen.js +17 -1
  38. package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +2 -0
  39. package/dist/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +10 -1
  40. package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +2 -0
  41. package/dist/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +10 -1
  42. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.d.ts +57 -0
  43. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.js +204 -0
  44. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.d.ts +65 -0
  45. package/dist/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.js +228 -0
  46. package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +2 -0
  47. package/dist/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +10 -0
  48. package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +30 -0
  49. package/dist/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +104 -0
  50. package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +14 -0
  51. package/dist/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +50 -0
  52. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +2 -0
  53. package/dist/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +10 -1
  54. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +4 -1
  55. package/dist/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +3 -0
  56. package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +34 -0
  57. package/dist/components/generated/pb/decentraland/sdk/components/global_light.gen.js +61 -0
  58. package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +19 -0
  59. package/dist/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +46 -1
  60. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +50 -0
  61. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +41 -0
  62. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +27 -0
  63. package/dist/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +59 -0
  64. package/dist/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +22 -0
  65. package/dist/components/generated/pb/decentraland/sdk/components/material.gen.js +57 -1
  66. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +20 -0
  67. package/dist/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +56 -0
  68. package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +21 -3
  69. package/dist/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +56 -0
  70. package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +8 -2
  71. package/dist/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +3 -0
  72. package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +13 -0
  73. package/dist/components/generated/pb/decentraland/sdk/components/raycast.gen.js +30 -0
  74. package/dist/components/generated/pb/decentraland/sdk/components/text_shape.gen.d.ts +2 -0
  75. package/dist/components/generated/pb/decentraland/sdk/components/text_shape.gen.js +10 -0
  76. package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +74 -0
  77. package/dist/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +191 -0
  78. package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +19 -0
  79. package/dist/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +60 -0
  80. package/dist/components/generated/pb/decentraland/sdk/components/ui_dropdown.gen.d.ts +2 -0
  81. package/dist/components/generated/pb/decentraland/sdk/components/ui_dropdown.gen.js +10 -0
  82. package/dist/components/generated/pb/decentraland/sdk/components/ui_input.gen.d.ts +6 -0
  83. package/dist/components/generated/pb/decentraland/sdk/components/ui_input.gen.js +30 -0
  84. package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +15 -0
  85. package/dist/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +42 -0
  86. package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +2 -0
  87. package/dist/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +10 -0
  88. package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +35 -0
  89. package/dist/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +90 -0
  90. package/dist/components/index.d.ts +4 -0
  91. package/dist/components/index.js +6 -0
  92. package/dist/components/types.d.ts +2 -0
  93. package/dist/engine/input.js +8 -8
  94. package/dist/engine/lww-element-set-component-definition.js +14 -20
  95. package/dist/engine/readonly.d.ts +1 -1
  96. package/dist/engine/readonly.js +0 -10
  97. package/dist/index.d.ts +3 -1
  98. package/dist/index.js +3 -0
  99. package/dist/schemas/OneOf.js +1 -13
  100. package/dist/systems/cyclicParentingChecker.js +4 -9
  101. package/dist/systems/events.d.ts +48 -0
  102. package/dist/systems/events.js +70 -48
  103. package/dist/systems/raycast.d.ts +5 -1
  104. package/dist/systems/raycast.js +5 -1
  105. package/dist-cjs/components/extended/AvatarEquippedData.d.ts +15 -0
  106. package/dist-cjs/components/extended/AvatarEquippedData.js +14 -0
  107. package/dist-cjs/components/extended/AvatarShape.d.ts +15 -0
  108. package/dist-cjs/components/extended/AvatarShape.js +14 -0
  109. package/dist-cjs/components/extended/MeshCollider.d.ts +9 -0
  110. package/dist-cjs/components/extended/MeshCollider.js +6 -0
  111. package/dist-cjs/components/extended/MeshRenderer.d.ts +8 -0
  112. package/dist-cjs/components/extended/MeshRenderer.js +5 -0
  113. package/dist-cjs/components/generated/AvatarMovement.gen.d.ts +1 -0
  114. package/dist-cjs/components/generated/AvatarMovement.gen.js +28 -0
  115. package/dist-cjs/components/generated/AvatarMovementInfo.gen.d.ts +1 -0
  116. package/dist-cjs/components/generated/AvatarMovementInfo.gen.js +28 -0
  117. package/dist-cjs/components/generated/CameraLayer.gen.d.ts +1 -0
  118. package/dist-cjs/components/generated/CameraLayer.gen.js +28 -0
  119. package/dist-cjs/components/generated/CameraLayers.gen.d.ts +1 -0
  120. package/dist-cjs/components/generated/CameraLayers.gen.js +28 -0
  121. package/dist-cjs/components/generated/GlobalLight.gen.d.ts +1 -0
  122. package/dist-cjs/components/generated/GlobalLight.gen.js +28 -0
  123. package/dist-cjs/components/generated/GltfNode.gen.d.ts +1 -0
  124. package/dist-cjs/components/generated/GltfNode.gen.js +28 -0
  125. package/dist-cjs/components/generated/GltfNodeState.gen.d.ts +1 -0
  126. package/dist-cjs/components/generated/GltfNodeState.gen.js +28 -0
  127. package/dist-cjs/components/generated/TextureCamera.gen.d.ts +1 -0
  128. package/dist-cjs/components/generated/TextureCamera.gen.js +28 -0
  129. package/dist-cjs/components/generated/UiCanvas.gen.d.ts +1 -0
  130. package/dist-cjs/components/generated/UiCanvas.gen.js +28 -0
  131. package/dist-cjs/components/generated/UiScrollResult.gen.d.ts +1 -0
  132. package/dist-cjs/components/generated/UiScrollResult.gen.js +28 -0
  133. package/dist-cjs/components/generated/component-names.gen.js +10 -0
  134. package/dist-cjs/components/generated/global.gen.d.ts +20 -4
  135. package/dist-cjs/components/generated/global.gen.js +12 -4
  136. package/dist-cjs/components/generated/index.gen.d.ts +40 -0
  137. package/dist-cjs/components/generated/index.gen.js +62 -2
  138. package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.d.ts +20 -0
  139. package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.js +66 -1
  140. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_base.gen.d.ts +2 -0
  141. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_base.gen.js +17 -1
  142. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.d.ts +2 -0
  143. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_equipped_data.gen.js +10 -1
  144. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +2 -0
  145. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +10 -1
  146. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.d.ts +57 -0
  147. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement.gen.js +210 -0
  148. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.d.ts +65 -0
  149. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_movement_info.gen.js +234 -0
  150. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +2 -0
  151. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +10 -0
  152. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.d.ts +30 -0
  153. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layer.gen.js +110 -0
  154. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.d.ts +14 -0
  155. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_layers.gen.js +56 -0
  156. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +2 -0
  157. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +10 -1
  158. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +4 -1
  159. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +3 -0
  160. package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.d.ts +34 -0
  161. package/dist-cjs/components/generated/pb/decentraland/sdk/components/global_light.gen.js +67 -0
  162. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +19 -0
  163. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +46 -1
  164. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.d.ts +50 -0
  165. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node.gen.js +47 -0
  166. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.d.ts +27 -0
  167. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_node_state.gen.js +65 -0
  168. package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +22 -0
  169. package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.js +58 -2
  170. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +20 -0
  171. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +57 -1
  172. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +21 -3
  173. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +57 -1
  174. package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.d.ts +8 -2
  175. package/dist-cjs/components/generated/pb/decentraland/sdk/components/primary_pointer_info.gen.js +3 -0
  176. package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +13 -0
  177. package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.js +31 -1
  178. package/dist-cjs/components/generated/pb/decentraland/sdk/components/text_shape.gen.d.ts +2 -0
  179. package/dist-cjs/components/generated/pb/decentraland/sdk/components/text_shape.gen.js +10 -0
  180. package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.d.ts +74 -0
  181. package/dist-cjs/components/generated/pb/decentraland/sdk/components/texture_camera.gen.js +197 -0
  182. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.d.ts +19 -0
  183. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas.gen.js +66 -0
  184. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_dropdown.gen.d.ts +2 -0
  185. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_dropdown.gen.js +10 -0
  186. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input.gen.d.ts +6 -0
  187. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input.gen.js +30 -0
  188. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.d.ts +15 -0
  189. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_scroll_result.gen.js +48 -0
  190. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +2 -0
  191. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +10 -0
  192. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +35 -0
  193. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +91 -1
  194. package/dist-cjs/components/index.d.ts +4 -0
  195. package/dist-cjs/components/index.js +9 -1
  196. package/dist-cjs/components/types.d.ts +2 -0
  197. package/dist-cjs/engine/input.js +8 -8
  198. package/dist-cjs/engine/lww-element-set-component-definition.js +14 -20
  199. package/dist-cjs/engine/readonly.d.ts +1 -1
  200. package/dist-cjs/engine/readonly.js +0 -10
  201. package/dist-cjs/index.d.ts +3 -1
  202. package/dist-cjs/index.js +4 -1
  203. package/dist-cjs/schemas/OneOf.js +1 -13
  204. package/dist-cjs/systems/cyclicParentingChecker.js +4 -9
  205. package/dist-cjs/systems/events.d.ts +48 -0
  206. package/dist-cjs/systems/events.js +70 -48
  207. package/dist-cjs/systems/raycast.d.ts +5 -1
  208. package/dist-cjs/systems/raycast.js +5 -1
  209. package/package.json +2 -2
@@ -5,6 +5,8 @@ import { AudioSourceComponentDefinitionExtended } from './extended/AudioSource';
5
5
  import { AudioAnalysisComponentDefinitionExtended } from './extended/AudioAnalysis';
6
6
  import type { AudioAnalysisView } from './extended/AudioAnalysis';
7
7
  import { MaterialComponentDefinitionExtended } from './extended/Material';
8
+ import { AvatarEquippedDataComponentDefinitionExtended } from './extended/AvatarEquippedData';
9
+ import { AvatarShapeComponentDefinitionExtended } from './extended/AvatarShape';
8
10
  import { MeshColliderComponentDefinitionExtended } from './extended/MeshCollider';
9
11
  import { MeshRendererComponentDefinitionExtended } from './extended/MeshRenderer';
10
12
  import { TweenComponentDefinitionExtended } from './extended/Tween';
@@ -33,6 +35,8 @@ export declare const AudioAnalysis: LwwComponentGetter<AudioAnalysisComponentDef
33
35
  export declare const AudioStream: (engine: Pick<IEngine, 'defineComponentFromSchema' | 'defineValueSetComponentFromSchema'>) => AudioStreamComponentDefinitionExtended;
34
36
  export declare const MeshRenderer: LwwComponentGetter<MeshRendererComponentDefinitionExtended>;
35
37
  export declare const MeshCollider: LwwComponentGetter<MeshColliderComponentDefinitionExtended>;
38
+ export declare const AvatarShape: LwwComponentGetter<AvatarShapeComponentDefinitionExtended>;
39
+ export declare const AvatarEquippedData: LwwComponentGetter<AvatarEquippedDataComponentDefinitionExtended>;
36
40
  export declare const Tween: LwwComponentGetter<TweenComponentDefinitionExtended>;
37
41
  export declare const VirtualCamera: LwwComponentGetter<VirtualCameraComponentDefinitionExtended>;
38
42
  export declare const InputModifier: LwwComponentGetter<InputModifierComponentDefinitionExtended>;
@@ -17,11 +17,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.MediaState = exports.NetworkParent = exports.NetworkEntity = exports.SyncComponents = exports.Tags = exports.Name = exports.TouchScreenControls = exports.ParticleSystem = exports.TriggerArea = exports.LightSource = exports.InputModifier = exports.VirtualCamera = exports.Tween = exports.MeshCollider = exports.MeshRenderer = exports.AudioStream = exports.AudioAnalysis = exports.AudioSource = exports.Animator = exports.Material = exports.Transform = void 0;
20
+ exports.MediaState = exports.NetworkParent = exports.NetworkEntity = exports.SyncComponents = exports.Tags = exports.Name = exports.TouchScreenControls = exports.ParticleSystem = exports.TriggerArea = exports.LightSource = exports.InputModifier = exports.VirtualCamera = exports.Tween = exports.AvatarEquippedData = exports.AvatarShape = exports.MeshCollider = exports.MeshRenderer = exports.AudioStream = exports.AudioAnalysis = exports.AudioSource = exports.Animator = exports.Material = exports.Transform = void 0;
21
21
  const Animator_1 = require("./extended/Animator");
22
22
  const AudioSource_1 = require("./extended/AudioSource");
23
23
  const AudioAnalysis_1 = require("./extended/AudioAnalysis");
24
24
  const Material_1 = require("./extended/Material");
25
+ const AvatarEquippedData_1 = require("./extended/AvatarEquippedData");
26
+ const AvatarShape_1 = require("./extended/AvatarShape");
25
27
  const MeshCollider_1 = require("./extended/MeshCollider");
26
28
  const MeshRenderer_1 = require("./extended/MeshRenderer");
27
29
  const Tween_1 = require("./extended/Tween");
@@ -66,6 +68,12 @@ exports.MeshRenderer = MeshRenderer;
66
68
  const MeshCollider = (engine) => (0, MeshCollider_1.defineMeshColliderComponent)(engine);
67
69
  exports.MeshCollider = MeshCollider;
68
70
  /* @__PURE__ */
71
+ const AvatarShape = (engine) => (0, AvatarShape_1.defineAvatarShapeComponent)(engine);
72
+ exports.AvatarShape = AvatarShape;
73
+ /* @__PURE__ */
74
+ const AvatarEquippedData = (engine) => (0, AvatarEquippedData_1.defineAvatarEquippedDataComponent)(engine);
75
+ exports.AvatarEquippedData = AvatarEquippedData;
76
+ /* @__PURE__ */
69
77
  const Tween = (engine) => (0, Tween_1.defineTweenComponent)(engine);
70
78
  exports.Tween = Tween;
71
79
  /* @__PURE__ */
@@ -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';
@@ -83,22 +83,22 @@ function createInputSystem(engine) {
83
83
  const arrayCommands = Array.from(commands);
84
84
  for (let i = arrayCommands.length - 1; i >= 0; i--) {
85
85
  const command = arrayCommands[i];
86
- // Commands are kept sorted by timestamp, so this one and every one
87
- // below it belongs to a frame that was already accounted for. Stopping
88
- // on the button state instead would end this entity's whole loop over
89
- // a button another entity had already reported this frame.
90
- if (command.timestamp <= globalState.previousFrameMaxTimestamp) {
91
- break;
92
- }
93
86
  if (command.timestamp > maxTimestamp) {
94
87
  maxTimestamp = command.timestamp;
95
88
  }
96
- globalState.thisFrameCommands.push(command);
89
+ if (command.timestamp > globalState.previousFrameMaxTimestamp) {
90
+ globalState.thisFrameCommands.push(command);
91
+ }
97
92
  if (command.state === 0 /* PointerEventType.PET_UP */ || command.state === 1 /* PointerEventType.PET_DOWN */) {
98
93
  const prevCommand = globalState.buttonState.get(command.button);
99
94
  if (!prevCommand || command.timestamp > prevCommand.timestamp) {
100
95
  globalState.buttonState.set(command.button, command);
101
96
  }
97
+ else {
98
+ // since we are iterating a descending array, we can early finish the
99
+ // loop
100
+ break;
101
+ }
102
102
  }
103
103
  }
104
104
  }
@@ -208,16 +208,12 @@ function createComponentDefinitionFromSchema(componentName, componentId, schema)
208
208
  return data.has(entity);
209
209
  },
210
210
  deleteFrom(entity, markAsDirty = true) {
211
- // Presence, not truthiness: a component defined from a primitive schema can
212
- // legitimately hold 0, false or an empty string, and deleting one must still
213
- // return the value that was there.
214
- const had = data.has(entity);
215
211
  const component = data.get(entity);
216
212
  if (data.delete(entity) && markAsDirty) {
217
213
  dirtyIterator.add(entity);
218
214
  }
219
215
  lastSentData.delete(entity);
220
- return had ? component : null;
216
+ return component || null;
221
217
  },
222
218
  entityDeleted(entity, markAsDirty) {
223
219
  if (data.delete(entity) && markAsDirty) {
@@ -226,20 +222,19 @@ function createComponentDefinitionFromSchema(componentName, componentId, schema)
226
222
  lastSentData.delete(entity);
227
223
  },
228
224
  getOrNull(entity) {
229
- // Presence, not truthiness: a component defined from a primitive schema
230
- // can legitimately hold 0, false or an empty string.
231
- if (!data.has(entity))
232
- return null;
233
- return (0, readonly_1.deepReadonly)(data.get(entity));
225
+ const component = data.get(entity);
226
+ return component ? (0, readonly_1.deepReadonly)(component) : null;
234
227
  },
235
228
  get(entity) {
236
- if (!data.has(entity)) {
229
+ const component = data.get(entity);
230
+ if (!component) {
237
231
  throw new Error(`[getFrom] Component ${componentName} for entity #${entity} not found`);
238
232
  }
239
- return (0, readonly_1.deepReadonly)(data.get(entity));
233
+ return (0, readonly_1.deepReadonly)(component);
240
234
  },
241
235
  create(entity, value) {
242
- if (data.has(entity)) {
236
+ const component = data.get(entity);
237
+ if (component) {
243
238
  throw new Error(`[create] Component ${componentName} for ${entity} already exists`);
244
239
  }
245
240
  const usedValue = value === undefined ? schema.create() : schema.extend ? schema.extend(value) : value;
@@ -255,22 +250,21 @@ function createComponentDefinitionFromSchema(componentName, componentId, schema)
255
250
  return usedValue;
256
251
  },
257
252
  getMutableOrNull(entity) {
258
- // Presence, not truthiness, so a falsy primitive value is still mutable.
259
- if (!data.has(entity)) {
253
+ const component = data.get(entity);
254
+ if (!component) {
260
255
  return null;
261
256
  }
262
257
  dirtyIterator.add(entity);
263
- return data.get(entity);
258
+ return component;
264
259
  },
265
260
  getOrCreateMutable(entity, value) {
266
- // Presence, not truthiness: a stored 0/false/'' must not be treated as absent,
267
- // which would send this through create() and throw "already exists".
268
- if (!data.has(entity)) {
261
+ const component = data.get(entity);
262
+ if (!component) {
269
263
  return this.create(entity, value);
270
264
  }
271
265
  else {
272
266
  dirtyIterator.add(entity);
273
- return data.get(entity);
267
+ return component;
274
268
  }
275
269
  },
276
270
  getMutable(entity) {
@@ -16,7 +16,7 @@ export type DeepReadonlyObject<T> = {
16
16
  /**
17
17
  * @public
18
18
  */
19
- export type ReadonlyPrimitive = number | string | boolean;
19
+ export type ReadonlyPrimitive = number | string | number[] | string[] | boolean | boolean[];
20
20
  /**
21
21
  * @public
22
22
  */
@@ -5,16 +5,6 @@ exports.deepReadonly = void 0;
5
5
  * @internal
6
6
  */
7
7
  function deepReadonly(val) {
8
- // A component can be defined straight from a primitive or array schema, not
9
- // only from a Map, which is why this is no longer constrained to an object.
10
- // Spreading those threw the value away: a number came back as {}, an array
11
- // as an object keyed by index.
12
- if (val === null || typeof val !== 'object') {
13
- return val;
14
- }
15
- if (Array.isArray(val)) {
16
- return Object.freeze([...val]);
17
- }
18
8
  return Object.freeze({ ...val });
19
9
  }
20
10
  exports.deepReadonly = deepReadonly;
@@ -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-cjs/index.js CHANGED
@@ -26,7 +26,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
26
26
  return result;
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.NetworkParent = exports.NetworkEntity = exports.SyncComponents = exports.TouchScreenControls = exports.ParticleSystem = exports.TriggerArea = exports.LightSource = exports.InputModifier = exports.VirtualCamera = exports.Tween = exports.Tags = exports.Name = exports.MeshCollider = exports.MeshRenderer = exports.Material = exports.AudioStream = exports.AudioAnalysis = exports.AudioSource = exports.Animator = exports.Transform = exports.components = exports.cyclicParentingChecker = void 0;
29
+ exports.NetworkParent = exports.NetworkEntity = exports.SyncComponents = exports.TouchScreenControls = exports.ParticleSystem = exports.TriggerArea = exports.LightSource = exports.InputModifier = exports.VirtualCamera = exports.Tween = exports.Tags = exports.Name = exports.AvatarEquippedData = exports.AvatarShape = exports.MeshCollider = exports.MeshRenderer = exports.Material = exports.AudioStream = exports.AudioAnalysis = exports.AudioSource = exports.Animator = exports.Transform = exports.components = exports.cyclicParentingChecker = void 0;
30
30
  // The order of the following imports matters. Please do not auto-sort
31
31
  __exportStar(require("./engine"), exports);
32
32
  __exportStar(require("./schemas"), exports);
@@ -60,6 +60,9 @@ exports.AudioStream = components.AudioStream(initialization_1.engine);
60
60
  exports.Material = components.Material(initialization_1.engine);
61
61
  exports.MeshRenderer = components.MeshRenderer(initialization_1.engine);
62
62
  exports.MeshCollider = components.MeshCollider(initialization_1.engine);
63
+ exports.AvatarShape = components.AvatarShape(initialization_1.engine);
64
+ exports.AvatarEquippedData =
65
+ /* @__PURE__*/ components.AvatarEquippedData(initialization_1.engine);
63
66
  exports.Name = components.Name(initialization_1.engine);
64
67
  exports.Tags = components.Tags(initialization_1.engine);
65
68
  exports.Tween = components.Tween(initialization_1.engine);
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IOneOf = void 0;
4
- /** Reserved case index for a value whose case was never selected. */
5
- const NO_CASE = 0;
6
4
  const IOneOf = (specs) => {
7
5
  const specKeys = Object.keys(specs);
8
6
  const keyToIndex = specKeys.reduce((dict, key, index) => {
@@ -15,22 +13,12 @@ const IOneOf = (specs) => {
15
13
  }, {});
16
14
  return {
17
15
  serialize({ $case, value }, builder) {
18
- // `create()` selects no case, so a field the scene never set arrives here
19
- // with an undefined `$case`. Index 0 is free, cases start at 1.
20
- if ($case === undefined) {
21
- builder.writeUint8(NO_CASE);
22
- return;
23
- }
24
16
  const _value = keyToIndex[$case.toString()] + 1;
25
17
  builder.writeUint8(_value);
26
18
  specs[$case].serialize(value, builder);
27
19
  },
28
20
  deserialize(reader) {
29
- const caseIndex = reader.readInt8();
30
- if (caseIndex === NO_CASE) {
31
- return {};
32
- }
33
- const $case = specKeys[caseIndex - 1];
21
+ const $case = specKeys[reader.readInt8() - 1];
34
22
  const value = specs[$case].deserialize(reader);
35
23
  return { $case, value };
36
24
  },
@@ -42,22 +42,17 @@ const components = __importStar(require("../components"));
42
42
  */
43
43
  function cyclicParentingChecker(engine) {
44
44
  const Transform = components.Transform(engine);
45
- // Reused by every walk: the checker is synchronous, so only one is ever in
46
- // flight. A cycle anywhere above the entity has to end the walk, not only one
47
- // the entity is part of, otherwise the ancestors repeat forever.
48
- const visited = new Set();
49
45
  return () => {
50
46
  for (const entity of Transform.dirtyIterator()) {
51
- visited.clear();
52
- visited.add(entity);
53
47
  let transform = Transform.getOrNull(entity);
54
48
  while (transform && transform.parent) {
55
- if (visited.has(transform.parent)) {
49
+ if (transform.parent === entity) {
56
50
  console.error(`There is a cyclic parent with entity ${entity}`);
57
51
  break;
58
52
  }
59
- visited.add(transform.parent);
60
- transform = Transform.getOrNull(transform.parent);
53
+ else {
54
+ transform = Transform.getOrNull(transform.parent);
55
+ }
61
56
  }
62
57
  }
63
58
  };
@@ -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
@@ -47,21 +47,14 @@ function createPointerEventsSystem(engine, inputSystem) {
47
47
  EventType[EventType["HoverLeave"] = 4] = "HoverLeave";
48
48
  EventType[EventType["ProximityEnter"] = 5] = "ProximityEnter";
49
49
  EventType[EventType["ProximityLeave"] = 6] = "ProximityLeave";
50
+ EventType[EventType["Drag"] = 7] = "Drag";
51
+ EventType[EventType["DragLocked"] = 8] = "DragLocked";
52
+ EventType[EventType["DragEnd"] = 9] = "DragEnd";
50
53
  })(EventType || (EventType = {}));
51
54
  const eventsMap = new Map();
52
55
  function getEvent(entity) {
53
56
  return eventsMap.get(entity) || eventsMap.set(entity, new Map()).get(entity);
54
57
  }
55
- // A cursor handler and a proximity handler are separate registrations that
56
- // produce separate PointerEvents entries, so they need separate slots here
57
- // too. Keying on the event type alone made onProximityDown evict whatever
58
- // onPointerDown had left.
59
- function eventKey(type, interactionType) {
60
- return `${type}:${interactionType}`;
61
- }
62
- function setEvent(entity, type, cb, opts, interactionType = 0 /* InteractionType.CURSOR */) {
63
- getEvent(entity).set(eventKey(type, interactionType), { cb, opts, eventType: type });
64
- }
65
58
  function setPointerEvent(entity, type, opts, interactionType = 0 /* InteractionType.CURSOR */) {
66
59
  const pointerEvent = PointerEvents.getMutableOrNull(entity) || PointerEvents.create(entity);
67
60
  pointerEvent.pointerEvents.push({
@@ -79,27 +72,13 @@ function createPointerEventsSystem(engine, inputSystem) {
79
72
  interactionType: interactionType ?? 0 /* InteractionType.CURSOR */
80
73
  });
81
74
  }
82
- function removePointerEvent(entity, type, opts, interactionType = 0 /* InteractionType.CURSOR */) {
75
+ function removePointerEvent(entity, type, button, interactionType = 0 /* InteractionType.CURSOR */) {
83
76
  const pointerEvent = PointerEvents.getMutableOrNull(entity);
84
77
  if (!pointerEvent)
85
78
  return;
86
- const sameSlot = (pointer) => pointer.eventType === type && pointer.interactionType === interactionType;
87
- // onClick and onPointerDown both describe themselves as PET_DOWN, so the event
88
- // type and button alone do not say which registration an entry belongs to. Match
89
- // everything the entry was built from, or removing one handler can take the
90
- // other's descriptor and leave the renderer advertising the wrong interaction.
91
- const index = pointerEvent.pointerEvents.findIndex((pointer) => sameSlot(pointer) &&
92
- pointer.eventInfo?.button === opts.button &&
93
- pointer.eventInfo?.hoverText === opts.hoverText &&
94
- pointer.eventInfo?.showFeedback === opts.showFeedback &&
95
- pointer.eventInfo?.showHighlight === opts.showHighlight &&
96
- pointer.eventInfo?.maxDistance === opts.maxDistance &&
97
- pointer.eventInfo?.maxPlayerDistance === opts.maxPlayerDistance &&
98
- pointer.eventInfo?.priority === opts.priority &&
99
- pointer.eventInfo?.maxCameraDistance === opts.maxCameraDistance);
100
- if (index === -1)
101
- return;
102
- pointerEvent.pointerEvents.splice(index, 1);
79
+ pointerEvent.pointerEvents = pointerEvent.pointerEvents.filter((pointer) => !(pointer.eventInfo?.button === button &&
80
+ pointer.eventType === type &&
81
+ pointer.interactionType === interactionType));
103
82
  }
104
83
  function getPointerEvent(eventType) {
105
84
  if (eventType === EventType.Up) {
@@ -117,20 +96,24 @@ function createPointerEventsSystem(engine, inputSystem) {
117
96
  else if (eventType === EventType.ProximityLeave) {
118
97
  return 5 /* PointerEventType.PET_PROXIMITY_LEAVE */;
119
98
  }
99
+ else if (eventType === EventType.Drag) {
100
+ return 7 /* PointerEventType.PET_DRAG */;
101
+ }
102
+ else if (eventType === EventType.DragLocked) {
103
+ return 6 /* PointerEventType.PET_DRAG_LOCKED */;
104
+ }
105
+ else if (eventType === EventType.DragEnd) {
106
+ return 8 /* PointerEventType.PET_DRAG_END */;
107
+ }
120
108
  return 1 /* PointerEventType.PET_DOWN */;
121
109
  }
122
110
  function removeEvent(entity, type, interactionType = 0 /* InteractionType.CURSOR */) {
123
111
  const event = getEvent(entity);
124
- const key = eventKey(type, interactionType);
125
- const pointerEvent = event.get(key);
126
- // Every registration adds an entry, not only the ones carrying a hoverText,
127
- // so every removal has to take one away. Gating on hoverText left the
128
- // renderer showing an interaction whose callback was already gone, and made
129
- // re-registering grow the component by one entry each time.
130
- if (pointerEvent) {
131
- removePointerEvent(entity, getPointerEvent(type), pointerEvent.opts, interactionType);
112
+ const pointerEvent = event.get(type);
113
+ if (pointerEvent?.opts.hoverText) {
114
+ removePointerEvent(entity, getPointerEvent(type), pointerEvent.opts.button);
132
115
  }
133
- event.delete(key);
116
+ event.delete(type);
134
117
  }
135
118
  engine.addSystem(function PointerEventSystem() {
136
119
  for (const [entity, event] of eventsMap) {
@@ -138,7 +121,7 @@ function createPointerEventsSystem(engine, inputSystem) {
138
121
  eventsMap.delete(entity);
139
122
  continue;
140
123
  }
141
- for (const [, { cb, opts, eventType }] of event) {
124
+ for (const [eventType, { cb, opts }] of event) {
142
125
  if (eventType === EventType.Click) {
143
126
  const command = inputSystem.getClick(opts.button, entity);
144
127
  if (command)
@@ -149,7 +132,10 @@ function createPointerEventsSystem(engine, inputSystem) {
149
132
  eventType === EventType.HoverEnter ||
150
133
  eventType === EventType.HoverLeave ||
151
134
  eventType === EventType.ProximityEnter ||
152
- eventType === EventType.ProximityLeave) {
135
+ eventType === EventType.ProximityLeave ||
136
+ eventType === EventType.Drag ||
137
+ eventType === EventType.DragLocked ||
138
+ eventType === EventType.DragEnd) {
153
139
  const command = inputSystem.getInputCommand(opts.button, getPointerEvent(eventType), entity);
154
140
  if (command) {
155
141
  (0, invariant_1.checkNotThenable)(cb(command), 'Event handler returned a thenable. Only synchronous functions are allowed');
@@ -166,7 +152,7 @@ function createPointerEventsSystem(engine, inputSystem) {
166
152
  const { entity, opts } = data;
167
153
  const options = (0, exports.getDefaultOpts)(opts);
168
154
  removeEvent(entity, EventType.Down);
169
- setEvent(entity, EventType.Down, cb, options);
155
+ getEvent(entity).set(EventType.Down, { cb, opts: options });
170
156
  setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options);
171
157
  };
172
158
  const onPointerUp = (...args) => {
@@ -177,7 +163,7 @@ function createPointerEventsSystem(engine, inputSystem) {
177
163
  const { entity, opts } = data;
178
164
  const options = (0, exports.getDefaultOpts)(opts);
179
165
  removeEvent(entity, EventType.Up);
180
- setEvent(entity, EventType.Up, cb, options);
166
+ getEvent(entity).set(EventType.Up, { cb, opts: options });
181
167
  setPointerEvent(entity, 0 /* PointerEventType.PET_UP */, options);
182
168
  };
183
169
  const onPointerHoverEnter = (...args) => {
@@ -185,7 +171,7 @@ function createPointerEventsSystem(engine, inputSystem) {
185
171
  const { entity, opts } = data;
186
172
  const options = (0, exports.getDefaultOpts)(opts);
187
173
  removeEvent(entity, EventType.HoverEnter);
188
- setEvent(entity, EventType.HoverEnter, cb, options);
174
+ getEvent(entity).set(EventType.HoverEnter, { cb, opts: options });
189
175
  setPointerEvent(entity, 2 /* PointerEventType.PET_HOVER_ENTER */, options);
190
176
  };
191
177
  const onPointerHoverLeave = (...args) => {
@@ -193,15 +179,39 @@ function createPointerEventsSystem(engine, inputSystem) {
193
179
  const { entity, opts } = data;
194
180
  const options = (0, exports.getDefaultOpts)(opts);
195
181
  removeEvent(entity, EventType.HoverLeave);
196
- setEvent(entity, EventType.HoverLeave, cb, options);
182
+ getEvent(entity).set(EventType.HoverLeave, { cb, opts: options });
197
183
  setPointerEvent(entity, 3 /* PointerEventType.PET_HOVER_LEAVE */, options);
198
184
  };
185
+ const onPointerDrag = (...args) => {
186
+ const [data, cb] = args;
187
+ const { entity, opts } = data;
188
+ const options = (0, exports.getDefaultOpts)(opts);
189
+ removeEvent(entity, EventType.Drag);
190
+ getEvent(entity).set(EventType.Drag, { cb, opts: options });
191
+ setPointerEvent(entity, 7 /* PointerEventType.PET_DRAG */, options);
192
+ };
193
+ const onPointerDragLocked = (...args) => {
194
+ const [data, cb] = args;
195
+ const { entity, opts } = data;
196
+ const options = (0, exports.getDefaultOpts)(opts);
197
+ removeEvent(entity, EventType.DragLocked);
198
+ getEvent(entity).set(EventType.DragLocked, { cb, opts: options });
199
+ setPointerEvent(entity, 6 /* PointerEventType.PET_DRAG_LOCKED */, options);
200
+ };
201
+ const onPointerDragEnd = (...args) => {
202
+ const [data, cb] = args;
203
+ const { entity, opts } = data;
204
+ const options = (0, exports.getDefaultOpts)(opts);
205
+ removeEvent(entity, EventType.DragEnd);
206
+ getEvent(entity).set(EventType.DragEnd, { cb, opts: options });
207
+ setPointerEvent(entity, 8 /* PointerEventType.PET_DRAG_END */, options);
208
+ };
199
209
  const onProximityDown = (...args) => {
200
210
  const [data, cb] = args;
201
211
  const { entity, opts } = data;
202
212
  const options = (0, exports.getDefaultOpts)(opts);
203
213
  removeEvent(entity, EventType.Down, 1 /* InteractionType.PROXIMITY */);
204
- setEvent(entity, EventType.Down, cb, options, 1 /* InteractionType.PROXIMITY */);
214
+ getEvent(entity).set(EventType.Down, { cb, opts: options });
205
215
  setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options, 1 /* InteractionType.PROXIMITY */);
206
216
  };
207
217
  const onProximityUp = (...args) => {
@@ -209,7 +219,7 @@ function createPointerEventsSystem(engine, inputSystem) {
209
219
  const { entity, opts } = data;
210
220
  const options = (0, exports.getDefaultOpts)(opts);
211
221
  removeEvent(entity, EventType.Up, 1 /* InteractionType.PROXIMITY */);
212
- setEvent(entity, EventType.Up, cb, options, 1 /* InteractionType.PROXIMITY */);
222
+ getEvent(entity).set(EventType.Up, { cb, opts: options });
213
223
  setPointerEvent(entity, 0 /* PointerEventType.PET_UP */, options, 1 /* InteractionType.PROXIMITY */);
214
224
  };
215
225
  const onProximityEnter = (...args) => {
@@ -217,7 +227,7 @@ function createPointerEventsSystem(engine, inputSystem) {
217
227
  const { entity, opts } = data;
218
228
  const options = (0, exports.getDefaultOpts)(opts);
219
229
  removeEvent(entity, EventType.ProximityEnter, 1 /* InteractionType.PROXIMITY */);
220
- setEvent(entity, EventType.ProximityEnter, cb, options, 1 /* InteractionType.PROXIMITY */);
230
+ getEvent(entity).set(EventType.ProximityEnter, { cb, opts: options });
221
231
  setPointerEvent(entity, 4 /* PointerEventType.PET_PROXIMITY_ENTER */, options, 1 /* InteractionType.PROXIMITY */);
222
232
  };
223
233
  const onProximityLeave = (...args) => {
@@ -225,7 +235,7 @@ function createPointerEventsSystem(engine, inputSystem) {
225
235
  const { entity, opts } = data;
226
236
  const options = (0, exports.getDefaultOpts)(opts);
227
237
  removeEvent(entity, EventType.ProximityLeave, 1 /* InteractionType.PROXIMITY */);
228
- setEvent(entity, EventType.ProximityLeave, cb, options, 1 /* InteractionType.PROXIMITY */);
238
+ getEvent(entity).set(EventType.ProximityLeave, { cb, opts: options });
229
239
  setPointerEvent(entity, 5 /* PointerEventType.PET_PROXIMITY_LEAVE */, options, 1 /* InteractionType.PROXIMITY */);
230
240
  };
231
241
  return {
@@ -244,6 +254,15 @@ function createPointerEventsSystem(engine, inputSystem) {
244
254
  removeOnPointerHoverLeave(entity) {
245
255
  removeEvent(entity, EventType.HoverLeave);
246
256
  },
257
+ removeOnPointerDrag(entity) {
258
+ removeEvent(entity, EventType.Drag);
259
+ },
260
+ removeOnPointerDragLocked(entity) {
261
+ removeEvent(entity, EventType.DragLocked);
262
+ },
263
+ removeOnPointerDragEnd(entity) {
264
+ removeEvent(entity, EventType.DragEnd);
265
+ },
247
266
  removeOnProximityDown(entity) {
248
267
  removeEvent(entity, EventType.Down, 1 /* InteractionType.PROXIMITY */);
249
268
  },
@@ -262,13 +281,16 @@ function createPointerEventsSystem(engine, inputSystem) {
262
281
  // Clear previous event with over feedback included
263
282
  removeEvent(entity, EventType.Click);
264
283
  // Set new event
265
- setEvent(entity, EventType.Click, cb, options);
284
+ getEvent(entity).set(EventType.Click, { cb, opts: options });
266
285
  setPointerEvent(entity, 1 /* PointerEventType.PET_DOWN */, options);
267
286
  },
268
287
  onPointerDown,
269
288
  onPointerUp,
270
289
  onPointerHoverEnter,
271
290
  onPointerHoverLeave,
291
+ onPointerDrag,
292
+ onPointerDragLocked,
293
+ onPointerDragEnd,
272
294
  onProximityDown,
273
295
  onProximityUp,
274
296
  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;
@@ -38,7 +38,9 @@ function createRaycastSystem(engine) {
38
38
  queryType: 0 /* RaycastQueryType.RQT_HIT_FIRST */,
39
39
  continuous: false,
40
40
  originOffset: { x: 0, y: 0, z: 0 },
41
- collisionMask: 2 /* ColliderLayer.CL_PHYSICS */
41
+ collisionMask: 2 /* ColliderLayer.CL_PHYSICS */,
42
+ shape: 0 /* RaycastShape.RS_RAY */,
43
+ includeWorld: false
42
44
  };
43
45
  const getLocalDirectionRaycastDefaultOptions = (options = {}) => ({
44
46
  ...defaultOptions,
@@ -84,6 +86,8 @@ function createRaycastSystem(engine) {
84
86
  raycast.direction = raycastValue.directionRawValue;
85
87
  raycast.continuous = raycastValue.continuous;
86
88
  raycast.queryType = raycastValue.queryType;
89
+ raycast.shape = raycastValue.shape;
90
+ raycast.includeWorld = raycastValue.includeWorld;
87
91
  entitiesCallbackResultMap.set(entity, { callback: callback });
88
92
  };
89
93
  nextTickRaycasts.push(onNextTick);