@dcl/ecs 7.1.12-4982829389.commit-f2f84bd → 7.1.12-4983011170.commit-adaaaa2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. package/dist-cjs/components/component-number.d.ts +7 -0
  2. package/dist-cjs/components/component-number.js +44 -0
  3. package/dist-cjs/components/extended/Animator.d.ts +46 -0
  4. package/dist-cjs/components/extended/Animator.js +62 -0
  5. package/dist-cjs/components/extended/Material.d.ts +42 -0
  6. package/dist-cjs/components/extended/Material.js +54 -0
  7. package/dist-cjs/components/extended/MeshCollider.d.ts +38 -0
  8. package/dist-cjs/components/extended/MeshCollider.js +43 -0
  9. package/dist-cjs/components/extended/MeshRenderer.d.ts +36 -0
  10. package/dist-cjs/components/extended/MeshRenderer.js +31 -0
  11. package/dist-cjs/components/generated/Animator.gen.d.ts +1 -0
  12. package/dist-cjs/components/generated/Animator.gen.js +28 -0
  13. package/dist-cjs/components/generated/AudioSource.gen.d.ts +1 -0
  14. package/dist-cjs/components/generated/AudioSource.gen.js +28 -0
  15. package/dist-cjs/components/generated/AudioStream.gen.d.ts +1 -0
  16. package/dist-cjs/components/generated/AudioStream.gen.js +28 -0
  17. package/dist-cjs/components/generated/AvatarAttach.gen.d.ts +1 -0
  18. package/dist-cjs/components/generated/AvatarAttach.gen.js +28 -0
  19. package/dist-cjs/components/generated/AvatarModifierArea.gen.d.ts +1 -0
  20. package/dist-cjs/components/generated/AvatarModifierArea.gen.js +28 -0
  21. package/dist-cjs/components/generated/AvatarShape.gen.d.ts +1 -0
  22. package/dist-cjs/components/generated/AvatarShape.gen.js +28 -0
  23. package/dist-cjs/components/generated/Billboard.gen.d.ts +1 -0
  24. package/dist-cjs/components/generated/Billboard.gen.js +28 -0
  25. package/dist-cjs/components/generated/CameraMode.gen.d.ts +1 -0
  26. package/dist-cjs/components/generated/CameraMode.gen.js +28 -0
  27. package/dist-cjs/components/generated/CameraModeArea.gen.d.ts +1 -0
  28. package/dist-cjs/components/generated/CameraModeArea.gen.js +28 -0
  29. package/dist-cjs/components/generated/EngineInfo.gen.d.ts +1 -0
  30. package/dist-cjs/components/generated/EngineInfo.gen.js +28 -0
  31. package/dist-cjs/components/generated/GltfContainer.gen.d.ts +1 -0
  32. package/dist-cjs/components/generated/GltfContainer.gen.js +28 -0
  33. package/dist-cjs/components/generated/GltfContainerLoadingState.gen.d.ts +1 -0
  34. package/dist-cjs/components/generated/GltfContainerLoadingState.gen.js +28 -0
  35. package/dist-cjs/components/generated/Material.gen.d.ts +1 -0
  36. package/dist-cjs/components/generated/Material.gen.js +28 -0
  37. package/dist-cjs/components/generated/MeshCollider.gen.d.ts +1 -0
  38. package/dist-cjs/components/generated/MeshCollider.gen.js +28 -0
  39. package/dist-cjs/components/generated/MeshRenderer.gen.d.ts +1 -0
  40. package/dist-cjs/components/generated/MeshRenderer.gen.js +28 -0
  41. package/dist-cjs/components/generated/NftShape.gen.d.ts +1 -0
  42. package/dist-cjs/components/generated/NftShape.gen.js +28 -0
  43. package/dist-cjs/components/generated/PointerEvents.gen.d.ts +1 -0
  44. package/dist-cjs/components/generated/PointerEvents.gen.js +28 -0
  45. package/dist-cjs/components/generated/PointerEventsResult.gen.d.ts +1 -0
  46. package/dist-cjs/components/generated/PointerEventsResult.gen.js +28 -0
  47. package/dist-cjs/components/generated/PointerLock.gen.d.ts +1 -0
  48. package/dist-cjs/components/generated/PointerLock.gen.js +28 -0
  49. package/dist-cjs/components/generated/Raycast.gen.d.ts +1 -0
  50. package/dist-cjs/components/generated/Raycast.gen.js +28 -0
  51. package/dist-cjs/components/generated/RaycastResult.gen.d.ts +1 -0
  52. package/dist-cjs/components/generated/RaycastResult.gen.js +28 -0
  53. package/dist-cjs/components/generated/TextShape.gen.d.ts +1 -0
  54. package/dist-cjs/components/generated/TextShape.gen.js +28 -0
  55. package/dist-cjs/components/generated/UiBackground.gen.d.ts +1 -0
  56. package/dist-cjs/components/generated/UiBackground.gen.js +28 -0
  57. package/dist-cjs/components/generated/UiCanvasInformation.gen.d.ts +1 -0
  58. package/dist-cjs/components/generated/UiCanvasInformation.gen.js +28 -0
  59. package/dist-cjs/components/generated/UiDropdown.gen.d.ts +1 -0
  60. package/dist-cjs/components/generated/UiDropdown.gen.js +28 -0
  61. package/dist-cjs/components/generated/UiDropdownResult.gen.d.ts +1 -0
  62. package/dist-cjs/components/generated/UiDropdownResult.gen.js +28 -0
  63. package/dist-cjs/components/generated/UiInput.gen.d.ts +1 -0
  64. package/dist-cjs/components/generated/UiInput.gen.js +28 -0
  65. package/dist-cjs/components/generated/UiInputResult.gen.d.ts +1 -0
  66. package/dist-cjs/components/generated/UiInputResult.gen.js +28 -0
  67. package/dist-cjs/components/generated/UiText.gen.d.ts +1 -0
  68. package/dist-cjs/components/generated/UiText.gen.js +28 -0
  69. package/dist-cjs/components/generated/UiTransform.gen.d.ts +1 -0
  70. package/dist-cjs/components/generated/UiTransform.gen.js +28 -0
  71. package/dist-cjs/components/generated/VideoEvent.gen.d.ts +1 -0
  72. package/dist-cjs/components/generated/VideoEvent.gen.js +28 -0
  73. package/dist-cjs/components/generated/VideoPlayer.gen.d.ts +1 -0
  74. package/dist-cjs/components/generated/VideoPlayer.gen.js +28 -0
  75. package/dist-cjs/components/generated/VisibilityComponent.gen.d.ts +1 -0
  76. package/dist-cjs/components/generated/VisibilityComponent.gen.js +28 -0
  77. package/dist-cjs/components/generated/component-names.gen.d.ts +4 -0
  78. package/dist-cjs/components/generated/component-names.gen.js +42 -0
  79. package/dist-cjs/components/generated/global.gen.d.ts +60 -0
  80. package/dist-cjs/components/generated/global.gen.js +61 -0
  81. package/dist-cjs/components/generated/index.gen.d.ts +139 -0
  82. package/dist-cjs/components/generated/index.gen.js +222 -0
  83. package/dist-cjs/components/generated/pb/decentraland/common/border_rect.gen.d.ts +35 -0
  84. package/dist-cjs/components/generated/pb/decentraland/common/border_rect.gen.js +139 -0
  85. package/dist-cjs/components/generated/pb/decentraland/common/colors.gen.d.ts +32 -0
  86. package/dist-cjs/components/generated/pb/decentraland/common/colors.gen.js +130 -0
  87. package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.d.ts +91 -0
  88. package/dist-cjs/components/generated/pb/decentraland/common/texture.gen.js +254 -0
  89. package/dist-cjs/components/generated/pb/decentraland/common/vectors.gen.d.ts +61 -0
  90. package/dist-cjs/components/generated/pb/decentraland/common/vectors.gen.js +233 -0
  91. package/dist-cjs/components/generated/pb/decentraland/sdk/components/animator.gen.d.ts +50 -0
  92. package/dist-cjs/components/generated/pb/decentraland/sdk/components/animator.gen.js +147 -0
  93. package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_source.gen.d.ts +34 -0
  94. package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_source.gen.js +83 -0
  95. package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_stream.gen.d.ts +24 -0
  96. package/dist-cjs/components/generated/pb/decentraland/sdk/components/audio_stream.gen.js +65 -0
  97. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_attach.gen.d.ts +37 -0
  98. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_attach.gen.js +67 -0
  99. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.d.ts +44 -0
  100. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_modifier_area.gen.js +86 -0
  101. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.d.ts +56 -0
  102. package/dist-cjs/components/generated/pb/decentraland/sdk/components/avatar_shape.gen.js +176 -0
  103. package/dist-cjs/components/generated/pb/decentraland/sdk/components/billboard.gen.d.ts +38 -0
  104. package/dist-cjs/components/generated/pb/decentraland/sdk/components/billboard.gen.js +63 -0
  105. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode.gen.d.ts +20 -0
  106. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode.gen.js +47 -0
  107. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.d.ts +32 -0
  108. package/dist-cjs/components/generated/pb/decentraland/sdk/components/camera_mode_area.gen.js +57 -0
  109. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/camera_type.gen.d.ts +9 -0
  110. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/camera_type.gen.js +15 -0
  111. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/id.gen.d.ts +1 -0
  112. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/id.gen.js +3 -0
  113. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.d.ts +29 -0
  114. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/input_action.gen.js +36 -0
  115. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/loading_state.gen.d.ts +10 -0
  116. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/loading_state.gen.js +16 -0
  117. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/raycast_hit.gen.d.ts +29 -0
  118. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/raycast_hit.gen.js +110 -0
  119. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/texts.gen.d.ts +22 -0
  120. package/dist-cjs/components/generated/pb/decentraland/sdk/components/common/texts.gen.js +29 -0
  121. package/dist-cjs/components/generated/pb/decentraland/sdk/components/engine_info.gen.d.ts +25 -0
  122. package/dist-cjs/components/generated/pb/decentraland/sdk/components/engine_info.gen.js +65 -0
  123. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container.gen.d.ts +25 -0
  124. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container.gen.js +65 -0
  125. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.d.ts +19 -0
  126. package/dist-cjs/components/generated/pb/decentraland/sdk/components/gltf_container_loading_state.gen.js +47 -0
  127. package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.d.ts +96 -0
  128. package/dist-cjs/components/generated/pb/decentraland/sdk/components/material.gen.js +326 -0
  129. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.d.ts +120 -0
  130. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_collider.gen.js +246 -0
  131. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.d.ts +96 -0
  132. package/dist-cjs/components/generated/pb/decentraland/sdk/components/mesh_renderer.gen.js +246 -0
  133. package/dist-cjs/components/generated/pb/decentraland/sdk/components/nft_shape.gen.d.ts +58 -0
  134. package/dist-cjs/components/generated/pb/decentraland/sdk/components/nft_shape.gen.js +96 -0
  135. package/dist-cjs/components/generated/pb/decentraland/sdk/components/pointer_events.gen.d.ts +67 -0
  136. package/dist-cjs/components/generated/pb/decentraland/sdk/components/pointer_events.gen.js +159 -0
  137. package/dist-cjs/components/generated/pb/decentraland/sdk/components/pointer_events_result.gen.d.ts +26 -0
  138. package/dist-cjs/components/generated/pb/decentraland/sdk/components/pointer_events_result.gen.js +93 -0
  139. package/dist-cjs/components/generated/pb/decentraland/sdk/components/pointer_lock.gen.d.ts +19 -0
  140. package/dist-cjs/components/generated/pb/decentraland/sdk/components/pointer_lock.gen.js +47 -0
  141. package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.d.ts +63 -0
  142. package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast.gen.js +152 -0
  143. package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast_result.gen.d.ts +32 -0
  144. package/dist-cjs/components/generated/pb/decentraland/sdk/components/raycast_result.gen.js +85 -0
  145. package/dist-cjs/components/generated/pb/decentraland/sdk/components/text_shape.gen.d.ts +65 -0
  146. package/dist-cjs/components/generated/pb/decentraland/sdk/components/text_shape.gen.js +250 -0
  147. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_background.gen.d.ts +47 -0
  148. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_background.gen.js +119 -0
  149. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas_information.gen.d.ts +29 -0
  150. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_canvas_information.gen.js +75 -0
  151. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_dropdown.gen.d.ts +29 -0
  152. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_dropdown.gen.js +130 -0
  153. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_dropdown_result.gen.d.ts +14 -0
  154. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_dropdown_result.gen.js +47 -0
  155. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input.gen.d.ts +28 -0
  156. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input.gen.js +120 -0
  157. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input_result.gen.d.ts +14 -0
  158. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_input_result.gen.js +47 -0
  159. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.d.ts +25 -0
  160. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_text.gen.js +84 -0
  161. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.d.ts +179 -0
  162. package/dist-cjs/components/generated/pb/decentraland/sdk/components/ui_transform.gen.js +644 -0
  163. package/dist-cjs/components/generated/pb/decentraland/sdk/components/video_event.gen.d.ts +33 -0
  164. package/dist-cjs/components/generated/pb/decentraland/sdk/components/video_event.gen.js +97 -0
  165. package/dist-cjs/components/generated/pb/decentraland/sdk/components/video_player.gen.d.ts +25 -0
  166. package/dist-cjs/components/generated/pb/decentraland/sdk/components/video_player.gen.js +99 -0
  167. package/dist-cjs/components/generated/pb/decentraland/sdk/components/visibility_component.gen.d.ts +15 -0
  168. package/dist-cjs/components/generated/pb/decentraland/sdk/components/visibility_component.gen.js +47 -0
  169. package/dist-cjs/components/generated/pb/google/protobuf/descriptor.gen.d.ts +468 -0
  170. package/dist-cjs/components/generated/pb/google/protobuf/descriptor.gen.js +1936 -0
  171. package/dist-cjs/components/generated/types.gen.d.ts +9 -0
  172. package/dist-cjs/components/generated/types.gen.js +30 -0
  173. package/dist-cjs/components/index.d.ts +14 -0
  174. package/dist-cjs/components/index.js +38 -0
  175. package/dist-cjs/components/manual/Transform.d.ts +40 -0
  176. package/dist-cjs/components/manual/Transform.js +110 -0
  177. package/dist-cjs/components/types.d.ts +5 -0
  178. package/dist-cjs/components/types.js +2 -0
  179. package/dist-cjs/composite/components.d.ts +18 -0
  180. package/dist-cjs/composite/components.js +22 -0
  181. package/dist-cjs/composite/index.d.ts +51 -0
  182. package/dist-cjs/composite/index.js +60 -0
  183. package/dist-cjs/composite/instance.d.ts +34 -0
  184. package/dist-cjs/composite/instance.js +201 -0
  185. package/dist-cjs/composite/path.d.ts +3 -0
  186. package/dist-cjs/composite/path.js +154 -0
  187. package/dist-cjs/composite/proto/gen/composite.gen.d.ts +71 -0
  188. package/dist-cjs/composite/proto/gen/composite.gen.js +337 -0
  189. package/dist-cjs/composite/proto/gen/google/protobuf/struct.gen.d.ts +138 -0
  190. package/dist-cjs/composite/proto/gen/google/protobuf/struct.gen.js +443 -0
  191. package/dist-cjs/engine/component.d.ts +149 -0
  192. package/dist-cjs/engine/component.js +12 -0
  193. package/dist-cjs/engine/entity.d.ts +49 -0
  194. package/dist-cjs/engine/entity.js +178 -0
  195. package/dist-cjs/engine/grow-only-value-set-component-definition.d.ts +8 -0
  196. package/dist-cjs/engine/grow-only-value-set-component-definition.js +145 -0
  197. package/dist-cjs/engine/index.d.ts +15 -0
  198. package/dist-cjs/engine/index.js +247 -0
  199. package/dist-cjs/engine/input.d.ts +34 -0
  200. package/dist-cjs/engine/input.js +219 -0
  201. package/dist-cjs/engine/lww-element-set-component-definition.d.ts +8 -0
  202. package/dist-cjs/engine/lww-element-set-component-definition.js +264 -0
  203. package/dist-cjs/engine/readonly.d.ts +29 -0
  204. package/dist-cjs/engine/readonly.js +10 -0
  205. package/dist-cjs/engine/systems.d.ts +15 -0
  206. package/dist-cjs/engine/systems.js +48 -0
  207. package/dist-cjs/engine/types.d.ts +215 -0
  208. package/dist-cjs/engine/types.js +17 -0
  209. package/dist-cjs/index.d.ts +22 -0
  210. package/dist-cjs/index.js +58 -0
  211. package/dist-cjs/runtime/crc.d.ts +1 -0
  212. package/dist-cjs/runtime/crc.js +45 -0
  213. package/dist-cjs/runtime/helpers/index.d.ts +1 -0
  214. package/dist-cjs/runtime/helpers/index.js +17 -0
  215. package/dist-cjs/runtime/helpers/tree.d.ts +32 -0
  216. package/dist-cjs/runtime/helpers/tree.js +77 -0
  217. package/dist-cjs/runtime/initialization/index.d.ts +61 -0
  218. package/dist-cjs/runtime/initialization/index.js +56 -0
  219. package/dist-cjs/runtime/invariant.d.ts +4 -0
  220. package/dist-cjs/runtime/invariant.js +17 -0
  221. package/dist-cjs/runtime/types.d.ts +6 -0
  222. package/dist-cjs/runtime/types.js +18 -0
  223. package/dist-cjs/schemas/Array.d.ts +1 -0
  224. package/dist-cjs/schemas/Array.js +33 -0
  225. package/dist-cjs/schemas/ISchema.d.ts +35 -0
  226. package/dist-cjs/schemas/ISchema.js +2 -0
  227. package/dist-cjs/schemas/Map.d.ts +20 -0
  228. package/dist-cjs/schemas/Map.js +49 -0
  229. package/dist-cjs/schemas/OneOf.d.ts +10 -0
  230. package/dist-cjs/schemas/OneOf.js +35 -0
  231. package/dist-cjs/schemas/Optional.d.ts +1 -0
  232. package/dist-cjs/schemas/Optional.js +34 -0
  233. package/dist-cjs/schemas/basic/Boolean.d.ts +1 -0
  234. package/dist-cjs/schemas/basic/Boolean.js +21 -0
  235. package/dist-cjs/schemas/basic/Enum.d.ts +1 -0
  236. package/dist-cjs/schemas/basic/Enum.js +101 -0
  237. package/dist-cjs/schemas/basic/Float.d.ts +1 -0
  238. package/dist-cjs/schemas/basic/Float.js +39 -0
  239. package/dist-cjs/schemas/basic/Integer.d.ts +9 -0
  240. package/dist-cjs/schemas/basic/Integer.js +75 -0
  241. package/dist-cjs/schemas/basic/String.d.ts +1 -0
  242. package/dist-cjs/schemas/basic/String.js +25 -0
  243. package/dist-cjs/schemas/buildSchema/index.d.ts +11 -0
  244. package/dist-cjs/schemas/buildSchema/index.js +114 -0
  245. package/dist-cjs/schemas/buildSchema/types.d.ts +5 -0
  246. package/dist-cjs/schemas/buildSchema/types.js +2 -0
  247. package/dist-cjs/schemas/buildSchema/utils.d.ts +12 -0
  248. package/dist-cjs/schemas/buildSchema/utils.js +30 -0
  249. package/dist-cjs/schemas/custom/Color3.d.ts +8 -0
  250. package/dist-cjs/schemas/custom/Color3.js +32 -0
  251. package/dist-cjs/schemas/custom/Color4.d.ts +9 -0
  252. package/dist-cjs/schemas/custom/Color4.js +35 -0
  253. package/dist-cjs/schemas/custom/Entity.d.ts +1 -0
  254. package/dist-cjs/schemas/custom/Entity.js +21 -0
  255. package/dist-cjs/schemas/custom/Quaternion.d.ts +9 -0
  256. package/dist-cjs/schemas/custom/Quaternion.js +35 -0
  257. package/dist-cjs/schemas/custom/Vector3.d.ts +8 -0
  258. package/dist-cjs/schemas/custom/Vector3.js +33 -0
  259. package/dist-cjs/schemas/index.d.ts +80 -0
  260. package/dist-cjs/schemas/index.js +84 -0
  261. package/dist-cjs/schemas/typing.d.ts +30 -0
  262. package/dist-cjs/schemas/typing.js +2 -0
  263. package/dist-cjs/serialization/ByteBuffer/index.d.ts +180 -0
  264. package/dist-cjs/serialization/ByteBuffer/index.js +272 -0
  265. package/dist-cjs/serialization/crdt/appendValue.d.ts +15 -0
  266. package/dist-cjs/serialization/crdt/appendValue.js +52 -0
  267. package/dist-cjs/serialization/crdt/crdtMessageProtocol.d.ts +30 -0
  268. package/dist-cjs/serialization/crdt/crdtMessageProtocol.js +71 -0
  269. package/dist-cjs/serialization/crdt/deleteComponent.d.ts +14 -0
  270. package/dist-cjs/serialization/crdt/deleteComponent.js +45 -0
  271. package/dist-cjs/serialization/crdt/deleteEntity.d.ts +11 -0
  272. package/dist-cjs/serialization/crdt/deleteEntity.js +34 -0
  273. package/dist-cjs/serialization/crdt/index.d.ts +6 -0
  274. package/dist-cjs/serialization/crdt/index.js +22 -0
  275. package/dist-cjs/serialization/crdt/message.d.ts +3 -0
  276. package/dist-cjs/serialization/crdt/message.js +28 -0
  277. package/dist-cjs/serialization/crdt/putComponent.d.ts +15 -0
  278. package/dist-cjs/serialization/crdt/putComponent.js +50 -0
  279. package/dist-cjs/serialization/crdt/types.d.ts +147 -0
  280. package/dist-cjs/serialization/crdt/types.js +77 -0
  281. package/dist-cjs/systems/async-task.d.ts +1 -0
  282. package/dist-cjs/systems/async-task.js +33 -0
  283. package/dist-cjs/systems/crdt/gset.d.ts +29 -0
  284. package/dist-cjs/systems/crdt/gset.js +54 -0
  285. package/dist-cjs/systems/crdt/index.d.ts +7 -0
  286. package/dist-cjs/systems/crdt/index.js +241 -0
  287. package/dist-cjs/systems/crdt/types.d.ts +20 -0
  288. package/dist-cjs/systems/crdt/types.js +2 -0
  289. package/dist-cjs/systems/crdt/utils.d.ts +15 -0
  290. package/dist-cjs/systems/crdt/utils.js +52 -0
  291. package/dist-cjs/systems/cyclicParentingChecker.d.ts +17 -0
  292. package/dist-cjs/systems/cyclicParentingChecker.js +60 -0
  293. package/dist-cjs/systems/events.d.ts +49 -0
  294. package/dist-cjs/systems/events.js +137 -0
  295. package/dist-cjs/systems/raycast.d.ts +80 -0
  296. package/dist-cjs/systems/raycast.js +124 -0
  297. package/dist-cjs/systems/videoEvents.d.ts +14 -0
  298. package/dist-cjs/systems/videoEvents.js +89 -0
  299. package/package.json +5 -4
