@dcl/hammurabi-server 1.0.0-17268386187.commit-b609629

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (520) hide show
  1. package/CLAUDE.md +90 -0
  2. package/LICENSE +201 -0
  3. package/README.md +125 -0
  4. package/dist/cli.d.ts +3 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +79 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/lib/babylon/avatar-rendering-system.d.ts +16 -0
  9. package/dist/lib/babylon/avatar-rendering-system.d.ts.map +1 -0
  10. package/dist/lib/babylon/avatar-rendering-system.js +96 -0
  11. package/dist/lib/babylon/avatar-rendering-system.js.map +1 -0
  12. package/dist/lib/babylon/avatars/AvatarRenderer.d.ts +40 -0
  13. package/dist/lib/babylon/avatars/AvatarRenderer.d.ts.map +1 -0
  14. package/dist/lib/babylon/avatars/AvatarRenderer.js +260 -0
  15. package/dist/lib/babylon/avatars/AvatarRenderer.js.map +1 -0
  16. package/dist/lib/babylon/avatars/CharacterController.d.ts +88 -0
  17. package/dist/lib/babylon/avatars/CharacterController.d.ts.map +1 -0
  18. package/dist/lib/babylon/avatars/CharacterController.js +463 -0
  19. package/dist/lib/babylon/avatars/CharacterController.js.map +1 -0
  20. package/dist/lib/babylon/avatars/adr-65/body.d.ts +4 -0
  21. package/dist/lib/babylon/avatars/adr-65/body.d.ts.map +1 -0
  22. package/dist/lib/babylon/avatars/adr-65/body.js +47 -0
  23. package/dist/lib/babylon/avatars/adr-65/body.js.map +1 -0
  24. package/dist/lib/babylon/avatars/adr-65/customizations.d.ts +11 -0
  25. package/dist/lib/babylon/avatars/adr-65/customizations.d.ts.map +1 -0
  26. package/dist/lib/babylon/avatars/adr-65/customizations.js +111 -0
  27. package/dist/lib/babylon/avatars/adr-65/customizations.js.map +1 -0
  28. package/dist/lib/babylon/avatars/adr-65/emote.d.ts +9 -0
  29. package/dist/lib/babylon/avatars/adr-65/emote.d.ts.map +1 -0
  30. package/dist/lib/babylon/avatars/adr-65/emote.js +46 -0
  31. package/dist/lib/babylon/avatars/adr-65/emote.js.map +1 -0
  32. package/dist/lib/babylon/avatars/adr-65/loader.d.ts +8 -0
  33. package/dist/lib/babylon/avatars/adr-65/loader.d.ts.map +1 -0
  34. package/dist/lib/babylon/avatars/adr-65/loader.js +54 -0
  35. package/dist/lib/babylon/avatars/adr-65/loader.js.map +1 -0
  36. package/dist/lib/babylon/avatars/adr-65/representation.d.ts +12 -0
  37. package/dist/lib/babylon/avatars/adr-65/representation.d.ts.map +1 -0
  38. package/dist/lib/babylon/avatars/adr-65/representation.js +77 -0
  39. package/dist/lib/babylon/avatars/adr-65/representation.js.map +1 -0
  40. package/dist/lib/babylon/avatars/adr-65/slots.d.ts +5 -0
  41. package/dist/lib/babylon/avatars/adr-65/slots.d.ts.map +1 -0
  42. package/dist/lib/babylon/avatars/adr-65/slots.js +62 -0
  43. package/dist/lib/babylon/avatars/adr-65/slots.js.map +1 -0
  44. package/dist/lib/babylon/avatars/adr-65/types.d.ts +17 -0
  45. package/dist/lib/babylon/avatars/adr-65/types.d.ts.map +1 -0
  46. package/dist/lib/babylon/avatars/adr-65/types.js +3 -0
  47. package/dist/lib/babylon/avatars/adr-65/types.js.map +1 -0
  48. package/dist/lib/babylon/avatars/adr-65/utils.d.ts +8 -0
  49. package/dist/lib/babylon/avatars/adr-65/utils.d.ts.map +1 -0
  50. package/dist/lib/babylon/avatars/adr-65/utils.js +29 -0
  51. package/dist/lib/babylon/avatars/adr-65/utils.js.map +1 -0
  52. package/dist/lib/babylon/avatars/adr-65/wearable.d.ts +7 -0
  53. package/dist/lib/babylon/avatars/adr-65/wearable.d.ts.map +1 -0
  54. package/dist/lib/babylon/avatars/adr-65/wearable.js +64 -0
  55. package/dist/lib/babylon/avatars/adr-65/wearable.js.map +1 -0
  56. package/dist/lib/babylon/avatars/avatar-asset-manager.d.ts +12 -0
  57. package/dist/lib/babylon/avatars/avatar-asset-manager.d.ts.map +1 -0
  58. package/dist/lib/babylon/avatars/avatar-asset-manager.js +31 -0
  59. package/dist/lib/babylon/avatars/avatar-asset-manager.js.map +1 -0
  60. package/dist/lib/babylon/avatars/loader.d.ts +6 -0
  61. package/dist/lib/babylon/avatars/loader.d.ts.map +1 -0
  62. package/dist/lib/babylon/avatars/loader.js +108 -0
  63. package/dist/lib/babylon/avatars/loader.js.map +1 -0
  64. package/dist/lib/babylon/avatars/urn.d.ts +2 -0
  65. package/dist/lib/babylon/avatars/urn.d.ts.map +1 -0
  66. package/dist/lib/babylon/avatars/urn.js +9 -0
  67. package/dist/lib/babylon/avatars/urn.js.map +1 -0
  68. package/dist/lib/babylon/index.d.ts +6 -0
  69. package/dist/lib/babylon/index.d.ts.map +1 -0
  70. package/dist/lib/babylon/index.js +85 -0
  71. package/dist/lib/babylon/index.js.map +1 -0
  72. package/dist/lib/babylon/input.d.ts +35 -0
  73. package/dist/lib/babylon/input.d.ts.map +1 -0
  74. package/dist/lib/babylon/input.js +137 -0
  75. package/dist/lib/babylon/input.js.map +1 -0
  76. package/dist/lib/babylon/scene/AssetManager.d.ts +19 -0
  77. package/dist/lib/babylon/scene/AssetManager.d.ts.map +1 -0
  78. package/dist/lib/babylon/scene/AssetManager.js +271 -0
  79. package/dist/lib/babylon/scene/AssetManager.js.map +1 -0
  80. package/dist/lib/babylon/scene/BabylonEntity.d.ts +84 -0
  81. package/dist/lib/babylon/scene/BabylonEntity.d.ts.map +1 -0
  82. package/dist/lib/babylon/scene/BabylonEntity.js +174 -0
  83. package/dist/lib/babylon/scene/BabylonEntity.js.map +1 -0
  84. package/dist/lib/babylon/scene/connect-context-rpc.d.ts +8 -0
  85. package/dist/lib/babylon/scene/connect-context-rpc.d.ts.map +1 -0
  86. package/dist/lib/babylon/scene/connect-context-rpc.js +210 -0
  87. package/dist/lib/babylon/scene/connect-context-rpc.js.map +1 -0
  88. package/dist/lib/babylon/scene/coordinates.d.ts +5 -0
  89. package/dist/lib/babylon/scene/coordinates.d.ts.map +1 -0
  90. package/dist/lib/babylon/scene/coordinates.js +17 -0
  91. package/dist/lib/babylon/scene/coordinates.js.map +1 -0
  92. package/dist/lib/babylon/scene/hot-reload.d.ts +9 -0
  93. package/dist/lib/babylon/scene/hot-reload.d.ts.map +1 -0
  94. package/dist/lib/babylon/scene/hot-reload.js +65 -0
  95. package/dist/lib/babylon/scene/hot-reload.js.map +1 -0
  96. package/dist/lib/babylon/scene/load.d.ts +54 -0
  97. package/dist/lib/babylon/scene/load.d.ts.map +1 -0
  98. package/dist/lib/babylon/scene/load.js +154 -0
  99. package/dist/lib/babylon/scene/load.js.map +1 -0
  100. package/dist/lib/babylon/scene/logic/apply-animations.d.ts +3 -0
  101. package/dist/lib/babylon/scene/logic/apply-animations.d.ts.map +1 -0
  102. package/dist/lib/babylon/scene/logic/apply-animations.js +50 -0
  103. package/dist/lib/babylon/scene/logic/apply-animations.js.map +1 -0
  104. package/dist/lib/babylon/scene/logic/billboards.d.ts +3 -0
  105. package/dist/lib/babylon/scene/logic/billboards.d.ts.map +1 -0
  106. package/dist/lib/babylon/scene/logic/billboards.js +12 -0
  107. package/dist/lib/babylon/scene/logic/billboards.js.map +1 -0
  108. package/dist/lib/babylon/scene/logic/camera-follows-player.d.ts +7 -0
  109. package/dist/lib/babylon/scene/logic/camera-follows-player.d.ts.map +1 -0
  110. package/dist/lib/babylon/scene/logic/camera-follows-player.js +35 -0
  111. package/dist/lib/babylon/scene/logic/camera-follows-player.js.map +1 -0
  112. package/dist/lib/babylon/scene/logic/colliders.d.ts +9 -0
  113. package/dist/lib/babylon/scene/logic/colliders.d.ts.map +1 -0
  114. package/dist/lib/babylon/scene/logic/colliders.js +79 -0
  115. package/dist/lib/babylon/scene/logic/colliders.js.map +1 -0
  116. package/dist/lib/babylon/scene/logic/cyclic-transform.d.ts +12 -0
  117. package/dist/lib/babylon/scene/logic/cyclic-transform.d.ts.map +1 -0
  118. package/dist/lib/babylon/scene/logic/cyclic-transform.js +67 -0
  119. package/dist/lib/babylon/scene/logic/cyclic-transform.js.map +1 -0
  120. package/dist/lib/babylon/scene/logic/delayed-interpolation.d.ts +27 -0
  121. package/dist/lib/babylon/scene/logic/delayed-interpolation.d.ts.map +1 -0
  122. package/dist/lib/babylon/scene/logic/delayed-interpolation.js +49 -0
  123. package/dist/lib/babylon/scene/logic/delayed-interpolation.js.map +1 -0
  124. package/dist/lib/babylon/scene/logic/easings.d.ts +7 -0
  125. package/dist/lib/babylon/scene/logic/easings.d.ts.map +1 -0
  126. package/dist/lib/babylon/scene/logic/easings.js +100 -0
  127. package/dist/lib/babylon/scene/logic/easings.js.map +1 -0
  128. package/dist/lib/babylon/scene/logic/hide-camera-obstuction-system.d.ts +5 -0
  129. package/dist/lib/babylon/scene/logic/hide-camera-obstuction-system.d.ts.map +1 -0
  130. package/dist/lib/babylon/scene/logic/hide-camera-obstuction-system.js +145 -0
  131. package/dist/lib/babylon/scene/logic/hide-camera-obstuction-system.js.map +1 -0
  132. package/dist/lib/babylon/scene/logic/local-avatar-scene.d.ts +10 -0
  133. package/dist/lib/babylon/scene/logic/local-avatar-scene.d.ts.map +1 -0
  134. package/dist/lib/babylon/scene/logic/local-avatar-scene.js +50 -0
  135. package/dist/lib/babylon/scene/logic/local-avatar-scene.js.map +1 -0
  136. package/dist/lib/babylon/scene/logic/pointer-events.d.ts +12 -0
  137. package/dist/lib/babylon/scene/logic/pointer-events.d.ts.map +1 -0
  138. package/dist/lib/babylon/scene/logic/pointer-events.js +199 -0
  139. package/dist/lib/babylon/scene/logic/pointer-events.js.map +1 -0
  140. package/dist/lib/babylon/scene/logic/raycasts.d.ts +21 -0
  141. package/dist/lib/babylon/scene/logic/raycasts.d.ts.map +1 -0
  142. package/dist/lib/babylon/scene/logic/raycasts.js +142 -0
  143. package/dist/lib/babylon/scene/logic/raycasts.js.map +1 -0
  144. package/dist/lib/babylon/scene/logic/static-entities.d.ts +18 -0
  145. package/dist/lib/babylon/scene/logic/static-entities.d.ts.map +1 -0
  146. package/dist/lib/babylon/scene/logic/static-entities.js +64 -0
  147. package/dist/lib/babylon/scene/logic/static-entities.js.map +1 -0
  148. package/dist/lib/babylon/scene/nodejs-runtime.d.ts +4 -0
  149. package/dist/lib/babylon/scene/nodejs-runtime.d.ts.map +1 -0
  150. package/dist/lib/babylon/scene/nodejs-runtime.js +100 -0
  151. package/dist/lib/babylon/scene/nodejs-runtime.js.map +1 -0
  152. package/dist/lib/babylon/scene/scene-context.d.ts +116 -0
  153. package/dist/lib/babylon/scene/scene-context.d.ts.map +1 -0
  154. package/dist/lib/babylon/scene/scene-context.js +492 -0
  155. package/dist/lib/babylon/scene/scene-context.js.map +1 -0
  156. package/dist/lib/babylon/scene/scene-culling.d.ts +6 -0
  157. package/dist/lib/babylon/scene/scene-culling.d.ts.map +1 -0
  158. package/dist/lib/babylon/scene/scene-culling.js +23 -0
  159. package/dist/lib/babylon/scene/scene-culling.js.map +1 -0
  160. package/dist/lib/babylon/scene/update-scheduler.d.ts +7 -0
  161. package/dist/lib/babylon/scene/update-scheduler.d.ts.map +1 -0
  162. package/dist/lib/babylon/scene/update-scheduler.js +40 -0
  163. package/dist/lib/babylon/scene/update-scheduler.js.map +1 -0
  164. package/dist/lib/babylon/time-based-animation.d.ts +13 -0
  165. package/dist/lib/babylon/time-based-animation.d.ts.map +1 -0
  166. package/dist/lib/babylon/time-based-animation.js +35 -0
  167. package/dist/lib/babylon/time-based-animation.js.map +1 -0
  168. package/dist/lib/babylon/visual/ambientLights.d.ts +6 -0
  169. package/dist/lib/babylon/visual/ambientLights.d.ts.map +1 -0
  170. package/dist/lib/babylon/visual/ambientLights.js +65 -0
  171. package/dist/lib/babylon/visual/ambientLights.js.map +1 -0
  172. package/dist/lib/babylon/visual/glowLayer.d.ts +6 -0
  173. package/dist/lib/babylon/visual/glowLayer.d.ts.map +1 -0
  174. package/dist/lib/babylon/visual/glowLayer.js +59 -0
  175. package/dist/lib/babylon/visual/glowLayer.js.map +1 -0
  176. package/dist/lib/babylon/visual/parcelOutline.d.ts +7 -0
  177. package/dist/lib/babylon/visual/parcelOutline.d.ts.map +1 -0
  178. package/dist/lib/babylon/visual/parcelOutline.js +88 -0
  179. package/dist/lib/babylon/visual/parcelOutline.js.map +1 -0
  180. package/dist/lib/babylon/visual/reticle.d.ts +3 -0
  181. package/dist/lib/babylon/visual/reticle.d.ts.map +1 -0
  182. package/dist/lib/babylon/visual/reticle.js +60 -0
  183. package/dist/lib/babylon/visual/reticle.js.map +1 -0
  184. package/dist/lib/babylon/visual/ui.d.ts +8 -0
  185. package/dist/lib/babylon/visual/ui.d.ts.map +1 -0
  186. package/dist/lib/babylon/visual/ui.js +54 -0
  187. package/dist/lib/babylon/visual/ui.js.map +1 -0
  188. package/dist/lib/common-runtime/game-loop.d.ts +4 -0
  189. package/dist/lib/common-runtime/game-loop.d.ts.map +1 -0
  190. package/dist/lib/common-runtime/game-loop.js +31 -0
  191. package/dist/lib/common-runtime/game-loop.js.map +1 -0
  192. package/dist/lib/common-runtime/modules.d.ts +244 -0
  193. package/dist/lib/common-runtime/modules.d.ts.map +1 -0
  194. package/dist/lib/common-runtime/modules.js +74 -0
  195. package/dist/lib/common-runtime/modules.js.map +1 -0
  196. package/dist/lib/common-runtime/startup.d.ts +8 -0
  197. package/dist/lib/common-runtime/startup.d.ts.map +1 -0
  198. package/dist/lib/common-runtime/startup.js +45 -0
  199. package/dist/lib/common-runtime/startup.js.map +1 -0
  200. package/dist/lib/common-runtime/types.d.ts +15 -0
  201. package/dist/lib/common-runtime/types.d.ts.map +1 -0
  202. package/dist/lib/common-runtime/types.js +7 -0
  203. package/dist/lib/common-runtime/types.js.map +1 -0
  204. package/dist/lib/decentraland/ByteBuffer/index.d.ts +75 -0
  205. package/dist/lib/decentraland/ByteBuffer/index.d.ts.map +1 -0
  206. package/dist/lib/decentraland/ByteBuffer/index.js +279 -0
  207. package/dist/lib/decentraland/ByteBuffer/index.js.map +1 -0
  208. package/dist/lib/decentraland/ByteBuffer/types.d.ts +109 -0
  209. package/dist/lib/decentraland/ByteBuffer/types.d.ts.map +1 -0
  210. package/dist/lib/decentraland/ByteBuffer/types.js +3 -0
  211. package/dist/lib/decentraland/ByteBuffer/types.js.map +1 -0
  212. package/dist/lib/decentraland/communications/CommsTransportWrapper.d.ts +45 -0
  213. package/dist/lib/decentraland/communications/CommsTransportWrapper.d.ts.map +1 -0
  214. package/dist/lib/decentraland/communications/CommsTransportWrapper.js +174 -0
  215. package/dist/lib/decentraland/communications/CommsTransportWrapper.js.map +1 -0
  216. package/dist/lib/decentraland/communications/avatar-communication-system.d.ts +18 -0
  217. package/dist/lib/decentraland/communications/avatar-communication-system.d.ts.map +1 -0
  218. package/dist/lib/decentraland/communications/avatar-communication-system.js +203 -0
  219. package/dist/lib/decentraland/communications/avatar-communication-system.js.map +1 -0
  220. package/dist/lib/decentraland/communications/connect-adapter.d.ts +5 -0
  221. package/dist/lib/decentraland/communications/connect-adapter.d.ts.map +1 -0
  222. package/dist/lib/decentraland/communications/connect-adapter.js +110 -0
  223. package/dist/lib/decentraland/communications/connect-adapter.js.map +1 -0
  224. package/dist/lib/decentraland/communications/connect-transport.d.ts +5 -0
  225. package/dist/lib/decentraland/communications/connect-transport.d.ts.map +1 -0
  226. package/dist/lib/decentraland/communications/connect-transport.js +32 -0
  227. package/dist/lib/decentraland/communications/connect-transport.js.map +1 -0
  228. package/dist/lib/decentraland/communications/networked-profile-system.d.ts +10 -0
  229. package/dist/lib/decentraland/communications/networked-profile-system.d.ts.map +1 -0
  230. package/dist/lib/decentraland/communications/networked-profile-system.js +73 -0
  231. package/dist/lib/decentraland/communications/networked-profile-system.js.map +1 -0
  232. package/dist/lib/decentraland/communications/player-entity-manager.d.ts +55 -0
  233. package/dist/lib/decentraland/communications/player-entity-manager.d.ts.map +1 -0
  234. package/dist/lib/decentraland/communications/player-entity-manager.js +167 -0
  235. package/dist/lib/decentraland/communications/player-entity-manager.js.map +1 -0
  236. package/dist/lib/decentraland/communications/position-report-system.d.ts +8 -0
  237. package/dist/lib/decentraland/communications/position-report-system.d.ts.map +1 -0
  238. package/dist/lib/decentraland/communications/position-report-system.js +51 -0
  239. package/dist/lib/decentraland/communications/position-report-system.js.map +1 -0
  240. package/dist/lib/decentraland/communications/realm-communications-system.d.ts +17 -0
  241. package/dist/lib/decentraland/communications/realm-communications-system.d.ts.map +1 -0
  242. package/dist/lib/decentraland/communications/realm-communications-system.js +111 -0
  243. package/dist/lib/decentraland/communications/realm-communications-system.js.map +1 -0
  244. package/dist/lib/decentraland/communications/scene-comms.d.ts +9 -0
  245. package/dist/lib/decentraland/communications/scene-comms.d.ts.map +1 -0
  246. package/dist/lib/decentraland/communications/scene-comms.js +20 -0
  247. package/dist/lib/decentraland/communications/scene-comms.js.map +1 -0
  248. package/dist/lib/decentraland/communications/transports/livekit.d.ts +27 -0
  249. package/dist/lib/decentraland/communications/transports/livekit.d.ts.map +1 -0
  250. package/dist/lib/decentraland/communications/transports/livekit.js +135 -0
  251. package/dist/lib/decentraland/communications/transports/livekit.js.map +1 -0
  252. package/dist/lib/decentraland/communications/transports/ws-room.d.ts +26 -0
  253. package/dist/lib/decentraland/communications/transports/ws-room.d.ts.map +1 -0
  254. package/dist/lib/decentraland/communications/transports/ws-room.js +235 -0
  255. package/dist/lib/decentraland/communications/transports/ws-room.js.map +1 -0
  256. package/dist/lib/decentraland/communications/types.d.ts +76 -0
  257. package/dist/lib/decentraland/communications/types.d.ts.map +1 -0
  258. package/dist/lib/decentraland/communications/types.js +6 -0
  259. package/dist/lib/decentraland/communications/types.js.map +1 -0
  260. package/dist/lib/decentraland/communications/ws-async-channel.d.ts +6 -0
  261. package/dist/lib/decentraland/communications/ws-async-channel.d.ts.map +1 -0
  262. package/dist/lib/decentraland/communications/ws-async-channel.js +52 -0
  263. package/dist/lib/decentraland/communications/ws-async-channel.js.map +1 -0
  264. package/dist/lib/decentraland/crdt-internal/components.d.ts +156 -0
  265. package/dist/lib/decentraland/crdt-internal/components.d.ts.map +1 -0
  266. package/dist/lib/decentraland/crdt-internal/components.js +8 -0
  267. package/dist/lib/decentraland/crdt-internal/components.js.map +1 -0
  268. package/dist/lib/decentraland/crdt-internal/conflict-resolution.d.ts +45 -0
  269. package/dist/lib/decentraland/crdt-internal/conflict-resolution.d.ts.map +1 -0
  270. package/dist/lib/decentraland/crdt-internal/conflict-resolution.js +49 -0
  271. package/dist/lib/decentraland/crdt-internal/conflict-resolution.js.map +1 -0
  272. package/dist/lib/decentraland/crdt-internal/dataCompare.d.ts +6 -0
  273. package/dist/lib/decentraland/crdt-internal/dataCompare.d.ts.map +1 -0
  274. package/dist/lib/decentraland/crdt-internal/dataCompare.js +34 -0
  275. package/dist/lib/decentraland/crdt-internal/dataCompare.js.map +1 -0
  276. package/dist/lib/decentraland/crdt-internal/generational-index-pool.d.ts +22 -0
  277. package/dist/lib/decentraland/crdt-internal/generational-index-pool.d.ts.map +1 -0
  278. package/dist/lib/decentraland/crdt-internal/generational-index-pool.js +91 -0
  279. package/dist/lib/decentraland/crdt-internal/generational-index-pool.js.map +1 -0
  280. package/dist/lib/decentraland/crdt-internal/grow-only-set.d.ts +10 -0
  281. package/dist/lib/decentraland/crdt-internal/grow-only-set.d.ts.map +1 -0
  282. package/dist/lib/decentraland/crdt-internal/grow-only-set.js +129 -0
  283. package/dist/lib/decentraland/crdt-internal/grow-only-set.js.map +1 -0
  284. package/dist/lib/decentraland/crdt-internal/last-write-win-element-set.d.ts +11 -0
  285. package/dist/lib/decentraland/crdt-internal/last-write-win-element-set.d.ts.map +1 -0
  286. package/dist/lib/decentraland/crdt-internal/last-write-win-element-set.js +224 -0
  287. package/dist/lib/decentraland/crdt-internal/last-write-win-element-set.js.map +1 -0
  288. package/dist/lib/decentraland/crdt-wire-protocol/appendValue.d.ts +15 -0
  289. package/dist/lib/decentraland/crdt-wire-protocol/appendValue.d.ts.map +1 -0
  290. package/dist/lib/decentraland/crdt-wire-protocol/appendValue.js +50 -0
  291. package/dist/lib/decentraland/crdt-wire-protocol/appendValue.js.map +1 -0
  292. package/dist/lib/decentraland/crdt-wire-protocol/crdtMessageProtocol.d.ts +31 -0
  293. package/dist/lib/decentraland/crdt-wire-protocol/crdtMessageProtocol.d.ts.map +1 -0
  294. package/dist/lib/decentraland/crdt-wire-protocol/crdtMessageProtocol.js +72 -0
  295. package/dist/lib/decentraland/crdt-wire-protocol/crdtMessageProtocol.js.map +1 -0
  296. package/dist/lib/decentraland/crdt-wire-protocol/deleteComponent.d.ts +14 -0
  297. package/dist/lib/decentraland/crdt-wire-protocol/deleteComponent.d.ts.map +1 -0
  298. package/dist/lib/decentraland/crdt-wire-protocol/deleteComponent.js +44 -0
  299. package/dist/lib/decentraland/crdt-wire-protocol/deleteComponent.js.map +1 -0
  300. package/dist/lib/decentraland/crdt-wire-protocol/deleteEntity.d.ts +11 -0
  301. package/dist/lib/decentraland/crdt-wire-protocol/deleteEntity.d.ts.map +1 -0
  302. package/dist/lib/decentraland/crdt-wire-protocol/deleteEntity.js +35 -0
  303. package/dist/lib/decentraland/crdt-wire-protocol/deleteEntity.js.map +1 -0
  304. package/dist/lib/decentraland/crdt-wire-protocol/index.d.ts +8 -0
  305. package/dist/lib/decentraland/crdt-wire-protocol/index.d.ts.map +1 -0
  306. package/dist/lib/decentraland/crdt-wire-protocol/index.js +24 -0
  307. package/dist/lib/decentraland/crdt-wire-protocol/index.js.map +1 -0
  308. package/dist/lib/decentraland/crdt-wire-protocol/message.d.ts +17 -0
  309. package/dist/lib/decentraland/crdt-wire-protocol/message.d.ts.map +1 -0
  310. package/dist/lib/decentraland/crdt-wire-protocol/message.js +49 -0
  311. package/dist/lib/decentraland/crdt-wire-protocol/message.js.map +1 -0
  312. package/dist/lib/decentraland/crdt-wire-protocol/prettyPrint.d.ts +4 -0
  313. package/dist/lib/decentraland/crdt-wire-protocol/prettyPrint.d.ts.map +1 -0
  314. package/dist/lib/decentraland/crdt-wire-protocol/prettyPrint.js +26 -0
  315. package/dist/lib/decentraland/crdt-wire-protocol/prettyPrint.js.map +1 -0
  316. package/dist/lib/decentraland/crdt-wire-protocol/putComponent.d.ts +15 -0
  317. package/dist/lib/decentraland/crdt-wire-protocol/putComponent.d.ts.map +1 -0
  318. package/dist/lib/decentraland/crdt-wire-protocol/putComponent.js +48 -0
  319. package/dist/lib/decentraland/crdt-wire-protocol/putComponent.js.map +1 -0
  320. package/dist/lib/decentraland/crdt-wire-protocol/types.d.ts +80 -0
  321. package/dist/lib/decentraland/crdt-wire-protocol/types.d.ts.map +1 -0
  322. package/dist/lib/decentraland/crdt-wire-protocol/types.js +15 -0
  323. package/dist/lib/decentraland/crdt-wire-protocol/types.js.map +1 -0
  324. package/dist/lib/decentraland/identifiers.d.ts +6 -0
  325. package/dist/lib/decentraland/identifiers.d.ts.map +1 -0
  326. package/dist/lib/decentraland/identifiers.js +22 -0
  327. package/dist/lib/decentraland/identifiers.js.map +1 -0
  328. package/dist/lib/decentraland/identity/avatar.d.ts +4 -0
  329. package/dist/lib/decentraland/identity/avatar.d.ts.map +1 -0
  330. package/dist/lib/decentraland/identity/avatar.js +57 -0
  331. package/dist/lib/decentraland/identity/avatar.js.map +1 -0
  332. package/dist/lib/decentraland/identity/login.d.ts +8 -0
  333. package/dist/lib/decentraland/identity/login.d.ts.map +1 -0
  334. package/dist/lib/decentraland/identity/login.js +121 -0
  335. package/dist/lib/decentraland/identity/login.js.map +1 -0
  336. package/dist/lib/decentraland/identity/signed-fetch.d.ts +17 -0
  337. package/dist/lib/decentraland/identity/signed-fetch.d.ts.map +1 -0
  338. package/dist/lib/decentraland/identity/signed-fetch.js +47 -0
  339. package/dist/lib/decentraland/identity/signed-fetch.js.map +1 -0
  340. package/dist/lib/decentraland/identity/types.d.ts +11 -0
  341. package/dist/lib/decentraland/identity/types.d.ts.map +1 -0
  342. package/dist/lib/decentraland/identity/types.js +3 -0
  343. package/dist/lib/decentraland/identity/types.js.map +1 -0
  344. package/dist/lib/decentraland/positions.d.ts +15 -0
  345. package/dist/lib/decentraland/positions.d.ts.map +1 -0
  346. package/dist/lib/decentraland/positions.js +40 -0
  347. package/dist/lib/decentraland/positions.js.map +1 -0
  348. package/dist/lib/decentraland/realm/resolution.d.ts +2 -0
  349. package/dist/lib/decentraland/realm/resolution.d.ts.map +1 -0
  350. package/dist/lib/decentraland/realm/resolution.js +39 -0
  351. package/dist/lib/decentraland/realm/resolution.js.map +1 -0
  352. package/dist/lib/decentraland/scene/content-server-entity.d.ts +34 -0
  353. package/dist/lib/decentraland/scene/content-server-entity.d.ts.map +1 -0
  354. package/dist/lib/decentraland/scene/content-server-entity.js +22 -0
  355. package/dist/lib/decentraland/scene/content-server-entity.js.map +1 -0
  356. package/dist/lib/decentraland/scene/spawn-points.d.ts +16 -0
  357. package/dist/lib/decentraland/scene/spawn-points.d.ts.map +1 -0
  358. package/dist/lib/decentraland/scene/spawn-points.js +78 -0
  359. package/dist/lib/decentraland/scene/spawn-points.js.map +1 -0
  360. package/dist/lib/decentraland/scene/types.d.ts +38 -0
  361. package/dist/lib/decentraland/scene/types.d.ts.map +1 -0
  362. package/dist/lib/decentraland/scene/types.js +3 -0
  363. package/dist/lib/decentraland/scene/types.js.map +1 -0
  364. package/dist/lib/decentraland/sdk-components/animator-component.d.ts +3 -0
  365. package/dist/lib/decentraland/sdk-components/animator-component.d.ts.map +1 -0
  366. package/dist/lib/decentraland/sdk-components/animator-component.js +12 -0
  367. package/dist/lib/decentraland/sdk-components/animator-component.js.map +1 -0
  368. package/dist/lib/decentraland/sdk-components/avatar-base.d.ts +5 -0
  369. package/dist/lib/decentraland/sdk-components/avatar-base.d.ts.map +1 -0
  370. package/dist/lib/decentraland/sdk-components/avatar-base.js +40 -0
  371. package/dist/lib/decentraland/sdk-components/avatar-base.js.map +1 -0
  372. package/dist/lib/decentraland/sdk-components/avatar-customizations.d.ts +5 -0
  373. package/dist/lib/decentraland/sdk-components/avatar-customizations.d.ts.map +1 -0
  374. package/dist/lib/decentraland/sdk-components/avatar-customizations.js +9 -0
  375. package/dist/lib/decentraland/sdk-components/avatar-customizations.js.map +1 -0
  376. package/dist/lib/decentraland/sdk-components/avatar-shape.d.ts +5 -0
  377. package/dist/lib/decentraland/sdk-components/avatar-shape.d.ts.map +1 -0
  378. package/dist/lib/decentraland/sdk-components/avatar-shape.js +33 -0
  379. package/dist/lib/decentraland/sdk-components/avatar-shape.js.map +1 -0
  380. package/dist/lib/decentraland/sdk-components/billboard-component.d.ts +3 -0
  381. package/dist/lib/decentraland/sdk-components/billboard-component.d.ts.map +1 -0
  382. package/dist/lib/decentraland/sdk-components/billboard-component.js +15 -0
  383. package/dist/lib/decentraland/sdk-components/billboard-component.js.map +1 -0
  384. package/dist/lib/decentraland/sdk-components/delayed-interpolation.d.ts +3 -0
  385. package/dist/lib/decentraland/sdk-components/delayed-interpolation.d.ts.map +1 -0
  386. package/dist/lib/decentraland/sdk-components/delayed-interpolation.js +15 -0
  387. package/dist/lib/decentraland/sdk-components/delayed-interpolation.js.map +1 -0
  388. package/dist/lib/decentraland/sdk-components/engine-info.d.ts +3 -0
  389. package/dist/lib/decentraland/sdk-components/engine-info.d.ts.map +1 -0
  390. package/dist/lib/decentraland/sdk-components/engine-info.js +7 -0
  391. package/dist/lib/decentraland/sdk-components/engine-info.js.map +1 -0
  392. package/dist/lib/decentraland/sdk-components/gltf-component.d.ts +3 -0
  393. package/dist/lib/decentraland/sdk-components/gltf-component.d.ts.map +1 -0
  394. package/dist/lib/decentraland/sdk-components/gltf-component.js +114 -0
  395. package/dist/lib/decentraland/sdk-components/gltf-component.js.map +1 -0
  396. package/dist/lib/decentraland/sdk-components/gltf-loading-state.d.ts +3 -0
  397. package/dist/lib/decentraland/sdk-components/gltf-loading-state.d.ts.map +1 -0
  398. package/dist/lib/decentraland/sdk-components/gltf-loading-state.js +7 -0
  399. package/dist/lib/decentraland/sdk-components/gltf-loading-state.js.map +1 -0
  400. package/dist/lib/decentraland/sdk-components/material-component.d.ts +5 -0
  401. package/dist/lib/decentraland/sdk-components/material-component.d.ts.map +1 -0
  402. package/dist/lib/decentraland/sdk-components/material-component.js +92 -0
  403. package/dist/lib/decentraland/sdk-components/material-component.js.map +1 -0
  404. package/dist/lib/decentraland/sdk-components/mesh-collider-component.d.ts +3 -0
  405. package/dist/lib/decentraland/sdk-components/mesh-collider-component.d.ts.map +1 -0
  406. package/dist/lib/decentraland/sdk-components/mesh-collider-component.js +37 -0
  407. package/dist/lib/decentraland/sdk-components/mesh-collider-component.js.map +1 -0
  408. package/dist/lib/decentraland/sdk-components/mesh-renderer-component.d.ts +5 -0
  409. package/dist/lib/decentraland/sdk-components/mesh-renderer-component.d.ts.map +1 -0
  410. package/dist/lib/decentraland/sdk-components/mesh-renderer-component.js +111 -0
  411. package/dist/lib/decentraland/sdk-components/mesh-renderer-component.js.map +1 -0
  412. package/dist/lib/decentraland/sdk-components/pb-based-component-helper.d.ts +10 -0
  413. package/dist/lib/decentraland/sdk-components/pb-based-component-helper.d.ts.map +1 -0
  414. package/dist/lib/decentraland/sdk-components/pb-based-component-helper.js +23 -0
  415. package/dist/lib/decentraland/sdk-components/pb-based-component-helper.js.map +1 -0
  416. package/dist/lib/decentraland/sdk-components/player-identity-data.d.ts +3 -0
  417. package/dist/lib/decentraland/sdk-components/player-identity-data.d.ts.map +1 -0
  418. package/dist/lib/decentraland/sdk-components/player-identity-data.js +7 -0
  419. package/dist/lib/decentraland/sdk-components/player-identity-data.js.map +1 -0
  420. package/dist/lib/decentraland/sdk-components/pointer-events-result.d.ts +3 -0
  421. package/dist/lib/decentraland/sdk-components/pointer-events-result.d.ts.map +1 -0
  422. package/dist/lib/decentraland/sdk-components/pointer-events-result.js +7 -0
  423. package/dist/lib/decentraland/sdk-components/pointer-events-result.js.map +1 -0
  424. package/dist/lib/decentraland/sdk-components/pointer-events.d.ts +3 -0
  425. package/dist/lib/decentraland/sdk-components/pointer-events.d.ts.map +1 -0
  426. package/dist/lib/decentraland/sdk-components/pointer-events.js +15 -0
  427. package/dist/lib/decentraland/sdk-components/pointer-events.js.map +1 -0
  428. package/dist/lib/decentraland/sdk-components/raycast-component.d.ts +5 -0
  429. package/dist/lib/decentraland/sdk-components/raycast-component.d.ts.map +1 -0
  430. package/dist/lib/decentraland/sdk-components/raycast-component.js +66 -0
  431. package/dist/lib/decentraland/sdk-components/raycast-component.js.map +1 -0
  432. package/dist/lib/decentraland/sdk-components/transform-component.d.ts +13 -0
  433. package/dist/lib/decentraland/sdk-components/transform-component.d.ts.map +1 -0
  434. package/dist/lib/decentraland/sdk-components/transform-component.js +84 -0
  435. package/dist/lib/decentraland/sdk-components/transform-component.js.map +1 -0
  436. package/dist/lib/decentraland/sdk-components/tween.d.ts +3 -0
  437. package/dist/lib/decentraland/sdk-components/tween.d.ts.map +1 -0
  438. package/dist/lib/decentraland/sdk-components/tween.js +15 -0
  439. package/dist/lib/decentraland/sdk-components/tween.js.map +1 -0
  440. package/dist/lib/decentraland/state.d.ts +24 -0
  441. package/dist/lib/decentraland/state.d.ts.map +1 -0
  442. package/dist/lib/decentraland/state.js +16 -0
  443. package/dist/lib/decentraland/state.js.map +1 -0
  444. package/dist/lib/decentraland/system.d.ts +7 -0
  445. package/dist/lib/decentraland/system.d.ts.map +1 -0
  446. package/dist/lib/decentraland/system.js +13 -0
  447. package/dist/lib/decentraland/system.js.map +1 -0
  448. package/dist/lib/decentraland/types.d.ts +9 -0
  449. package/dist/lib/decentraland/types.d.ts.map +1 -0
  450. package/dist/lib/decentraland/types.js +3 -0
  451. package/dist/lib/decentraland/types.js.map +1 -0
  452. package/dist/lib/decentraland/virtual-scene.d.ts +12 -0
  453. package/dist/lib/decentraland/virtual-scene.d.ts.map +1 -0
  454. package/dist/lib/decentraland/virtual-scene.js +3 -0
  455. package/dist/lib/decentraland/virtual-scene.js.map +1 -0
  456. package/dist/lib/engine-main.d.ts +8 -0
  457. package/dist/lib/engine-main.d.ts.map +1 -0
  458. package/dist/lib/engine-main.js +103 -0
  459. package/dist/lib/engine-main.js.map +1 -0
  460. package/dist/lib/misc/atom.d.ts +13 -0
  461. package/dist/lib/misc/atom.d.ts.map +1 -0
  462. package/dist/lib/misc/atom.js +66 -0
  463. package/dist/lib/misc/atom.js.map +1 -0
  464. package/dist/lib/misc/bit-operations.d.ts +3 -0
  465. package/dist/lib/misc/bit-operations.d.ts.map +1 -0
  466. package/dist/lib/misc/bit-operations.js +14 -0
  467. package/dist/lib/misc/bit-operations.js.map +1 -0
  468. package/dist/lib/misc/flat-fetch.d.ts +16 -0
  469. package/dist/lib/misc/flat-fetch.d.ts.map +1 -0
  470. package/dist/lib/misc/flat-fetch.js +26 -0
  471. package/dist/lib/misc/flat-fetch.js.map +1 -0
  472. package/dist/lib/misc/json.d.ts +3 -0
  473. package/dist/lib/misc/json.d.ts.map +1 -0
  474. package/dist/lib/misc/json.js +24 -0
  475. package/dist/lib/misc/json.js.map +1 -0
  476. package/dist/lib/misc/logger.d.ts +6 -0
  477. package/dist/lib/misc/logger.d.ts.map +1 -0
  478. package/dist/lib/misc/logger.js +24 -0
  479. package/dist/lib/misc/logger.js.map +1 -0
  480. package/dist/lib/misc/memoize.d.ts +2 -0
  481. package/dist/lib/misc/memoize.d.ts.map +1 -0
  482. package/dist/lib/misc/memoize.js +16 -0
  483. package/dist/lib/misc/memoize.js.map +1 -0
  484. package/dist/lib/misc/promises.d.ts +3 -0
  485. package/dist/lib/misc/promises.d.ts.map +1 -0
  486. package/dist/lib/misc/promises.js +14 -0
  487. package/dist/lib/misc/promises.js.map +1 -0
  488. package/dist/lib/polyfills/xmlhttprequest.d.ts +6 -0
  489. package/dist/lib/polyfills/xmlhttprequest.d.ts.map +1 -0
  490. package/dist/lib/polyfills/xmlhttprequest.js +127 -0
  491. package/dist/lib/polyfills/xmlhttprequest.js.map +1 -0
  492. package/dist/lib/quick-js/convert-handles.d.ts +14 -0
  493. package/dist/lib/quick-js/convert-handles.d.ts.map +1 -0
  494. package/dist/lib/quick-js/convert-handles.js +83 -0
  495. package/dist/lib/quick-js/convert-handles.js.map +1 -0
  496. package/dist/lib/quick-js/index.d.ts +12 -0
  497. package/dist/lib/quick-js/index.d.ts.map +1 -0
  498. package/dist/lib/quick-js/index.js +159 -0
  499. package/dist/lib/quick-js/index.js.map +1 -0
  500. package/dist/lib/quick-js/rpc-scene-runtime.d.ts +13 -0
  501. package/dist/lib/quick-js/rpc-scene-runtime.d.ts.map +1 -0
  502. package/dist/lib/quick-js/rpc-scene-runtime.js +32 -0
  503. package/dist/lib/quick-js/rpc-scene-runtime.js.map +1 -0
  504. package/dist/lib/quick-js/types.d.ts +35 -0
  505. package/dist/lib/quick-js/types.d.ts.map +1 -0
  506. package/dist/lib/quick-js/types.js +3 -0
  507. package/dist/lib/quick-js/types.js.map +1 -0
  508. package/dist/lib/web-worker-runtime/context.d.ts +12 -0
  509. package/dist/lib/web-worker-runtime/context.d.ts.map +1 -0
  510. package/dist/lib/web-worker-runtime/context.js +97 -0
  511. package/dist/lib/web-worker-runtime/context.js.map +1 -0
  512. package/dist/lib/web-worker-runtime/sandbox.d.ts +9 -0
  513. package/dist/lib/web-worker-runtime/sandbox.d.ts.map +1 -0
  514. package/dist/lib/web-worker-runtime/sandbox.js +98 -0
  515. package/dist/lib/web-worker-runtime/sandbox.js.map +1 -0
  516. package/dist/lib/web-worker-runtime/web-worker-scene-runtime.d.ts +13 -0
  517. package/dist/lib/web-worker-runtime/web-worker-scene-runtime.d.ts.map +1 -0
  518. package/dist/lib/web-worker-runtime/web-worker-scene-runtime.js +32 -0
  519. package/dist/lib/web-worker-runtime/web-worker-scene-runtime.js.map +1 -0
  520. package/package.json +73 -0
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isValidBillboardCombination = void 0;
4
+ const billboard_gen_1 = require("@dcl/protocol/out-js/decentraland/sdk/components/billboard.gen");
5
+ function isValidBillboardCombination(billboardMode) {
6
+ return (billboardMode == billboard_gen_1.BillboardMode.BM_NONE ||
7
+ billboardMode == billboard_gen_1.BillboardMode.BM_Y ||
8
+ billboardMode == (billboard_gen_1.BillboardMode.BM_Y | billboard_gen_1.BillboardMode.BM_X) ||
9
+ billboardMode == billboard_gen_1.BillboardMode.BM_ALL);
10
+ }
11
+ exports.isValidBillboardCombination = isValidBillboardCombination;
12
+ //# sourceMappingURL=billboards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billboards.js","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/billboards.ts"],"names":[],"mappings":";;;AAAA,kGAA+F;AAE/F,SAAgB,2BAA2B,CAAC,aAA4B;IACtE,OAAO,CACL,aAAa,IAAI,6BAAa,CAAC,OAAO;QACtC,aAAa,IAAI,6BAAa,CAAC,IAAI;QACnC,aAAa,IAAI,CAAC,6BAAa,CAAC,IAAI,GAAG,6BAAa,CAAC,IAAI,CAAC;QAC1D,aAAa,IAAI,6BAAa,CAAC,MAAM,CACtC,CAAA;AACH,CAAC;AAPD,kEAOC"}
@@ -0,0 +1,7 @@
1
+ import { ArcRotateCamera } from "@babylonjs/core";
2
+ import { CharacterController } from "../../avatars/CharacterController";
3
+ import { BabylonEntity } from "../BabylonEntity";
4
+ export declare function createCameraFollowsPlayerSystem(camera: ArcRotateCamera, playerEntity: BabylonEntity, characterController: CharacterController): {
5
+ update(): void;
6
+ };
7
+ //# sourceMappingURL=camera-follows-player.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera-follows-player.d.ts","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/camera-follows-player.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA0B,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB;;EAiC7I"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCameraFollowsPlayerSystem = void 0;
4
+ const core_1 = require("@babylonjs/core");
5
+ const static_entities_1 = require("./static-entities");
6
+ const transform_component_1 = require("../../../decentraland/sdk-components/transform-component");
7
+ function createCameraFollowsPlayerSystem(camera, playerEntity, characterController) {
8
+ // this function updates the PlayerEntity position using the CharacterController.capsule's position
9
+ function updatePlayerEntityPositionFromCapsule(playerEntity, capsule) {
10
+ const pos = capsule.absolutePosition.clone();
11
+ pos.y -= 1; // don't know why
12
+ const t = {
13
+ parent: static_entities_1.StaticEntities.RootEntity,
14
+ position: pos,
15
+ rotation: capsule.absoluteRotationQuaternion,
16
+ scale: core_1.Vector3.One(),
17
+ };
18
+ const localAvatarScene = playerEntity.context.deref();
19
+ localAvatarScene.components[transform_component_1.transformComponent.componentId].createOrReplace(static_entities_1.StaticEntities.PlayerEntity, t);
20
+ (0, transform_component_1.applyNewTransform)(playerEntity, t);
21
+ }
22
+ return {
23
+ update() {
24
+ updatePlayerEntityPositionFromCapsule(playerEntity, characterController.capsule);
25
+ // IMPORTANT: This logic is truncated, there are many protocol defined factors
26
+ // playing with the visibility of the player. Those will be implemented in a future
27
+ // PR along with the avatar attachment components of the SDK
28
+ const playerVisible = !characterController.inFirstPerson;
29
+ playerEntity.setEnabled(playerVisible);
30
+ playerEntity.absolutePosition.addToRef(new core_1.Vector3(0, static_entities_1.PLAYER_HEIGHT, 0), camera.target);
31
+ }
32
+ };
33
+ }
34
+ exports.createCameraFollowsPlayerSystem = createCameraFollowsPlayerSystem;
35
+ //# sourceMappingURL=camera-follows-player.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera-follows-player.js","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/camera-follows-player.ts"],"names":[],"mappings":";;;AAAA,0CAA0E;AAC1E,uDAAkE;AAGlE,kGAA4H;AAE5H,SAAgB,+BAA+B,CAAC,MAAuB,EAAE,YAA2B,EAAE,mBAAwC;IAE5I,mGAAmG;IACnG,SAAS,qCAAqC,CAAC,YAA2B,EAAE,OAAsB;QAChG,MAAM,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAA;QAC5C,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA,CAAC,iBAAiB;QAE5B,MAAM,CAAC,GAAc;YACnB,MAAM,EAAE,gCAAc,CAAC,UAAU;YACjC,QAAQ,EAAE,GAAG;YACb,QAAQ,EAAE,OAAO,CAAC,0BAA0B;YAC5C,KAAK,EAAE,cAAO,CAAC,GAAG,EAAE;SACrB,CAAA;QAED,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAG,CAAA;QAEtD,gBAAgB,CAAC,UAAU,CAAC,wCAAkB,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,gCAAc,CAAC,YAAY,EAAE,CAAC,CAAC,CAAA;QAC3G,IAAA,uCAAiB,EAAC,YAAY,EAAE,CAAC,CAAC,CAAA;IACpC,CAAC;IAED,OAAO;QACL,MAAM;YACJ,qCAAqC,CAAC,YAAY,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;YAEhF,8EAA8E;YAC9E,mFAAmF;YACnF,4DAA4D;YAC5D,MAAM,aAAa,GAAG,CAAC,mBAAmB,CAAC,aAAa,CAAA;YAExD,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;YACtC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,cAAO,CAAC,CAAC,EAAE,+BAAa,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1F,CAAC;KACF,CAAA;AACH,CAAC;AAjCD,0EAiCC"}
@@ -0,0 +1,9 @@
1
+ import { AbstractMesh, Scene } from '@babylonjs/core';
2
+ import { GridMaterial } from '@babylonjs/materials';
3
+ import { BabylonEntity } from '../BabylonEntity';
4
+ export declare const floorMeshes: AbstractMesh[];
5
+ export declare const colliderMaterial: (a: Scene) => GridMaterial;
6
+ export declare function setColliderMask(mesh: AbstractMesh, layers: number): void;
7
+ export declare function getColliderLayers(mesh: AbstractMesh): number;
8
+ export declare function pickMeshesForMask(entity: BabylonEntity, mask: number): Iterable<AbstractMesh>;
9
+ //# sourceMappingURL=colliders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colliders.d.ts","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/colliders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAIhD,eAAO,MAAM,WAAW,EAAE,YAAY,EAAO,CAAA;AAI7C,eAAO,MAAM,gBAAgB,4BA6B3B,CAAA;AAGF,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAiBjE;AASD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAE5D;AAGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,CAQ7F"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pickMeshesForMask = exports.getColliderLayers = exports.setColliderMask = exports.colliderMaterial = exports.floorMeshes = void 0;
4
+ const core_1 = require("@babylonjs/core");
5
+ const materials_1 = require("@babylonjs/materials");
6
+ const memoize_1 = require("../../../misc/memoize");
7
+ const mesh_collider_gen_1 = require("@dcl/protocol/out-js/decentraland/sdk/components/mesh_collider.gen");
8
+ const bit_operations_1 = require("../../../misc/bit-operations");
9
+ const ui_1 = require("../../visual/ui");
10
+ exports.floorMeshes = [];
11
+ const colliderSymbol = Symbol('isCollider');
12
+ exports.colliderMaterial = (0, memoize_1.memoize)((scene) => {
13
+ const m = new materials_1.GridMaterial('collider-material', scene);
14
+ m.opacity = 0;
15
+ m.sideOrientation = 0;
16
+ m.disableColorWrite = true;
17
+ m.disableDepthWrite = true;
18
+ m.mainColor.set(0, 0, 0);
19
+ m.lineColor.set(0, 1, 0);
20
+ m.zOffset = -1;
21
+ m.fogEnabled = false;
22
+ m.depthFunction = 2;
23
+ m.gridRatio = .1;
24
+ m.freeze();
25
+ if (typeof OffscreenCanvas !== 'undefined') {
26
+ (0, ui_1.AddToggle)('Show Colliders', (0, ui_1.guiPanel)(scene)).onIsCheckedChangedObservable.add((v) => {
27
+ if (v) {
28
+ m.opacity = 1;
29
+ m.disableColorWrite = false;
30
+ m.disableDepthWrite = false;
31
+ }
32
+ else {
33
+ m.opacity = 0;
34
+ m.disableColorWrite = true;
35
+ m.disableDepthWrite = true;
36
+ }
37
+ });
38
+ }
39
+ return m;
40
+ });
41
+ function setColliderMask(mesh, layers) {
42
+ mesh[colliderSymbol] = layers;
43
+ if (mesh.name.endsWith('_collider')) {
44
+ mesh.material = (0, exports.colliderMaterial)(mesh.getScene());
45
+ addFloorMesh(mesh);
46
+ }
47
+ mesh.checkCollisions = (layers & mesh_collider_gen_1.ColliderLayer.CL_PHYSICS) != 0;
48
+ mesh.isPickable = (layers & mesh_collider_gen_1.ColliderLayer.CL_POINTER) != 0;
49
+ mesh.onDisposeObservable.addOnce(() => {
50
+ const ix = exports.floorMeshes.indexOf(mesh);
51
+ if (ix != -1) {
52
+ exports.floorMeshes.splice(ix, 1);
53
+ }
54
+ });
55
+ }
56
+ exports.setColliderMask = setColliderMask;
57
+ function addFloorMesh(mesh) {
58
+ const ix = exports.floorMeshes.indexOf(mesh);
59
+ if (ix !== -1) {
60
+ exports.floorMeshes.push(mesh);
61
+ }
62
+ }
63
+ function getColliderLayers(mesh) {
64
+ return mesh[colliderSymbol] || 0;
65
+ }
66
+ exports.getColliderLayers = getColliderLayers;
67
+ // this function returns the meshes that match the provided mask
68
+ function pickMeshesForMask(entity, mask) {
69
+ if (!mask)
70
+ return [];
71
+ return entity.getChildMeshes(false, (mesh) => {
72
+ if (mesh instanceof core_1.AbstractMesh) {
73
+ return (0, bit_operations_1.bitIntersectsAndContainsAny)(getColliderLayers(mesh), mask);
74
+ }
75
+ return true;
76
+ });
77
+ }
78
+ exports.pickMeshesForMask = pickMeshesForMask;
79
+ //# sourceMappingURL=colliders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colliders.js","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/colliders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { SceneContext } from "../scene-context";
2
+ /**
3
+ * This function perform the scheduled parenting operations (scene.unparentedEntities)
4
+ * and prevents cycles in the final hierarchy.
5
+ *
6
+ * If a cycle is found, then the parenting operation will remain pending until
7
+ * scene.hierarchyChanged is set to true again by a mutated TransformComponent.
8
+ *
9
+ * This function also executes iteratively while scene.hierarchyChanged==true.
10
+ */
11
+ export declare function resolveCyclicParening(scene: SceneContext): void;
12
+ //# sourceMappingURL=cyclic-transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cyclic-transform.d.ts","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/cyclic-transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAG/C;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,QA0CxD"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveCyclicParening = void 0;
4
+ /**
5
+ * This function perform the scheduled parenting operations (scene.unparentedEntities)
6
+ * and prevents cycles in the final hierarchy.
7
+ *
8
+ * If a cycle is found, then the parenting operation will remain pending until
9
+ * scene.hierarchyChanged is set to true again by a mutated TransformComponent.
10
+ *
11
+ * This function also executes iteratively while scene.hierarchyChanged==true.
12
+ */
13
+ function resolveCyclicParening(scene) {
14
+ while (scene.hierarchyChanged) {
15
+ scene.hierarchyChanged = false;
16
+ // Iterate over the unparentedEntities and try to re-parent them if there are no cycles
17
+ // > set hierarchyChanged=true in case of successful reparenting
18
+ for (const entityId of scene.unparentedEntities) {
19
+ const entity = scene.getEntityOrNull(entityId);
20
+ // pending reparentings may be outdated due to entity deletion messages
21
+ if (entity) {
22
+ const parentEntityId = entity.expectedParentEntityId;
23
+ // cancel if the entity self references itself
24
+ if (parentEntityId === entity.entityId) {
25
+ continue;
26
+ }
27
+ // cancel if the parent entity was deleted
28
+ if (scene.deletedEntities.has(parentEntityId)) {
29
+ // TODO add tests for reparenting with deleted entities
30
+ entity.parent = scene.rootNode;
31
+ scene.hierarchyChanged = true;
32
+ scene.unparentedEntities.delete(entityId);
33
+ continue;
34
+ }
35
+ // get or create the entity that should be the parent as defined per TransformComponent
36
+ const desiredParent = scene.getOrCreateEntity(parentEntityId);
37
+ // walk up the parents of the desiredParent to find the current entity, that would be a cycle
38
+ const needsCorrection = entity.parent !== desiredParent;
39
+ const hasCycle = needsCorrection && detectEntityIdInParentChain(desiredParent, entity);
40
+ if (!hasCycle) {
41
+ entity.parent = desiredParent;
42
+ scene.hierarchyChanged = true;
43
+ // remove from the unparented list
44
+ scene.unparentedEntities.delete(entityId);
45
+ }
46
+ else {
47
+ entity.parent = scene.rootNode;
48
+ }
49
+ }
50
+ }
51
+ }
52
+ }
53
+ exports.resolveCyclicParening = resolveCyclicParening;
54
+ /**
55
+ * This function walks the parents of the provided searchEntity
56
+ * @returns true if the searchEntity is present in the parenting chain
57
+ */
58
+ function detectEntityIdInParentChain(leafEntity, searchEntity) {
59
+ // walk the parents until we find the searchEntity we are looking for
60
+ let parent = leafEntity;
61
+ while (parent = parent?.parent) {
62
+ if (parent === searchEntity)
63
+ return true;
64
+ }
65
+ return false;
66
+ }
67
+ //# sourceMappingURL=cyclic-transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cyclic-transform.js","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/cyclic-transform.ts"],"names":[],"mappings":";;;AAGA;;;;;;;;GAQG;AACH,SAAgB,qBAAqB,CAAC,KAAmB;IACvD,OAAO,KAAK,CAAC,gBAAgB,EAAE;QAC7B,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAA;QAE9B,uFAAuF;QACvF,gEAAgE;QAChE,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,kBAAkB,EAAE;YAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;YAC9C,uEAAuE;YACvE,IAAI,MAAM,EAAE;gBACV,MAAM,cAAc,GAAG,MAAM,CAAC,sBAAsB,CAAA;gBAEpD,8CAA8C;gBAC9C,IAAI,cAAc,KAAK,MAAM,CAAC,QAAQ,EAAE;oBAAE,SAAQ;iBAAE;gBAEpD,0CAA0C;gBAC1C,IAAI,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;oBAC7C,uDAAuD;oBACvD,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAA;oBAC9B,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAA;oBAC7B,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;oBACzC,SAAQ;iBACT;gBAED,uFAAuF;gBACvF,MAAM,aAAa,GAAG,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAA;gBAE7D,6FAA6F;gBAC7F,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,KAAK,aAAa,CAAA;gBACvD,MAAM,QAAQ,GAAG,eAAe,IAAI,2BAA2B,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;gBAEtF,IAAI,CAAC,QAAQ,EAAE;oBACb,MAAM,CAAC,MAAM,GAAG,aAAa,CAAA;oBAC7B,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAA;oBAC7B,kCAAkC;oBAClC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;iBAC1C;qBAAM;oBACL,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAA;iBAC/B;aACF;SACF;KACF;AACH,CAAC;AA1CD,sDA0CC;AAED;;;GAGG;AACH,SAAS,2BAA2B,CAAC,UAAyB,EAAE,YAA2B;IACzF,qEAAqE;IACrE,IAAI,MAAM,GAAyB,UAAU,CAAA;IAC7C,OAAO,MAAM,GAAG,MAAM,EAAE,MAAa,EAAE;QACrC,IAAI,MAAM,KAAK,YAAY;YAAE,OAAO,IAAI,CAAA;KACzC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking#Entity_interpolation
3
+ * https://gamedev.stackexchange.com/questions/142427/delayed-linear-interpolation-for-networking
4
+ * https://github.com/menduz/Semi-Fixed-Time-Step-Interpolation
5
+ *
6
+ * The DelayedInterpolation component allows to animate the final transform of an entity.
7
+ * The animation is performed time-traveling back in time .duration amount of milliseconds
8
+ * and linearly interpolating the values of the transform from the past.
9
+ *
10
+ * The parameters used for this time-travel are set by the transform component and its
11
+ * modifiers like billboard, avatar attachment point, etc.
12
+ *
13
+ * When an entity changes its parent entity, the tween's time-travel registry will
14
+ * automatically reset. Meaning NO tweening will be performed upon reparenting.
15
+ *
16
+ * Tweens will be calculated AFTER the final position of the entity is calculated,
17
+ * and BEFORE the position of the child entities is computed. Effectively applying
18
+ * the animation to all its children.
19
+ *
20
+ * It is important to mention that tweens only apply to the local entity, if a parent entity P
21
+ * has a linear tween, and it has a child entity C with another tween, by moving P, only P's tween will apply,
22
+ * moving C's frame of reference but NOT animating it.
23
+ */
24
+ import { BabylonEntity, TransformCommand } from '../BabylonEntity';
25
+ import { PBDelayedInterpolation } from '@dcl/protocol/out-js/decentraland/sdk/components/delayed_interpolation.gen';
26
+ export declare function applyDelayedInterpolation(entity: Pick<BabylonEntity, 'scaling' | 'rotationQuaternion' | 'position'>, component: PBDelayedInterpolation, commands: TransformCommand[], now: number): void;
27
+ //# sourceMappingURL=delayed-interpolation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delayed-interpolation.d.ts","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/delayed-interpolation.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4EAA4E,CAAA;AAGnH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,oBAAoB,GAAG,UAAU,CAAC,EAC1E,SAAS,EAAE,sBAAsB,EACjC,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,GAAG,EAAE,MAAM,QAqDZ"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyDelayedInterpolation = void 0;
4
+ const core_1 = require("@babylonjs/core");
5
+ function applyDelayedInterpolation(entity, component, commands, now) {
6
+ if (!entity.rotationQuaternion)
7
+ entity.rotationQuaternion = core_1.Quaternion.Identity();
8
+ const shouldInterpolate = component.timeTravelDuration > 0;
9
+ if (!commands || commands.length === 0) {
10
+ entity.position.setAll(0);
11
+ entity.scaling.setAll(1);
12
+ entity.rotationQuaternion.set(0, 0, 0, 1);
13
+ return;
14
+ }
15
+ const latestState = commands[commands.length - 1];
16
+ if (!shouldInterpolate) {
17
+ entity.position.copyFrom(latestState.value.position);
18
+ entity.scaling.copyFrom(latestState.value.scale);
19
+ entity.rotationQuaternion.copyFrom(latestState.value.rotation);
20
+ return;
21
+ }
22
+ const timeInThePast = now - component.timeTravelDuration; // ms
23
+ let firstStateIndex = -1;
24
+ let secondStateIndex = -1;
25
+ for (let i = 0; i < commands.length; i++) {
26
+ const state = commands[i];
27
+ if (state.time > timeInThePast) {
28
+ firstStateIndex = i - 1;
29
+ secondStateIndex = i;
30
+ break;
31
+ }
32
+ }
33
+ const firstStateCandidate = commands[firstStateIndex];
34
+ const secondStateCandidate = commands[secondStateIndex];
35
+ if (!firstStateCandidate || !secondStateCandidate) {
36
+ entity.position.copyFrom(latestState.value.position);
37
+ entity.scaling.copyFrom(latestState.value.scale);
38
+ entity.rotationQuaternion.copyFrom(latestState.value.rotation);
39
+ return;
40
+ }
41
+ const firstState = firstStateCandidate.value;
42
+ const secondState = secondStateCandidate.value;
43
+ const alpha = (timeInThePast - firstStateCandidate.time) / (secondStateCandidate.time - firstStateCandidate.time);
44
+ core_1.Vector3.LerpToRef(firstState.position, secondState.position, alpha, entity.position);
45
+ core_1.Vector3.LerpToRef(firstState.scale, secondState.scale, alpha, entity.scaling);
46
+ core_1.Quaternion.SlerpToRef(firstState.rotation, secondState.rotation, alpha, entity.rotationQuaternion);
47
+ }
48
+ exports.applyDelayedInterpolation = applyDelayedInterpolation;
49
+ //# sourceMappingURL=delayed-interpolation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delayed-interpolation.js","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/delayed-interpolation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ type EasingFunctionImpl = (progress: number) => number;
2
+ interface EasingDictionary {
3
+ [easing: number]: EasingFunctionImpl;
4
+ }
5
+ export declare const easingsFunctions: EasingDictionary;
6
+ export {};
7
+ //# sourceMappingURL=easings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easings.d.ts","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/easings.ts"],"names":[],"mappings":"AAEA,KAAK,kBAAkB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;AAEvD,UAAU,gBAAgB;IACxB,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAAC;CACtC;AA4BD,eAAO,MAAM,gBAAgB,EAAE,gBAoE9B,CAAC"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.easingsFunctions = void 0;
4
+ const tween_gen_1 = require("@dcl/protocol/out-js/decentraland/sdk/components/tween.gen");
5
+ const pow = Math.pow;
6
+ const sqrt = Math.sqrt;
7
+ const sin = Math.sin;
8
+ const cos = Math.cos;
9
+ const PI = Math.PI;
10
+ const c1 = 1.70158;
11
+ const c2 = c1 * 1.525;
12
+ const c3 = c1 + 1;
13
+ const c4 = (2 * PI) / 3;
14
+ const c5 = (2 * PI) / 4.5;
15
+ const bounceOut = function (x) {
16
+ const n1 = 7.5625;
17
+ const d1 = 2.75;
18
+ if (x < 1 / d1) {
19
+ return n1 * x * x;
20
+ }
21
+ else if (x < 2 / d1) {
22
+ return n1 * (x -= 1.5 / d1) * x + 0.75;
23
+ }
24
+ else if (x < 2.5 / d1) {
25
+ return n1 * (x -= 2.25 / d1) * x + 0.9375;
26
+ }
27
+ else {
28
+ return n1 * (x -= 2.625 / d1) * x + 0.984375;
29
+ }
30
+ };
31
+ exports.easingsFunctions = {
32
+ [tween_gen_1.EasingFunction.EF_LINEAR]: (x) => x,
33
+ [tween_gen_1.EasingFunction.EF_EASEINQUAD]: function (x) {
34
+ return x * x;
35
+ },
36
+ [tween_gen_1.EasingFunction.EF_EASEOUTQUAD]: function (x) {
37
+ return 1 - (1 - x) * (1 - x);
38
+ },
39
+ [tween_gen_1.EasingFunction.EF_EASEINCUBIC]: function (x) {
40
+ return x * x * x;
41
+ },
42
+ [tween_gen_1.EasingFunction.EF_EASEOUTCUBIC]: function (x) {
43
+ return 1 - pow(1 - x, 3);
44
+ },
45
+ [tween_gen_1.EasingFunction.EF_EASEINQUART]: function (x) {
46
+ return x * x * x * x;
47
+ },
48
+ [tween_gen_1.EasingFunction.EF_EASEOUTQUART]: function (x) {
49
+ return 1 - pow(1 - x, 4);
50
+ },
51
+ [tween_gen_1.EasingFunction.EF_EASEINQUINT]: function (x) {
52
+ return x * x * x * x * x;
53
+ },
54
+ [tween_gen_1.EasingFunction.EF_EASEOUTQUINT]: function (x) {
55
+ return 1 - pow(1 - x, 5);
56
+ },
57
+ [tween_gen_1.EasingFunction.EF_EASEINSINE]: function (x) {
58
+ return 1 - cos((x * PI) / 2);
59
+ },
60
+ [tween_gen_1.EasingFunction.EF_EASEOUTSINE]: function (x) {
61
+ return sin((x * PI) / 2);
62
+ },
63
+ [tween_gen_1.EasingFunction.EF_EASEINEXPO]: function (x) {
64
+ return x === 0 ? 0 : pow(2, 10 * x - 10);
65
+ },
66
+ [tween_gen_1.EasingFunction.EF_EASEOUTEXPO]: function (x) {
67
+ return x === 1 ? 1 : 1 - pow(2, -10 * x);
68
+ },
69
+ [tween_gen_1.EasingFunction.EF_EASEINCIRC]: function (x) {
70
+ return 1 - sqrt(1 - pow(x, 2));
71
+ },
72
+ [tween_gen_1.EasingFunction.EF_EASEOUTCIRC]: function (x) {
73
+ return sqrt(1 - pow(x - 1, 2));
74
+ },
75
+ [tween_gen_1.EasingFunction.EF_EASEINBACK]: function (x) {
76
+ return c3 * x * x * x - c1 * x * x;
77
+ },
78
+ [tween_gen_1.EasingFunction.EF_EASEOUTBACK]: function (x) {
79
+ return 1 + c3 * pow(x - 1, 3) + c1 * pow(x - 1, 2);
80
+ },
81
+ [tween_gen_1.EasingFunction.EF_EASEINELASTIC]: function (x) {
82
+ return x === 0
83
+ ? 0
84
+ : x === 1
85
+ ? 1
86
+ : -pow(2, 10 * x - 10) * sin((x * 10 - 10.75) * c4);
87
+ },
88
+ [tween_gen_1.EasingFunction.EF_EASEOUTELASTIC]: function (x) {
89
+ return x === 0
90
+ ? 0
91
+ : x === 1
92
+ ? 1
93
+ : pow(2, -10 * x) * sin((x * 10 - 0.75) * c4) + 1;
94
+ },
95
+ [tween_gen_1.EasingFunction.EF_EASEINBOUNCE]: function (x) {
96
+ return 1 - bounceOut(1 - x);
97
+ },
98
+ [tween_gen_1.EasingFunction.EF_EASEOUTBOUNCE]: bounceOut,
99
+ };
100
+ //# sourceMappingURL=easings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easings.js","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/easings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { ArcRotateCamera, Scene } from "@babylonjs/core";
2
+ export declare function createCameraObstructionSystem(scene: Scene, camera: ArcRotateCamera): {
3
+ update(): void;
4
+ };
5
+ //# sourceMappingURL=hide-camera-obstuction-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hide-camera-obstuction-system.d.ts","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/hide-camera-obstuction-system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,eAAe,EAAa,KAAK,EAAgB,MAAM,iBAAiB,CAAC;AAMhG,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe;;EAwIlF"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCameraObstructionSystem = void 0;
4
+ const core_1 = require("@babylonjs/core");
5
+ const colliders_1 = require("./colliders");
6
+ const mesh_collider_gen_1 = require("@dcl/protocol/out-js/decentraland/sdk/components/mesh_collider.gen");
7
+ // This system hides the meshes between the camera and the player on the third person camera
8
+ // it also "elastically" moves the camera to move it out from objects
9
+ function createCameraObstructionSystem(scene, camera) {
10
+ const ray = new core_1.Ray(core_1.Vector3.Zero(), core_1.Vector3.One(), 1);
11
+ const rayDir = core_1.Vector3.Zero();
12
+ // camera seems to get stuck into things
13
+ // should move camera away from things by a value of cameraSkin
14
+ const cameraSkin = 0.5;
15
+ let prevPickedMeshes = [];
16
+ let pickedMeshes = [];
17
+ const makeObstructionInvisible = false;
18
+ const elasticSteps = 50;
19
+ /**
20
+ * The following method handles the use case wherein some mesh
21
+ * comes between the avatar and the camera thus obstructing the view
22
+ * of the avatar.
23
+ * Two ways this can be handled
24
+ * a) make the obstructing mesh invisible
25
+ * instead of invisible a better option would have been to make semi transparent.
26
+ * Unfortunately, unlike mesh, mesh instances do not "visibility" setting)
27
+ * Every alternate frame make mesh visible and invisible to give the impression of semi-transparent.
28
+ * b) move the camera in front of the obstructing mesh
29
+ */
30
+ function handleObstruction() {
31
+ //get vector from av (camera.target) to camera
32
+ camera.position.subtractToRef(camera.target, rayDir);
33
+ //start ray from av to camera
34
+ ray.origin = camera.target;
35
+ ray.length = rayDir.length();
36
+ ray.direction = rayDir.normalize();
37
+ // handle case were pick is with a child of avatar, avatar atatchment. etc
38
+ const pickedObjects = scene.multiPickWithRay(ray, (mesh) => {
39
+ if ((0, colliders_1.getColliderLayers)(mesh) & mesh_collider_gen_1.ColliderLayer.CL_PHYSICS)
40
+ return true;
41
+ return false;
42
+ });
43
+ if (makeObstructionInvisible) {
44
+ prevPickedMeshes = pickedMeshes;
45
+ if (pickedObjects && pickedObjects.length > 0) {
46
+ pickedMeshes = [];
47
+ for (let pi of pickedObjects) {
48
+ if (pi.pickedMesh?.isVisible || (pi.pickedMesh && prevPickedMeshes.includes(pi.pickedMesh))) {
49
+ pi.pickedMesh.isVisible = false;
50
+ pickedMeshes.push(pi.pickedMesh);
51
+ }
52
+ }
53
+ for (let pm of prevPickedMeshes) {
54
+ if (!pickedMeshes.includes(pm)) {
55
+ pm.isVisible = true;
56
+ }
57
+ }
58
+ }
59
+ else {
60
+ for (let pm of prevPickedMeshes) {
61
+ pm.isVisible = true;
62
+ }
63
+ prevPickedMeshes.length = 0;
64
+ }
65
+ }
66
+ if (pickedObjects) {
67
+ if (pickedObjects.length > 0) {
68
+ // postion the camera in front of the mesh that is obstructing camera
69
+ // if only one obstruction and it is invisible then if it is not collidable or our camera is not collidable then do nothing
70
+ if (pickedObjects.length == 1 &&
71
+ !isSeeAble(pickedObjects[0].pickedMesh) &&
72
+ (!pickedObjects[0].pickedMesh?.checkCollisions || !camera.checkCollisions))
73
+ return;
74
+ // if our camera is collidable then we donot want it to get stuck behind another collidable obsrtucting mesh
75
+ let pickedPoint = null;
76
+ // we will asume the order of picked meshes is from closest to avatar to furthest
77
+ // we should get the first one which is visible or invisible and collidable
78
+ for (let i = 0; i < pickedObjects.length; i++) {
79
+ let pm = pickedObjects[i].pickedMesh;
80
+ if (isSeeAble(pm)) {
81
+ pickedPoint = pickedObjects[i].pickedPoint;
82
+ break;
83
+ }
84
+ else if (pm?.checkCollisions) {
85
+ pickedPoint = pickedObjects[i].pickedPoint;
86
+ break;
87
+ }
88
+ }
89
+ if (pickedPoint == null)
90
+ return;
91
+ const c2p = camera.position.subtract(pickedPoint);
92
+ // note that when camera is collidable, changing the orbital camera radius may not work.
93
+ // changing the radius moves the camera forward (with collision?) and collision can interfere with movement
94
+ //
95
+ // in every cylce we are dividing the distance to tarvel by same number of steps.
96
+ // as we get closer to destination the speed will thus slow down.
97
+ // when just 1 unit distance left, lets snap to the final position.
98
+ // when calculating final position make sure the camera does not get stuck at the pickposition especially
99
+ // if collision is on
100
+ const l = c2p.length();
101
+ if (camera.checkCollisions) {
102
+ let step;
103
+ if (l <= 1) {
104
+ step = c2p.addInPlace(c2p.normalizeToNew().scaleInPlace(cameraSkin));
105
+ }
106
+ else {
107
+ step = c2p.normalize().scaleInPlace(l / elasticSteps);
108
+ }
109
+ camera.position = camera.position.subtract(step);
110
+ }
111
+ else {
112
+ let step;
113
+ if (l <= 1)
114
+ step = l + cameraSkin;
115
+ else
116
+ step = l / elasticSteps;
117
+ camera.radius = camera.radius - step;
118
+ }
119
+ }
120
+ }
121
+ }
122
+ // how many ways can a mesh be invisible?
123
+ function isSeeAble(mesh) {
124
+ if (!mesh)
125
+ return false;
126
+ if (!mesh.isVisible)
127
+ return false;
128
+ if (!mesh.isEnabled)
129
+ return false;
130
+ if (mesh.visibility == 0)
131
+ return false;
132
+ if (mesh.material != null && mesh.material.alphaMode != 0 && mesh.material.alpha == 0)
133
+ return false;
134
+ return true;
135
+ }
136
+ return {
137
+ update() {
138
+ if (camera.radius > camera.lowerRadiusLimit) {
139
+ handleObstruction();
140
+ }
141
+ }
142
+ };
143
+ }
144
+ exports.createCameraObstructionSystem = createCameraObstructionSystem;
145
+ //# sourceMappingURL=hide-camera-obstuction-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hide-camera-obstuction-system.js","sourceRoot":"","sources":["../../../../../src/lib/babylon/scene/logic/hide-camera-obstuction-system.ts"],"names":[],"mappings":"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"}