@@ -0,0 +1,219 @@
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.createInputSystem = void 0;
27
+ const components = __importStar(require("../components"));
28
+ const InputCommands = [
29
+ 0 /* InputAction.IA_POINTER */,
30
+ 1 /* InputAction.IA_PRIMARY */,
31
+ 2 /* InputAction.IA_SECONDARY */,
32
+ 4 /* InputAction.IA_FORWARD */,
33
+ 5 /* InputAction.IA_BACKWARD */,
34
+ 6 /* InputAction.IA_RIGHT */,
35
+ 7 /* InputAction.IA_LEFT */,
36
+ 8 /* InputAction.IA_JUMP */,
37
+ 9 /* InputAction.IA_WALK */,
38
+ 10 /* InputAction.IA_ACTION_3 */,
39
+ 11 /* InputAction.IA_ACTION_4 */,
40
+ 12 /* InputAction.IA_ACTION_5 */,
41
+ 13 /* InputAction.IA_ACTION_6 */
42
+ ];
43
+ const InputStateUpdateSystemPriority = 1 << 20;
44
+ /**
45
+ * @internal
46
+ */
47
+ function createInputSystem(engine) {
48
+ const PointerEventsResult = components.PointerEventsResult(engine);
49
+ const globalState = {
50
+ previousFrameMaxTimestamp: 0,
51
+ currentFrameMaxTimestamp: 0,
52
+ buttonState: new Map(),
53
+ thisFrameCommands: []
54
+ };
55
+ function findLastAction(pointerEventType, inputAction, entity) {
56
+ const ascendingTimestampIterator = PointerEventsResult.get(entity);
57
+ for (const command of Array.from(ascendingTimestampIterator).reverse()) {
58
+ if (command.button === inputAction && command.state === pointerEventType) {
59
+ return command;
60
+ }
61
+ }
62
+ }
63
+ function* findCommandsByActionDescending(inputAction, entity) {
64
+ const ascendingTimestampIterator = PointerEventsResult.get(entity);
65
+ for (const command of Array.from(ascendingTimestampIterator).reverse()) {
66
+ if (command.button === inputAction) {
67
+ yield command;
68
+ }
69
+ }
70
+ }
71
+ function buttonStateUpdateSystem() {
72
+ // first store the previous' frame timestamp
73
+ let maxTimestamp = globalState.currentFrameMaxTimestamp;
74
+ globalState.previousFrameMaxTimestamp = maxTimestamp;
75
+ if (globalState.thisFrameCommands.length) {
76
+ globalState.thisFrameCommands = [];
77
+ }
78
+ // then iterate over all new commands
79
+ for (const [, commands] of engine.getEntitiesWith(PointerEventsResult)) {
80
+ // TODO: adapt the gset component to have a cached "reversed" option by default
81
+ const arrayCommands = Array.from(commands);
82
+ for (let i = arrayCommands.length - 1; i >= 0; i--) {
83
+ const command = arrayCommands[i];
84
+ if (command.timestamp > maxTimestamp) {
85
+ maxTimestamp = command.timestamp;
86
+ }
87
+ if (command.timestamp > globalState.previousFrameMaxTimestamp) {
88
+ globalState.thisFrameCommands.push(command);
89
+ }
90
+ if (command.state === 0 /* PointerEventType.PET_UP */ || command.state === 1 /* PointerEventType.PET_DOWN */) {
91
+ const prevCommand = globalState.buttonState.get(command.button);
92
+ if (!prevCommand || command.timestamp > prevCommand.timestamp) {
93
+ globalState.buttonState.set(command.button, command);
94
+ }
95
+ else {
96
+ // since we are iterating a descending array, we can early finish the
97
+ // loop
98
+ break;
99
+ }
100
+ }
101
+ }
102
+ }
103
+ // update current frame's max timestamp
104
+ globalState.currentFrameMaxTimestamp = maxTimestamp;
105
+ }
106
+ engine.addSystem(buttonStateUpdateSystem, InputStateUpdateSystemPriority, '@dcl/ecs#inputSystem');
107
+ function timestampIsCurrentFrame(timestamp) {
108
+ if (timestamp > globalState.previousFrameMaxTimestamp && timestamp <= globalState.currentFrameMaxTimestamp) {
109
+ return true;
110
+ }
111
+ else {
112
+ return false;
113
+ }
114
+ }
115
+ function getClick(inputAction, entity) {
116
+ if (inputAction !== 3 /* InputAction.IA_ANY */) {
117
+ return findClick(inputAction, entity);
118
+ }
119
+ for (const input of InputCommands) {
120
+ const cmd = findClick(input, entity);
121
+ if (cmd)
122
+ return cmd;
123
+ }
124
+ return null;
125
+ }
126
+ function findClick(inputAction, entity) {
127
+ let down = null;
128
+ let up = null;
129
+ // We search the last UP & DOWN command sorted by timestamp descending
130
+ for (const it of findCommandsByActionDescending(inputAction, entity)) {
131
+ if (!up) {
132
+ if (it.state === 0 /* PointerEventType.PET_UP */) {
133
+ up = it;
134
+ continue;
135
+ }
136
+ }
137
+ else if (!down) {
138
+ if (it.state === 1 /* PointerEventType.PET_DOWN */) {
139
+ down = it;
140
+ break;
141
+ }
142
+ }
143
+ }
144
+ if (!up || !down)
145
+ return null;
146
+ // If the DOWN command has happen before the UP commands, it means that that a clicked has happen
147
+ if (down.timestamp < up.timestamp && timestampIsCurrentFrame(up.timestamp)) {
148
+ return { up, down };
149
+ }
150
+ return null;
151
+ }
152
+ function getInputCommandFromEntity(inputAction, pointerEventType, entity) {
153
+ if (inputAction !== 3 /* InputAction.IA_ANY */) {
154
+ return findInputCommand(inputAction, pointerEventType, entity);
155
+ }
156
+ for (const input of InputCommands) {
157
+ const cmd = findInputCommand(input, pointerEventType, entity);
158
+ if (cmd)
159
+ return cmd;
160
+ }
161
+ return null;
162
+ }
163
+ function getInputCommand(inputAction, pointerEventType, entity) {
164
+ if (entity) {
165
+ return getInputCommandFromEntity(inputAction, pointerEventType, entity);
166
+ }
167
+ else {
168
+ for (const command of globalState.thisFrameCommands) {
169
+ if (command.button === inputAction && command.state === pointerEventType) {
170
+ return command;
171
+ }
172
+ }
173
+ return null;
174
+ }
175
+ }
176
+ function findInputCommand(inputAction, pointerEventType, entity) {
177
+ // We search the last pointer Event command sorted by timestamp
178
+ const command = findLastAction(pointerEventType, inputAction, entity);
179
+ if (!command)
180
+ return null;
181
+ if (timestampIsCurrentFrame(command.timestamp)) {
182
+ return command;
183
+ }
184
+ else {
185
+ return null;
186
+ }
187
+ }
188
+ // returns true if there was a DOWN (in any past frame), and then an UP in the last frame
189
+ function isClicked(inputAction, entity) {
190
+ return getClick(inputAction, entity) !== null;
191
+ }
192
+ // returns true if the provided last action was triggered in the last frame
193
+ function isTriggered(inputAction, pointerEventType, entity) {
194
+ if (entity) {
195
+ const command = findLastAction(pointerEventType, inputAction, entity);
196
+ return (command && timestampIsCurrentFrame(command.timestamp)) || false;
197
+ }
198
+ else {
199
+ for (const command of globalState.thisFrameCommands) {
200
+ if (command.button === inputAction && command.state === pointerEventType) {
201
+ return true;
202
+ }
203
+ }
204
+ return false;
205
+ }
206
+ }
207
+ // returns the global state of the input. This global state is updated from the system
208
+ function isPressed(inputAction) {
209
+ return globalState.buttonState.get(inputAction)?.state === 1 /* PointerEventType.PET_DOWN */;
210
+ }
211
+ return {
212
+ isPressed,
213
+ getClick,
214
+ getInputCommand,
215
+ isClicked,
216
+ isTriggered
217
+ };
218
+ }
219
+ exports.createInputSystem = createInputSystem;
@@ -0,0 +1,8 @@
1
+ import { ISchema } from '../schemas';
2
+ import { ByteBuffer } from '../serialization/ByteBuffer';
3
+ import { PutComponentMessageBody, DeleteComponentMessageBody, CrdtMessageBody } from '../serialization/crdt';
4
+ import { Entity } from './entity';
5
+ export declare function incrementTimestamp(entity: Entity, timestamps: Map<Entity, number>): number;
6
+ export declare function createDumpLwwFunctionFromCrdt(componentId: number, timestamps: Map<Entity, number>, schema: Pick<ISchema<any>, 'serialize' | 'deserialize'>, data: Map<Entity, unknown>): (buffer: ByteBuffer) => void;
7
+ export declare function createUpdateLwwFromCrdt(componentId: number, timestamps: Map<Entity, number>, schema: Pick<ISchema<any>, 'serialize' | 'deserialize'>, data: Map<Entity, unknown>): (msg: CrdtMessageBody) => [null | PutComponentMessageBody | DeleteComponentMessageBody, any];
8
+ export declare function createGetCrdtMessagesForLww(componentId: number, timestamps: Map<Entity, number>, dirtyIterator: Set<Entity>, schema: Pick<ISchema<any>, 'serialize'>, data: Map<Entity, unknown>): () => Generator<PutComponentMessageBody | DeleteComponentMessageBody, void, unknown>;
@@ -0,0 +1,264 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createComponentDefinitionFromSchema = exports.createGetCrdtMessagesForLww = exports.createUpdateLwwFromCrdt = exports.createDumpLwwFunctionFromCrdt = exports.incrementTimestamp = void 0;
4
+ const ByteBuffer_1 = require("../serialization/ByteBuffer");
5
+ const crdt_1 = require("../serialization/crdt");
6
+ const utils_1 = require("../systems/crdt/utils");
7
+ const readonly_1 = require("./readonly");
8
+ function incrementTimestamp(entity, timestamps) {
9
+ const newTimestamp = (timestamps.get(entity) || 0) + 1;
10
+ timestamps.set(entity, newTimestamp);
11
+ return newTimestamp;
12
+ }
13
+ exports.incrementTimestamp = incrementTimestamp;
14
+ function createDumpLwwFunctionFromCrdt(componentId, timestamps, schema, data) {
15
+ return function dumpCrdtState(buffer) {
16
+ for (const [entity, timestamp] of timestamps) {
17
+ /* istanbul ignore else */
18
+ if (data.has(entity)) {
19
+ const it = data.get(entity);
20
+ const buf = new ByteBuffer_1.ReadWriteByteBuffer();
21
+ schema.serialize(it, buf);
22
+ crdt_1.PutComponentOperation.write(entity, timestamp, componentId, buf.toBinary(), buffer);
23
+ }
24
+ else {
25
+ crdt_1.DeleteComponent.write(entity, componentId, timestamp, buffer);
26
+ }
27
+ }
28
+ };
29
+ }
30
+ exports.createDumpLwwFunctionFromCrdt = createDumpLwwFunctionFromCrdt;
31
+ function createUpdateLwwFromCrdt(componentId, timestamps, schema, data) {
32
+ /**
33
+ * Process the received message only if the lamport number recieved is higher
34
+ * than the stored one. If its lower, we spread it to the network to correct the peer.
35
+ * If they are equal, the bigger raw data wins.
36
+
37
+ * Returns the recieved data if the lamport number was bigger than ours.
38
+ * If it was an outdated message, then we return void
39
+ * @public
40
+ */
41
+ function crdtRuleForCurrentState(message) {
42
+ const { entityId, timestamp } = message;
43
+ const currentTimestamp = timestamps.get(entityId);
44
+ // The received message is > than our current value, update our state.components.
45
+ if (currentTimestamp === undefined || currentTimestamp < timestamp) {
46
+ return crdt_1.ProcessMessageResultType.StateUpdatedTimestamp;
47
+ }
48
+ // Outdated Message. Resend our state message through the wire.
49
+ if (currentTimestamp > timestamp) {
50
+ // console.log('2', currentTimestamp, timestamp)
51
+ return crdt_1.ProcessMessageResultType.StateOutdatedTimestamp;
52
+ }
53
+ // Deletes are idempotent
54
+ if (message.type === crdt_1.CrdtMessageType.DELETE_COMPONENT && !data.has(entityId)) {
55
+ return crdt_1.ProcessMessageResultType.NoChanges;
56
+ }
57
+ let currentDataGreater = 0;
58
+ if (data.has(entityId)) {
59
+ const writeBuffer = new ByteBuffer_1.ReadWriteByteBuffer();
60
+ schema.serialize(data.get(entityId), writeBuffer);
61
+ currentDataGreater = (0, utils_1.dataCompare)(writeBuffer.toBinary(), message.data || null);
62
+ }
63
+ else {
64
+ currentDataGreater = (0, utils_1.dataCompare)(null, message.data);
65
+ }
66
+ // Same data, same timestamp. Weirdo echo message.
67
+ // console.log('3', currentDataGreater, writeBuffer.toBinary(), (message as any).data || null)
68
+ if (currentDataGreater === 0) {
69
+ return crdt_1.ProcessMessageResultType.NoChanges;
70
+ }
71
+ else if (currentDataGreater > 0) {
72
+ // Current data is greater
73
+ return crdt_1.ProcessMessageResultType.StateOutdatedData;
74
+ }
75
+ else {
76
+ // Curent data is lower
77
+ return crdt_1.ProcessMessageResultType.StateUpdatedData;
78
+ }
79
+ }
80
+ return (msg) => {
81
+ /* istanbul ignore next */
82
+ if (msg.type !== crdt_1.CrdtMessageType.PUT_COMPONENT && msg.type !== crdt_1.CrdtMessageType.DELETE_COMPONENT)
83
+ /* istanbul ignore next */
84
+ return [null, data.get(msg.entityId)];
85
+ const action = crdtRuleForCurrentState(msg);
86
+ const entity = msg.entityId;
87
+ switch (action) {
88
+ case crdt_1.ProcessMessageResultType.StateUpdatedData:
89
+ case crdt_1.ProcessMessageResultType.StateUpdatedTimestamp: {
90
+ timestamps.set(entity, msg.timestamp);
91
+ if (msg.type === crdt_1.CrdtMessageType.PUT_COMPONENT) {
92
+ const buf = new ByteBuffer_1.ReadWriteByteBuffer(msg.data);
93
+ data.set(entity, schema.deserialize(buf));
94
+ }
95
+ else {
96
+ data.delete(entity);
97
+ }
98
+ return [null, data.get(entity)];
99
+ }
100
+ case crdt_1.ProcessMessageResultType.StateOutdatedTimestamp:
101
+ case crdt_1.ProcessMessageResultType.StateOutdatedData: {
102
+ if (data.has(entity)) {
103
+ const writeBuffer = new ByteBuffer_1.ReadWriteByteBuffer();
104
+ schema.serialize(data.get(entity), writeBuffer);
105
+ return [
106
+ {
107
+ type: crdt_1.CrdtMessageType.PUT_COMPONENT,
108
+ componentId,
109
+ data: writeBuffer.toBinary(),
110
+ entityId: entity,
111
+ timestamp: timestamps.get(entity)
112
+ },
113
+ data.get(entity)
114
+ ];
115
+ }
116
+ else {
117
+ return [
118
+ {
119
+ type: crdt_1.CrdtMessageType.DELETE_COMPONENT,
120
+ componentId,
121
+ entityId: entity,
122
+ timestamp: timestamps.get(entity)
123
+ },
124
+ undefined
125
+ ];
126
+ }
127
+ }
128
+ }
129
+ return [null, data.get(entity)];
130
+ };
131
+ }
132
+ exports.createUpdateLwwFromCrdt = createUpdateLwwFromCrdt;
133
+ function createGetCrdtMessagesForLww(componentId, timestamps, dirtyIterator, schema, data) {
134
+ return function* () {
135
+ for (const entity of dirtyIterator) {
136
+ const newTimestamp = incrementTimestamp(entity, timestamps);
137
+ if (data.has(entity)) {
138
+ const writeBuffer = new ByteBuffer_1.ReadWriteByteBuffer();
139
+ schema.serialize(data.get(entity), writeBuffer);
140
+ const msg = {
141
+ type: crdt_1.CrdtMessageType.PUT_COMPONENT,
142
+ componentId,
143
+ entityId: entity,
144
+ data: writeBuffer.toBinary(),
145
+ timestamp: newTimestamp
146
+ };
147
+ yield msg;
148
+ }
149
+ else {
150
+ const msg = {
151
+ type: crdt_1.CrdtMessageType.DELETE_COMPONENT,
152
+ componentId,
153
+ entityId: entity,
154
+ timestamp: newTimestamp
155
+ };
156
+ yield msg;
157
+ }
158
+ }
159
+ dirtyIterator.clear();
160
+ };
161
+ }
162
+ exports.createGetCrdtMessagesForLww = createGetCrdtMessagesForLww;
163
+ /**
164
+ * @internal
165
+ */
166
+ function createComponentDefinitionFromSchema(componentName, componentId, schema) {
167
+ const data = new Map();
168
+ const dirtyIterator = new Set();
169
+ const timestamps = new Map();
170
+ return {
171
+ get componentId() {
172
+ return componentId;
173
+ },
174
+ get componentName() {
175
+ return componentName;
176
+ },
177
+ get componentType() {
178
+ // a getter is used here to prevent accidental changes
179
+ return 0 /* ComponentType.LastWriteWinElementSet */;
180
+ },
181
+ schema,
182
+ has(entity) {
183
+ return data.has(entity);
184
+ },
185
+ deleteFrom(entity, markAsDirty = true) {
186
+ const component = data.get(entity);
187
+ if (data.delete(entity) && markAsDirty) {
188
+ dirtyIterator.add(entity);
189
+ }
190
+ return component || null;
191
+ },
192
+ entityDeleted(entity, markAsDirty) {
193
+ if (data.delete(entity) && markAsDirty) {
194
+ dirtyIterator.add(entity);
195
+ }
196
+ },
197
+ getOrNull(entity) {
198
+ const component = data.get(entity);
199
+ return component ? (0, readonly_1.deepReadonly)(component) : null;
200
+ },
201
+ get(entity) {
202
+ const component = data.get(entity);
203
+ if (!component) {
204
+ throw new Error(`[getFrom] Component ${componentName} for entity #${entity} not found`);
205
+ }
206
+ return (0, readonly_1.deepReadonly)(component);
207
+ },
208
+ create(entity, value) {
209
+ const component = data.get(entity);
210
+ if (component) {
211
+ throw new Error(`[create] Component ${componentName} for ${entity} already exists`);
212
+ }
213
+ const usedValue = value === undefined ? schema.create() : schema.extend ? schema.extend(value) : value;
214
+ data.set(entity, usedValue);
215
+ dirtyIterator.add(entity);
216
+ return usedValue;
217
+ },
218
+ createOrReplace(entity, value) {
219
+ const usedValue = value === undefined ? schema.create() : schema.extend ? schema.extend(value) : value;
220
+ data.set(entity, usedValue);
221
+ dirtyIterator.add(entity);
222
+ return usedValue;
223
+ },
224
+ getMutableOrNull(entity) {
225
+ const component = data.get(entity);
226
+ if (!component) {
227
+ return null;
228
+ }
229
+ dirtyIterator.add(entity);
230
+ return component;
231
+ },
232
+ getOrCreateMutable(entity, value) {
233
+ const component = data.get(entity);
234
+ if (!component) {
235
+ return this.create(entity, value);
236
+ }
237
+ else {
238
+ dirtyIterator.add(entity);
239
+ return component;
240
+ }
241
+ },
242
+ getMutable(entity) {
243
+ const component = this.getMutableOrNull(entity);
244
+ if (component === null) {
245
+ throw new Error(`[mutable] Component ${componentName} for ${entity} not found`);
246
+ }
247
+ return component;
248
+ },
249
+ *iterator() {
250
+ for (const [entity, component] of data) {
251
+ yield [entity, component];
252
+ }
253
+ },
254
+ *dirtyIterator() {
255
+ for (const entity of dirtyIterator) {
256
+ yield entity;
257
+ }
258
+ },
259
+ getCrdtUpdates: createGetCrdtMessagesForLww(componentId, timestamps, dirtyIterator, schema, data),
260
+ updateFromCrdt: createUpdateLwwFromCrdt(componentId, timestamps, schema, data),
261
+ dumpCrdtStateToBuffer: createDumpLwwFunctionFromCrdt(componentId, timestamps, schema, data)
262
+ };
263
+ }
264
+ exports.createComponentDefinitionFromSchema = createComponentDefinitionFromSchema;
@@ -0,0 +1,29 @@
1
+ import { ComponentDefinition } from './component';
2
+ /**
3
+ * @public
4
+ */
5
+ export type DeepReadonlyMap<K, V> = ReadonlyMap<K, DeepReadonly<V>>;
6
+ /**
7
+ * @public
8
+ */
9
+ export type DeepReadonlySet<T> = ReadonlySet<DeepReadonly<T>>;
10
+ /**
11
+ * @public
12
+ */
13
+ export type DeepReadonlyObject<T> = {
14
+ readonly [K in keyof T]: DeepReadonly<T[K]>;
15
+ };
16
+ /**
17
+ * @public
18
+ */
19
+ export type ReadonlyPrimitive = number | string | number[] | string[] | boolean | boolean[];
20
+ /**
21
+ * @public
22
+ */
23
+ export type ReadonlyComponentSchema<T extends [ComponentDefinition<unknown>, ...ComponentDefinition<unknown>[]]> = {
24
+ [K in keyof T]: T[K] extends ComponentDefinition<unknown> ? ReturnType<T[K]['get']> : never;
25
+ };
26
+ /**
27
+ * @public
28
+ */
29
+ export type DeepReadonly<T> = T extends ReadonlyPrimitive ? T : T extends Array<infer K> ? ReadonlyArray<DeepReadonly<K>> : T extends Map<infer K, infer V> ? DeepReadonlyMap<K, V> : T extends Set<infer M> ? DeepReadonlySet<M> : DeepReadonlyObject<T>;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deepReadonly = void 0;
4
+ /**
5
+ * @internal
6
+ */
7
+ function deepReadonly(val) {
8
+ return Object.freeze({ ...val });
9
+ }
10
+ exports.deepReadonly = deepReadonly;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @public
3
+ */
4
+ export type SystemFn = (dt: number) => void;
5
+ export declare const SYSTEMS_REGULAR_PRIORITY = 100000;
6
+ export type SystemItem = {
7
+ fn: SystemFn;
8
+ priority: number;
9
+ name?: string;
10
+ };
11
+ export declare function SystemContainer(): {
12
+ add: (fn: SystemFn, priority: number, name?: string) => void;
13
+ remove: (selector: string | SystemFn) => boolean;
14
+ getSystems(): SystemItem[];
15
+ };
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SystemContainer = exports.SYSTEMS_REGULAR_PRIORITY = void 0;
4
+ exports.SYSTEMS_REGULAR_PRIORITY = 100e3;
5
+ function SystemContainer() {
6
+ const systems = [];
7
+ function sort() {
8
+ // TODO: systems with the same priority should always have the same stable order
9
+ // add a "counter" to the System type to ensure that order
10
+ systems.sort((a, b) => b.priority - a.priority);
11
+ }
12
+ function add(fn, priority, name) {
13
+ const systemName = name ?? fn.name;
14
+ if (systems.find((item) => item.fn === fn)) {
15
+ throw new Error(`System ${JSON.stringify(systemName)} already added to the engine`);
16
+ }
17
+ systems.push({
18
+ fn,
19
+ priority,
20
+ name: systemName
21
+ });
22
+ // TODO: replace this sort by an insertion in the right place
23
+ sort();
24
+ }
25
+ function remove(selector) {
26
+ let index = -1;
27
+ if (typeof selector === 'string') {
28
+ index = systems.findIndex((item) => item.name === selector);
29
+ }
30
+ else {
31
+ index = systems.findIndex((item) => item.fn === selector);
32
+ }
33
+ if (index === -1) {
34
+ return false;
35
+ }
36
+ systems.splice(index, 1);
37
+ sort();
38
+ return true;
39
+ }
40
+ return {
41
+ add,
42
+ remove,
43
+ getSystems() {
44
+ return systems;
45
+ }
46
+ };
47
+ }
48
+ exports.SystemContainer = SystemContainer;