@iwsdk/core 0.1.0

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 (326) hide show
  1. package/LICENSE +21 -0
  2. package/dist/asset/asset-manager.d.ts +72 -0
  3. package/dist/asset/asset-manager.d.ts.map +1 -0
  4. package/dist/asset/asset-manager.js +138 -0
  5. package/dist/asset/asset-manager.js.map +1 -0
  6. package/dist/asset/cache-manager.d.ts +44 -0
  7. package/dist/asset/cache-manager.d.ts.map +1 -0
  8. package/dist/asset/cache-manager.js +80 -0
  9. package/dist/asset/cache-manager.js.map +1 -0
  10. package/dist/asset/index.d.ts +9 -0
  11. package/dist/asset/index.d.ts.map +1 -0
  12. package/dist/asset/loaders/audio-loader.d.ts +21 -0
  13. package/dist/asset/loaders/audio-loader.d.ts.map +1 -0
  14. package/dist/asset/loaders/audio-loader.js +57 -0
  15. package/dist/asset/loaders/audio-loader.js.map +1 -0
  16. package/dist/asset/loaders/gltf-loader.d.ts +33 -0
  17. package/dist/asset/loaders/gltf-loader.d.ts.map +1 -0
  18. package/dist/asset/loaders/gltf-loader.js +79 -0
  19. package/dist/asset/loaders/gltf-loader.js.map +1 -0
  20. package/dist/asset/loaders/hdr-texture-loader.d.ts +18 -0
  21. package/dist/asset/loaders/hdr-texture-loader.d.ts.map +1 -0
  22. package/dist/asset/loaders/hdr-texture-loader.js +65 -0
  23. package/dist/asset/loaders/hdr-texture-loader.js.map +1 -0
  24. package/dist/asset/loaders/texture-loader.d.ts +21 -0
  25. package/dist/asset/loaders/texture-loader.d.ts.map +1 -0
  26. package/dist/asset/loaders/texture-loader.js +57 -0
  27. package/dist/asset/loaders/texture-loader.js.map +1 -0
  28. package/dist/audio/audio-pool.d.ts +59 -0
  29. package/dist/audio/audio-pool.d.ts.map +1 -0
  30. package/dist/audio/audio-pool.js +105 -0
  31. package/dist/audio/audio-pool.js.map +1 -0
  32. package/dist/audio/audio-system.d.ts +326 -0
  33. package/dist/audio/audio-system.d.ts.map +1 -0
  34. package/dist/audio/audio-system.js +478 -0
  35. package/dist/audio/audio-system.js.map +1 -0
  36. package/dist/audio/audio-utils.d.ts +71 -0
  37. package/dist/audio/audio-utils.d.ts.map +1 -0
  38. package/dist/audio/audio-utils.js +145 -0
  39. package/dist/audio/audio-utils.js.map +1 -0
  40. package/dist/audio/audio.d.ts +178 -0
  41. package/dist/audio/audio.d.ts.map +1 -0
  42. package/dist/audio/audio.js +104 -0
  43. package/dist/audio/audio.js.map +1 -0
  44. package/dist/audio/index.d.ts +11 -0
  45. package/dist/audio/index.d.ts.map +1 -0
  46. package/dist/ecs/component-registry.d.ts +54 -0
  47. package/dist/ecs/component-registry.d.ts.map +1 -0
  48. package/dist/ecs/component-registry.js +86 -0
  49. package/dist/ecs/component-registry.js.map +1 -0
  50. package/dist/ecs/component.d.ts +12 -0
  51. package/dist/ecs/component.d.ts.map +1 -0
  52. package/dist/ecs/entity.d.ts +17 -0
  53. package/dist/ecs/entity.d.ts.map +1 -0
  54. package/dist/ecs/entity.js +13 -0
  55. package/dist/ecs/entity.js.map +1 -0
  56. package/dist/ecs/index.d.ts +12 -0
  57. package/dist/ecs/index.d.ts.map +1 -0
  58. package/dist/ecs/system.d.ts +70 -0
  59. package/dist/ecs/system.d.ts.map +1 -0
  60. package/dist/ecs/system.js +79 -0
  61. package/dist/ecs/system.js.map +1 -0
  62. package/dist/ecs/world.d.ts +101 -0
  63. package/dist/ecs/world.d.ts.map +1 -0
  64. package/dist/ecs/world.js +165 -0
  65. package/dist/ecs/world.js.map +1 -0
  66. package/dist/environment/dome-gradient.d.ts +39 -0
  67. package/dist/environment/dome-gradient.d.ts.map +1 -0
  68. package/dist/environment/dome-gradient.js +30 -0
  69. package/dist/environment/dome-gradient.js.map +1 -0
  70. package/dist/environment/dome-texture.d.ts +39 -0
  71. package/dist/environment/dome-texture.d.ts.map +1 -0
  72. package/dist/environment/dome-texture.js +30 -0
  73. package/dist/environment/dome-texture.js.map +1 -0
  74. package/dist/environment/environment-system.d.ts +82 -0
  75. package/dist/environment/environment-system.d.ts.map +1 -0
  76. package/dist/environment/environment-system.js +389 -0
  77. package/dist/environment/environment-system.js.map +1 -0
  78. package/dist/environment/gradient-environment.d.ts +37 -0
  79. package/dist/environment/gradient-environment.d.ts.map +1 -0
  80. package/dist/environment/gradient-environment.js +99 -0
  81. package/dist/environment/gradient-environment.js.map +1 -0
  82. package/dist/environment/ibl-gradient.d.ts +38 -0
  83. package/dist/environment/ibl-gradient.d.ts.map +1 -0
  84. package/dist/environment/ibl-gradient.js +29 -0
  85. package/dist/environment/ibl-gradient.js.map +1 -0
  86. package/dist/environment/ibl-texture.d.ts +36 -0
  87. package/dist/environment/ibl-texture.d.ts.map +1 -0
  88. package/dist/environment/ibl-texture.js +30 -0
  89. package/dist/environment/ibl-texture.js.map +1 -0
  90. package/dist/environment/index.d.ts +12 -0
  91. package/dist/environment/index.d.ts.map +1 -0
  92. package/dist/grab/distance-grabbable.d.ts +115 -0
  93. package/dist/grab/distance-grabbable.d.ts.map +1 -0
  94. package/dist/grab/distance-grabbable.js +102 -0
  95. package/dist/grab/distance-grabbable.js.map +1 -0
  96. package/dist/grab/grab-system.d.ts +320 -0
  97. package/dist/grab/grab-system.d.ts.map +1 -0
  98. package/dist/grab/grab-system.js +239 -0
  99. package/dist/grab/grab-system.js.map +1 -0
  100. package/dist/grab/handles.d.ts +43 -0
  101. package/dist/grab/handles.d.ts.map +1 -0
  102. package/dist/grab/handles.js +132 -0
  103. package/dist/grab/handles.js.map +1 -0
  104. package/dist/grab/index.d.ts +13 -0
  105. package/dist/grab/index.d.ts.map +1 -0
  106. package/dist/grab/index.js +23 -0
  107. package/dist/grab/index.js.map +1 -0
  108. package/dist/grab/one-hand-grabbable.d.ts +80 -0
  109. package/dist/grab/one-hand-grabbable.d.ts.map +1 -0
  110. package/dist/grab/one-hand-grabbable.js +80 -0
  111. package/dist/grab/one-hand-grabbable.js.map +1 -0
  112. package/dist/grab/pointer-events-patch.d.ts +16 -0
  113. package/dist/grab/pointer-events-patch.d.ts.map +1 -0
  114. package/dist/grab/pointer-events-patch.js +223 -0
  115. package/dist/grab/pointer-events-patch.js.map +1 -0
  116. package/dist/grab/two-hands-grabbable.d.ts +103 -0
  117. package/dist/grab/two-hands-grabbable.d.ts.map +1 -0
  118. package/dist/grab/two-hands-grabbable.js +100 -0
  119. package/dist/grab/two-hands-grabbable.js.map +1 -0
  120. package/dist/index.d.ts +27 -0
  121. package/dist/index.d.ts.map +1 -0
  122. package/dist/index.js +82 -0
  123. package/dist/index.js.map +1 -0
  124. package/dist/init/index.d.ts +9 -0
  125. package/dist/init/index.d.ts.map +1 -0
  126. package/dist/init/world-initializer.d.ts +76 -0
  127. package/dist/init/world-initializer.d.ts.map +1 -0
  128. package/dist/init/world-initializer.js +403 -0
  129. package/dist/init/world-initializer.js.map +1 -0
  130. package/dist/init/xr.d.ts +87 -0
  131. package/dist/init/xr.d.ts.map +1 -0
  132. package/dist/init/xr.js +193 -0
  133. package/dist/init/xr.js.map +1 -0
  134. package/dist/input/index.d.ts +9 -0
  135. package/dist/input/index.d.ts.map +1 -0
  136. package/dist/input/input-system.d.ts +52 -0
  137. package/dist/input/input-system.d.ts.map +1 -0
  138. package/dist/input/input-system.js +176 -0
  139. package/dist/input/input-system.js.map +1 -0
  140. package/dist/input/state-tags.d.ts +56 -0
  141. package/dist/input/state-tags.d.ts.map +1 -0
  142. package/dist/input/state-tags.js +63 -0
  143. package/dist/input/state-tags.js.map +1 -0
  144. package/dist/level/index.d.ts +12 -0
  145. package/dist/level/index.d.ts.map +1 -0
  146. package/dist/level/level-entity-creator.d.ts +27 -0
  147. package/dist/level/level-entity-creator.d.ts.map +1 -0
  148. package/dist/level/level-entity-creator.js +110 -0
  149. package/dist/level/level-entity-creator.js.map +1 -0
  150. package/dist/level/level-glxf-importer.d.ts +22 -0
  151. package/dist/level/level-glxf-importer.d.ts.map +1 -0
  152. package/dist/level/level-glxf-importer.js +40 -0
  153. package/dist/level/level-glxf-importer.js.map +1 -0
  154. package/dist/level/level-root.d.ts +18 -0
  155. package/dist/level/level-root.d.ts.map +1 -0
  156. package/dist/level/level-root.js +25 -0
  157. package/dist/level/level-root.js.map +1 -0
  158. package/dist/level/level-system.d.ts +54 -0
  159. package/dist/level/level-system.d.ts.map +1 -0
  160. package/dist/level/level-system.js +134 -0
  161. package/dist/level/level-system.js.map +1 -0
  162. package/dist/level/level-tag.d.ts +25 -0
  163. package/dist/level/level-tag.d.ts.map +1 -0
  164. package/dist/level/level-tag.js +28 -0
  165. package/dist/level/level-tag.js.map +1 -0
  166. package/dist/locomotion/geometries/beveled-cylinder.d.ts +12 -0
  167. package/dist/locomotion/geometries/beveled-cylinder.d.ts.map +1 -0
  168. package/dist/locomotion/geometries/beveled-cylinder.js +64 -0
  169. package/dist/locomotion/geometries/beveled-cylinder.js.map +1 -0
  170. package/dist/locomotion/index.d.ts +11 -0
  171. package/dist/locomotion/index.d.ts.map +1 -0
  172. package/dist/locomotion/locomotion.d.ts +239 -0
  173. package/dist/locomotion/locomotion.d.ts.map +1 -0
  174. package/dist/locomotion/locomotion.js +256 -0
  175. package/dist/locomotion/locomotion.js.map +1 -0
  176. package/dist/locomotion/materials/line.d.ts +24 -0
  177. package/dist/locomotion/materials/line.d.ts.map +1 -0
  178. package/dist/locomotion/materials/line.js +307 -0
  179. package/dist/locomotion/materials/line.js.map +1 -0
  180. package/dist/locomotion/slide.d.ts +76 -0
  181. package/dist/locomotion/slide.d.ts.map +1 -0
  182. package/dist/locomotion/slide.js +131 -0
  183. package/dist/locomotion/slide.js.map +1 -0
  184. package/dist/locomotion/teleport.d.ts +68 -0
  185. package/dist/locomotion/teleport.d.ts.map +1 -0
  186. package/dist/locomotion/teleport.js +150 -0
  187. package/dist/locomotion/teleport.js.map +1 -0
  188. package/dist/locomotion/turn.d.ts +77 -0
  189. package/dist/locomotion/turn.d.ts.map +1 -0
  190. package/dist/locomotion/turn.js +126 -0
  191. package/dist/locomotion/turn.js.map +1 -0
  192. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/index.js +13 -0
  193. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/index.js.map +1 -0
  194. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/interpreter/index.js +154 -0
  195. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/interpreter/index.js.map +1 -0
  196. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js +66 -0
  197. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js.map +1 -0
  198. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js +162 -0
  199. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js.map +1 -0
  200. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js +519 -0
  201. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js.map +1 -0
  202. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js +15 -0
  203. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js.map +1 -0
  204. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js +32 -0
  205. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js.map +1 -0
  206. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js +10 -0
  207. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js.map +1 -0
  208. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js +41 -0
  209. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js.map +1 -0
  210. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js +35 -0
  211. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js.map +1 -0
  212. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js +24 -0
  213. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js.map +1 -0
  214. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js +92 -0
  215. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js.map +1 -0
  216. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js +382 -0
  217. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js.map +1 -0
  218. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js +2587 -0
  219. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js.map +1 -0
  220. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js +477 -0
  221. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js.map +1 -0
  222. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js +17 -0
  223. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js.map +1 -0
  224. package/dist/physics/index.d.ts +11 -0
  225. package/dist/physics/index.d.ts.map +1 -0
  226. package/dist/physics/physics-system.d.ts +314 -0
  227. package/dist/physics/physics-system.d.ts.map +1 -0
  228. package/dist/physics/physics-system.js +419 -0
  229. package/dist/physics/physics-system.js.map +1 -0
  230. package/dist/physics/physicsBody.d.ts +83 -0
  231. package/dist/physics/physicsBody.d.ts.map +1 -0
  232. package/dist/physics/physicsBody.js +60 -0
  233. package/dist/physics/physicsBody.js.map +1 -0
  234. package/dist/physics/physicsManipulation.d.ts +51 -0
  235. package/dist/physics/physicsManipulation.d.ts.map +1 -0
  236. package/dist/physics/physicsManipulation.js +46 -0
  237. package/dist/physics/physicsManipulation.js.map +1 -0
  238. package/dist/physics/physicsShape.d.ts +133 -0
  239. package/dist/physics/physicsShape.d.ts.map +1 -0
  240. package/dist/physics/physicsShape.js +97 -0
  241. package/dist/physics/physicsShape.js.map +1 -0
  242. package/dist/physics/utils.d.ts +21 -0
  243. package/dist/physics/utils.d.ts.map +1 -0
  244. package/dist/physics/utils.js +130 -0
  245. package/dist/physics/utils.js.map +1 -0
  246. package/dist/runtime/index.d.ts +8 -0
  247. package/dist/runtime/index.d.ts.map +1 -0
  248. package/dist/runtime/three.d.ts +8 -0
  249. package/dist/runtime/three.d.ts.map +1 -0
  250. package/dist/runtime/three.js +18 -0
  251. package/dist/runtime/three.js.map +1 -0
  252. package/dist/scene-understanding/anchor.d.ts +42 -0
  253. package/dist/scene-understanding/anchor.d.ts.map +1 -0
  254. package/dist/scene-understanding/anchor.js +45 -0
  255. package/dist/scene-understanding/anchor.js.map +1 -0
  256. package/dist/scene-understanding/index.d.ts +11 -0
  257. package/dist/scene-understanding/index.d.ts.map +1 -0
  258. package/dist/scene-understanding/mesh.d.ts +67 -0
  259. package/dist/scene-understanding/mesh.d.ts.map +1 -0
  260. package/dist/scene-understanding/mesh.js +55 -0
  261. package/dist/scene-understanding/mesh.js.map +1 -0
  262. package/dist/scene-understanding/plane.d.ts +39 -0
  263. package/dist/scene-understanding/plane.d.ts.map +1 -0
  264. package/dist/scene-understanding/plane.js +42 -0
  265. package/dist/scene-understanding/plane.js.map +1 -0
  266. package/dist/scene-understanding/scene-understanding-system.d.ts +180 -0
  267. package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -0
  268. package/dist/scene-understanding/scene-understanding-system.js +342 -0
  269. package/dist/scene-understanding/scene-understanding-system.js.map +1 -0
  270. package/dist/transform/index.d.ts +10 -0
  271. package/dist/transform/index.d.ts.map +1 -0
  272. package/dist/transform/synced-quaternion.d.ts +35 -0
  273. package/dist/transform/synced-quaternion.d.ts.map +1 -0
  274. package/dist/transform/synced-quaternion.js +128 -0
  275. package/dist/transform/synced-quaternion.js.map +1 -0
  276. package/dist/transform/synced-vector3.d.ts +34 -0
  277. package/dist/transform/synced-vector3.d.ts.map +1 -0
  278. package/dist/transform/synced-vector3.js +106 -0
  279. package/dist/transform/synced-vector3.js.map +1 -0
  280. package/dist/transform/transform.d.ts +100 -0
  281. package/dist/transform/transform.d.ts.map +1 -0
  282. package/dist/transform/transform.js +194 -0
  283. package/dist/transform/transform.js.map +1 -0
  284. package/dist/types/webxr-augmentations.d.ts +23 -0
  285. package/dist/types/webxr-augmentations.d.ts.map +1 -0
  286. package/dist/ui/document.d.ts +112 -0
  287. package/dist/ui/document.d.ts.map +1 -0
  288. package/dist/ui/document.js +298 -0
  289. package/dist/ui/document.js.map +1 -0
  290. package/dist/ui/follow.d.ts +197 -0
  291. package/dist/ui/follow.d.ts.map +1 -0
  292. package/dist/ui/follow.js +143 -0
  293. package/dist/ui/follow.js.map +1 -0
  294. package/dist/ui/index.d.ts +18 -0
  295. package/dist/ui/index.d.ts.map +1 -0
  296. package/dist/ui/screenspace.d.ts +219 -0
  297. package/dist/ui/screenspace.d.ts.map +1 -0
  298. package/dist/ui/screenspace.js +215 -0
  299. package/dist/ui/screenspace.js.map +1 -0
  300. package/dist/ui/ui.d.ts +209 -0
  301. package/dist/ui/ui.d.ts.map +1 -0
  302. package/dist/ui/ui.js +185 -0
  303. package/dist/ui/ui.js.map +1 -0
  304. package/dist/vendor/basis/README.md +46 -0
  305. package/dist/vendor/basis/basis_transcoder.js +19 -0
  306. package/dist/vendor/basis/basis_transcoder.wasm +0 -0
  307. package/dist/vendor/draco/README.md +32 -0
  308. package/dist/vendor/draco/draco_decoder.js +34 -0
  309. package/dist/vendor/draco/draco_decoder.wasm +0 -0
  310. package/dist/vendor/draco/draco_encoder.js +33 -0
  311. package/dist/vendor/draco/draco_wasm_wrapper.js +117 -0
  312. package/dist/vendor/draco/gltf/draco_decoder.js +33 -0
  313. package/dist/vendor/draco/gltf/draco_decoder.wasm +0 -0
  314. package/dist/vendor/draco/gltf/draco_encoder.js +33 -0
  315. package/dist/vendor/draco/gltf/draco_wasm_wrapper.js +116 -0
  316. package/dist/version.d.ts +2 -0
  317. package/dist/version.d.ts.map +1 -0
  318. package/dist/version.js +4 -0
  319. package/dist/version.js.map +1 -0
  320. package/dist/visibility/index.d.ts +8 -0
  321. package/dist/visibility/index.d.ts.map +1 -0
  322. package/dist/visibility/visibility.d.ts +37 -0
  323. package/dist/visibility/visibility.d.ts.map +1 -0
  324. package/dist/visibility/visibility.js +52 -0
  325. package/dist/visibility/visibility.js.map +1 -0
  326. package/package.json +46 -0
@@ -0,0 +1,419 @@
1
+ import { PhysicsBody, DEFAULT_LINEAR_DAMPING, DEFAULT_GRAVITY_FACTOR, PhysicsState } from './physicsBody.js';
2
+ import { PhysicsShape, PhysicsShapeType } from './physicsShape.js';
3
+ import '../index.js';
4
+ import '../runtime/three.js';
5
+ import { detectShapeFromGeometry, generateMergedGeometry } from './utils.js';
6
+ import { PhysicsManipulation } from './physicsManipulation.js';
7
+ import { Types, ne } from 'elics';
8
+ import { Pressed } from '../input/state-tags.js';
9
+ import '../grab/index.js';
10
+ import { createSystem } from '../ecs/system.js';
11
+ import { Vector3, Matrix4, Mesh } from 'three';
12
+
13
+ /**
14
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
15
+ *
16
+ * This source code is licensed under the MIT license found in the
17
+ * LICENSE file in the root directory of this source tree.
18
+ */
19
+ /**
20
+ * Manages physics simulation using the Havok physics engine.
21
+ *
22
+ * @remarks
23
+ * - Initializes Havok physics engine and creates a physics world with gravity.
24
+ * - Supports automatic physics shapes creation based on entity geometry when {@link PhysicsShapeType.Auto} is used.
25
+ * - Supports multiple collision shapes: Sphere, Box, Cylinder, ConvexHull, and TriMesh.
26
+ * - Synchronizes physics body transforms with Three.js Object3D positions and rotations using {@link PhysicsBody}.
27
+ * - Handles physics manipulations like applying forces and setting velocities in {@link PhysicsManipulation}.
28
+ * - Automatically cleans up physics resources when entities are removed.
29
+ *
30
+ * @example Basic physics setup
31
+ * ```ts
32
+ * // Add to your world to enable physics
33
+ * world.addSystem(PhysicsSystem)
34
+ *
35
+ * // Create a dynamic box that falls due to gravity
36
+ * const box = world.createTransformEntity(boxMesh)
37
+ * box.addComponent(PhysicsShape, {
38
+ * shape: PhysicsShapeType.Box,
39
+ * dimensions: [1, 1, 1]
40
+ * })
41
+ * box.addComponent(PhysicsBody, { state: PhysicsState.Dynamic })
42
+ * ```
43
+ *
44
+ * @category Physics
45
+ * @see {@link PhysicsBody}
46
+ * @see {@link PhysicsShape}
47
+ * @see {@link PhysicsManipulation}
48
+ */
49
+ class PhysicsSystem extends createSystem({
50
+ physicsEntities: {
51
+ required: [PhysicsBody, PhysicsShape],
52
+ },
53
+ manipluatedEntities: {
54
+ required: [PhysicsBody, PhysicsManipulation],
55
+ where: [ne(PhysicsBody, '_engineBody', 0)],
56
+ },
57
+ }, {
58
+ gravity: { type: Types.Vec3, default: [0, -9.81, 0] },
59
+ }) {
60
+ constructor() {
61
+ super(...arguments);
62
+ this.scaleBuffer = new Vector3();
63
+ this.matrixBuffer = new Matrix4();
64
+ }
65
+ async init() {
66
+ const { default: HavokPhysics } = await import('@babylonjs/havok');
67
+ this.havok = await HavokPhysics();
68
+ this.havokWorld = this.havok.HP_World_Create()[1];
69
+ this.havok.HP_World_SetGravity(this.havokWorld, this.config.gravity.value);
70
+ // Unified cleanup
71
+ this.queries.physicsEntities.subscribe('disqualify', (entity) => {
72
+ if (!this.havok || !this.havokWorld) {
73
+ return;
74
+ }
75
+ const engineShape = entity.getValue(PhysicsShape, '_engineShape');
76
+ if (engineShape) {
77
+ this.havok.HP_Shape_Release([BigInt(engineShape)]);
78
+ }
79
+ const engineBody = entity.getValue(PhysicsBody, '_engineBody');
80
+ if (engineBody) {
81
+ this.havok.HP_World_RemoveBody(this.havokWorld, [BigInt(engineBody)]);
82
+ }
83
+ });
84
+ }
85
+ update(delta) {
86
+ if (this.havok && this.havokWorld) {
87
+ this.havok.HP_World_SetIdealStepTime(this.havokWorld, delta);
88
+ this.havok.HP_World_Step(this.havokWorld, delta);
89
+ this.bodyBuffer = this.havok.HP_World_GetBodyBuffer(this.havokWorld)[1];
90
+ }
91
+ this.queries.physicsEntities.entities.forEach((entity) => {
92
+ var _a, _b, _c;
93
+ if (!entity.object3D || !this.havok || !this.havokWorld) {
94
+ return;
95
+ }
96
+ const engineShape = entity.getValue(PhysicsShape, '_engineShape');
97
+ const engineBody = entity.getValue(PhysicsBody, '_engineBody');
98
+ if (!engineShape) {
99
+ const dimensionsView = entity.getVectorView(PhysicsShape, 'dimensions');
100
+ this.createHavokShapes(entity, dimensionsView);
101
+ return;
102
+ }
103
+ else {
104
+ if (!engineBody && engineShape) {
105
+ const bodyRepsonse = this.createBody([BigInt(engineShape)], entity.object3D.position, entity.object3D.quaternion, entity.getValue(PhysicsBody, 'state'), (_a = entity.getValue(PhysicsBody, 'linearDamping')) !== null && _a !== void 0 ? _a : DEFAULT_LINEAR_DAMPING, (_b = entity.getValue(PhysicsBody, 'gravityFactor')) !== null && _b !== void 0 ? _b : DEFAULT_GRAVITY_FACTOR);
106
+ if (bodyRepsonse) {
107
+ entity.setValue(PhysicsBody, '_engineBody', Number(bodyRepsonse.createdBody));
108
+ entity.setValue(PhysicsBody, '_engineOffset', bodyRepsonse.offset);
109
+ }
110
+ }
111
+ else if (engineBody && this.bodyBuffer) {
112
+ const linearVelocity = this.havok.HP_Body_GetLinearVelocity([
113
+ BigInt(engineBody),
114
+ ]);
115
+ const angularVelocity = this.havok.HP_Body_GetAngularVelocity([
116
+ BigInt(engineBody),
117
+ ]);
118
+ const linearVelocityView = entity.getVectorView(PhysicsBody, '_linearVelocity');
119
+ const angularVelocityView = entity.getVectorView(PhysicsBody, '_angularVelocity');
120
+ linearVelocityView.set(linearVelocity[1]);
121
+ angularVelocityView.set(angularVelocity[1]);
122
+ // Processing physics body motion here
123
+ const position = entity.object3D.position;
124
+ const quaternion = entity.object3D.quaternion;
125
+ if (entity.hasComponent(Pressed)) {
126
+ this.havok.HP_Body_SetTargetQTransform([BigInt(engineBody)], [
127
+ [position.x, position.y, position.z],
128
+ [quaternion.x, quaternion.y, quaternion.z, quaternion.w],
129
+ ]);
130
+ return;
131
+ }
132
+ const bodyOffset = (_c = entity.getValue(PhysicsBody, '_engineOffset')) !== null && _c !== void 0 ? _c : 0;
133
+ const transformBuffer = new Float32Array(this.havok.HEAPU8.buffer, this.bodyBuffer + bodyOffset, 16);
134
+ for (let mi = 0; mi < 15; mi++) {
135
+ if ((mi & 3) != 3) {
136
+ this.matrixBuffer.elements[mi] = transformBuffer[mi];
137
+ }
138
+ }
139
+ this.matrixBuffer.elements[15] = 1.0;
140
+ this.matrixBuffer.decompose(position, quaternion, this.scaleBuffer);
141
+ }
142
+ }
143
+ });
144
+ this.queries.manipluatedEntities.entities.forEach((entity) => {
145
+ const engineBody = entity.getValue(PhysicsBody, '_engineBody');
146
+ if (!entity.object3D || !this.havok || !this.havokWorld || !engineBody) {
147
+ return;
148
+ }
149
+ // Applying one time force to the body
150
+ if (!entity
151
+ .getVectorView(PhysicsManipulation, 'force')
152
+ .every((element) => element === 0)) {
153
+ const force = entity.getVectorView(PhysicsManipulation, 'force');
154
+ this.havok.HP_Body_ApplyImpulse([BigInt(engineBody)], [
155
+ entity.object3D.position.x,
156
+ entity.object3D.position.y,
157
+ entity.object3D.position.z,
158
+ ], [force[0] * delta, force[1] * delta, force[2] * delta]);
159
+ }
160
+ // Applying one time linear velocity to the body
161
+ if (!entity
162
+ .getVectorView(PhysicsManipulation, 'linearVelocity')
163
+ .every((element) => element === 0)) {
164
+ const linearVelocity = entity.getVectorView(PhysicsManipulation, 'linearVelocity');
165
+ this.havok.HP_Body_SetLinearVelocity([BigInt(engineBody)], [linearVelocity[0], linearVelocity[1], linearVelocity[2]]);
166
+ }
167
+ // Applying one time angular velocity to the body
168
+ if (!entity
169
+ .getVectorView(PhysicsManipulation, 'angularVelocity')
170
+ .every((element) => element === 0)) {
171
+ const angularVelocity = entity.getVectorView(PhysicsManipulation, 'angularVelocity');
172
+ this.havok.HP_Body_SetAngularVelocity([BigInt(engineBody)], [angularVelocity[0], angularVelocity[1], angularVelocity[2]]);
173
+ }
174
+ entity.removeComponent(PhysicsManipulation);
175
+ });
176
+ }
177
+ createBody(shape, position, quaternion, state, linearDamping, gravityFactor) {
178
+ if (!this.havok || !this.havokWorld) {
179
+ return;
180
+ }
181
+ const body = this.havok.HP_Body_Create()[1];
182
+ this.havok.HP_Body_SetShape(body, shape);
183
+ this.havok.HP_Body_SetQTransform(body, [
184
+ [position.x, position.y, position.z],
185
+ [quaternion.x, quaternion.y, quaternion.z, quaternion.w],
186
+ ]);
187
+ this.havok.HP_Body_SetLinearDamping(body, linearDamping);
188
+ this.havok.HP_Body_SetGravityFactor(body, gravityFactor);
189
+ this.havok.HP_World_AddBody(this.havokWorld, body, false);
190
+ let motionType;
191
+ switch (state) {
192
+ case PhysicsState.Static:
193
+ motionType = this.havok.MotionType.STATIC;
194
+ break;
195
+ case PhysicsState.Kinematic:
196
+ motionType = this.havok.MotionType.KINEMATIC;
197
+ break;
198
+ case PhysicsState.Dynamic:
199
+ default:
200
+ motionType = this.havok.MotionType.DYNAMIC;
201
+ }
202
+ this.havok.HP_Body_SetMotionType(body, motionType);
203
+ return {
204
+ offset: this.havok.HP_Body_GetWorldTransformOffset(body)[1],
205
+ createdBody: body,
206
+ };
207
+ }
208
+ createHavokShapes(entity, dimensionsView) {
209
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
210
+ if (!entity.object3D) {
211
+ console.warn('PhysicsSystem: No object3D attached to entity', entity.index);
212
+ return;
213
+ }
214
+ // Determine the actual shape type (resolve Auto if needed)
215
+ let shapeType = entity.getValue(PhysicsShape, 'shape');
216
+ if (shapeType === PhysicsShapeType.Auto) {
217
+ const detection = detectShapeFromGeometry(entity.object3D);
218
+ // Update the entity's shape type and dimensions if they were auto-detected
219
+ entity.setValue(PhysicsShape, 'shape', detection.shapeType);
220
+ shapeType = detection.shapeType;
221
+ if (detection.dimensions) {
222
+ // Re-read the updated dimensions view
223
+ dimensionsView.set(detection.dimensions);
224
+ }
225
+ }
226
+ switch (shapeType) {
227
+ case PhysicsShapeType.Sphere: {
228
+ const ballShape = this.createBallShape(dimensionsView[0], (_a = entity.getValue(PhysicsShape, 'density')) !== null && _a !== void 0 ? _a : 1.0, (_b = entity.getValue(PhysicsShape, 'restitution')) !== null && _b !== void 0 ? _b : 0, (_c = entity.getValue(PhysicsShape, 'friction')) !== null && _c !== void 0 ? _c : 0.5);
229
+ if (ballShape) {
230
+ PhysicsShape.data._engineShape[entity.index] = Number(ballShape);
231
+ }
232
+ else {
233
+ console.warn('PhysicsSystem: Failed to create ball shape for entity', entity.index);
234
+ }
235
+ break;
236
+ }
237
+ case PhysicsShapeType.Box: {
238
+ const boxShape = this.createBoxShape(dimensionsView, (_d = entity.getValue(PhysicsShape, 'density')) !== null && _d !== void 0 ? _d : 1.0, (_e = entity.getValue(PhysicsShape, 'restitution')) !== null && _e !== void 0 ? _e : 0, (_f = entity.getValue(PhysicsShape, 'friction')) !== null && _f !== void 0 ? _f : 0.5);
239
+ if (boxShape) {
240
+ PhysicsShape.data._engineShape[entity.index] = Number(boxShape);
241
+ }
242
+ else {
243
+ console.warn('PhysicsSystem: Failed to create box shape for entity', entity.index);
244
+ }
245
+ break;
246
+ }
247
+ case PhysicsShapeType.Cylinder: {
248
+ const cylinderShape = this.createCylinderShape(dimensionsView[0], // radius
249
+ dimensionsView[1], // height
250
+ (_g = entity.getValue(PhysicsShape, 'density')) !== null && _g !== void 0 ? _g : 1.0, (_h = entity.getValue(PhysicsShape, 'restitution')) !== null && _h !== void 0 ? _h : 0, (_j = entity.getValue(PhysicsShape, 'friction')) !== null && _j !== void 0 ? _j : 0.5);
251
+ if (cylinderShape) {
252
+ PhysicsShape.data._engineShape[entity.index] = Number(cylinderShape);
253
+ }
254
+ else {
255
+ console.warn('PhysicsSystem: Failed to create cylinder shape for entity', entity.index);
256
+ }
257
+ break;
258
+ }
259
+ case PhysicsShapeType.ConvexHull: {
260
+ const convexHullShape = this.createConvexHullShape(entity.object3D, (_k = entity.getValue(PhysicsShape, 'density')) !== null && _k !== void 0 ? _k : 1.0, (_l = entity.getValue(PhysicsShape, 'restitution')) !== null && _l !== void 0 ? _l : 0, (_m = entity.getValue(PhysicsShape, 'friction')) !== null && _m !== void 0 ? _m : 0.5);
261
+ if (convexHullShape) {
262
+ PhysicsShape.data._engineShape[entity.index] =
263
+ Number(convexHullShape);
264
+ }
265
+ else {
266
+ console.warn('PhysicsSystem: Failed to create convex hull shape for entity', entity.index);
267
+ }
268
+ break;
269
+ }
270
+ case PhysicsShapeType.TriMesh: {
271
+ const triMeshShape = this.createTriMeshShape(entity.object3D, (_o = entity.getValue(PhysicsShape, 'density')) !== null && _o !== void 0 ? _o : 1.0, (_p = entity.getValue(PhysicsShape, 'restitution')) !== null && _p !== void 0 ? _p : 0, (_q = entity.getValue(PhysicsShape, 'friction')) !== null && _q !== void 0 ? _q : 0.5);
272
+ if (triMeshShape) {
273
+ PhysicsShape.data._engineShape[entity.index] = Number(triMeshShape);
274
+ }
275
+ else {
276
+ console.warn('PhysicsSystem: Failed to create tri-mesh shape for entity', entity.index);
277
+ }
278
+ break;
279
+ }
280
+ }
281
+ }
282
+ createBallShape(radius, density, restitution, friction) {
283
+ if (!this.havok) {
284
+ console.warn('PhysicsSystem: Cannot create ball shape - Havok physics engine not initialized');
285
+ return;
286
+ }
287
+ const ballShape = this.havok.HP_Shape_CreateSphere([0, 0, 0], radius)[1];
288
+ this.havok.HP_Shape_SetDensity(ballShape, density);
289
+ this.havok.HP_Shape_SetMaterial(ballShape, [
290
+ friction,
291
+ friction,
292
+ restitution,
293
+ this.havok.MaterialCombine.MINIMUM,
294
+ this.havok.MaterialCombine.MAXIMUM,
295
+ ]);
296
+ return ballShape;
297
+ }
298
+ createBoxShape(scale, density, restitution, friction) {
299
+ if (!this.havok) {
300
+ console.warn('PhysicsSystem: Cannot create box shape - Havok physics engine not initialized');
301
+ return;
302
+ }
303
+ const boxShape = this.havok.HP_Shape_CreateBox([0, 0, 0], [0, 0, 0, 1], [scale[0], scale[1], scale[2]])[1];
304
+ this.havok.HP_Shape_SetDensity(boxShape, density);
305
+ this.havok.HP_Shape_SetMaterial(boxShape, [
306
+ friction,
307
+ friction,
308
+ restitution,
309
+ this.havok.MaterialCombine.MINIMUM,
310
+ this.havok.MaterialCombine.MAXIMUM,
311
+ ]);
312
+ return boxShape;
313
+ }
314
+ createCylinderShape(radius, height, density, restitution, friction) {
315
+ if (!this.havok) {
316
+ console.warn('PhysicsSystem: Cannot create cylinder shape - Havok physics engine not initialized');
317
+ return;
318
+ }
319
+ const cylinderShape = this.havok.HP_Shape_CreateCylinder([0, 0, 0], [0, height, 0], radius)[1];
320
+ this.havok.HP_Shape_SetDensity(cylinderShape, density);
321
+ this.havok.HP_Shape_SetMaterial(cylinderShape, [
322
+ friction,
323
+ friction,
324
+ restitution,
325
+ this.havok.MaterialCombine.MINIMUM,
326
+ this.havok.MaterialCombine.MAXIMUM,
327
+ ]);
328
+ return cylinderShape;
329
+ }
330
+ createConvexHullShape(object3D, density, restitution, friction) {
331
+ if (!this.havok) {
332
+ console.warn('PhysicsSystem: Cannot create convex hull shape - Havok physics engine not initialized');
333
+ return;
334
+ }
335
+ const geometry = object3D instanceof Mesh
336
+ ? object3D.geometry
337
+ : generateMergedGeometry(object3D);
338
+ const vertices = this.getVertices(geometry.attributes.position.array);
339
+ if (!vertices) {
340
+ console.warn('PhysicsSystem: Failed to get vertices for convex hull shape with object3D name ' +
341
+ object3D.name +
342
+ ' &id ' +
343
+ object3D.id);
344
+ return;
345
+ }
346
+ const convexHullShape = this.havok.HP_Shape_CreateConvexHull(vertices.offset, vertices.numObjects / 3)[1];
347
+ this.havok._free(vertices.offset);
348
+ this.havok.HP_Shape_SetDensity(convexHullShape, density);
349
+ this.havok.HP_Shape_SetMaterial(convexHullShape, [
350
+ friction,
351
+ friction,
352
+ restitution,
353
+ this.havok.MaterialCombine.MINIMUM,
354
+ this.havok.MaterialCombine.MAXIMUM,
355
+ ]);
356
+ return convexHullShape;
357
+ }
358
+ createTriMeshShape(object3D, density, restitution, friction) {
359
+ if (!this.havok) {
360
+ console.warn('PhysicsSystem: Cannot create tri-mesh shape - Havok physics engine not initialized');
361
+ return;
362
+ }
363
+ const geometry = object3D instanceof Mesh
364
+ ? object3D.geometry
365
+ : generateMergedGeometry(object3D);
366
+ const vertices = this.getVertices(geometry.attributes.position.array);
367
+ const indices = this.getIndices(geometry.index.array);
368
+ if (!vertices || !indices) {
369
+ if (!vertices) {
370
+ console.warn('PhysicsSystem: Failed to get vertices for tri-mesh shape with object3D name ' +
371
+ object3D.name +
372
+ ' &id ' +
373
+ object3D.id);
374
+ }
375
+ if (!indices) {
376
+ console.warn('PhysicsSystem: Failed to get indices for tri-mesh shape with object3D name ' +
377
+ object3D.name +
378
+ ' &id ' +
379
+ object3D.id);
380
+ }
381
+ return;
382
+ }
383
+ const triMeshShape = this.havok.HP_Shape_CreateMesh(vertices.offset, vertices.numObjects / 3, indices.offset, indices.numObjects / 3)[1];
384
+ this.havok._free(vertices.offset);
385
+ this.havok._free(indices.offset);
386
+ this.havok.HP_Shape_SetDensity(triMeshShape, density);
387
+ this.havok.HP_Shape_SetMaterial(triMeshShape, [
388
+ friction,
389
+ friction,
390
+ restitution,
391
+ this.havok.MaterialCombine.MINIMUM,
392
+ this.havok.MaterialCombine.MAXIMUM,
393
+ ]);
394
+ return triMeshShape;
395
+ }
396
+ getVertices(vertices) {
397
+ const bytesPerFloat = 4;
398
+ const nBytes = vertices.length * bytesPerFloat;
399
+ const bufferBegin = this.havok._malloc(nBytes);
400
+ const ret = new Float32Array(this.havok.HEAPU8.buffer, bufferBegin, vertices.length);
401
+ for (let i = 0; i < vertices.length; i++) {
402
+ ret[i] = vertices[i];
403
+ }
404
+ return { offset: bufferBegin, numObjects: vertices.length };
405
+ }
406
+ getIndices(indices) {
407
+ const bytesPerInt = 4;
408
+ const nBytes = indices.length * bytesPerInt;
409
+ const bufferBegin = this.havok._malloc(nBytes);
410
+ const ret = new Int32Array(this.havok.HEAPU8.buffer, bufferBegin, indices.length);
411
+ for (let i = 0; i < indices.length; i++) {
412
+ ret[i] = indices[i];
413
+ }
414
+ return { offset: bufferBegin, numObjects: indices.length };
415
+ }
416
+ }
417
+
418
+ export { PhysicsSystem };
419
+ //# sourceMappingURL=physics-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physics-system.js","sources":["../../src/physics/physics-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { Types } from '.././index.js';
8
+ /** Motion type for {@link PhysicsBody}. @category Physics */
9
+ export declare const PhysicsState: {
10
+ /** Static bodies are bodies which never move. Use this motion type for your immovable objects like walls and floors.
11
+ * It would still affect other bodies in the engine. */
12
+ readonly Static: "STATIC";
13
+ /** Bodies which can move and respond to forces, collisions, and gravity. */
14
+ readonly Dynamic: "DYNAMIC";
15
+ /** Kinematic bodies that can move just like dynamic bodies. The difference is that kinematic bodies won't be affected by any other bodies.
16
+ * Kinematic bodies will still push dynamic bodies out of the way but the kinematic body won't be affected by those collisions. */
17
+ readonly Kinematic: "KINEMATIC";
18
+ };
19
+ export declare const DEFAULT_LINEAR_DAMPING = 0;
20
+ export declare const DEFAULT_GRAVITY_FACTOR = 1;
21
+ /**
22
+ * Component for physics bodies. A physics body is a virtual object that represents a physical
23
+ * object in a simulation.
24
+ *
25
+ * @remarks
26
+ * - Static bodies are used for immovable objects like walls and floors.
27
+ * - Dynamic bodies respond to forces, collisions, and gravity.
28
+ * - Kinematic bodies can be moved programmatically but don't respond to physics forces.
29
+ * - Internal properties like `_engineBody` are managed automatically by {@link PhysicsSystem}.
30
+ *
31
+ * @example Add a dynamic physics body to an entity
32
+ * ```ts
33
+ * entity.addComponent(PhysicsBody, {
34
+ * state: PhysicsState.Dynamic
35
+ * })
36
+ * ```
37
+ *
38
+ * @category Physics
39
+ * @see {@link PhysicsSystem}
40
+ * @see {@link PhysicsShape}
41
+ */
42
+ export declare const PhysicsBody: import("elics").Component<{
43
+ /** The body's motion type in Physics Engine. {@link PhysicsState} */
44
+ state: {
45
+ type: Types.Enum;
46
+ enum: {
47
+ /** Static bodies are bodies which never move. Use this motion type for your immovable objects like walls and floors.
48
+ * It would still affect other bodies in the engine. */
49
+ readonly Static: "STATIC";
50
+ /** Bodies which can move and respond to forces, collisions, and gravity. */
51
+ readonly Dynamic: "DYNAMIC";
52
+ /** Kinematic bodies that can move just like dynamic bodies. The difference is that kinematic bodies won't be affected by any other bodies.
53
+ * Kinematic bodies will still push dynamic bodies out of the way but the kinematic body won't be affected by those collisions. */
54
+ readonly Kinematic: "KINEMATIC";
55
+ };
56
+ default: "DYNAMIC";
57
+ };
58
+ linearDamping: {
59
+ type: Types.Float32;
60
+ default: number;
61
+ };
62
+ gravityFactor: {
63
+ type: Types.Float32;
64
+ default: number;
65
+ };
66
+ _linearVelocity: {
67
+ type: Types.Vec3;
68
+ default: [number, number, number];
69
+ };
70
+ _angularVelocity: {
71
+ type: Types.Vec3;
72
+ default: [number, number, number];
73
+ };
74
+ _engineBody: {
75
+ type: Types.Float64;
76
+ default: number;
77
+ };
78
+ _engineOffset: {
79
+ type: Types.Float64;
80
+ default: number;
81
+ };
82
+ }>;
83
+ //# sourceMappingURL=physicsBody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physicsBody.d.ts","sourceRoot":"","sources":["../../src/physics/physicsBody.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAmB,MAAM,eAAe,CAAC;AAEvD,6DAA6D;AAC7D,eAAO,MAAM,YAAY;IACvB;4DACwD;;IAExD,6EAA6E;;IAE7E;wIACoI;;CAE5H,CAAC;AAEX,eAAO,MAAM,sBAAsB,IAAM,CAAC;AAC1C,eAAO,MAAM,sBAAsB,IAAM,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,WAAW;IAGpB,sEAAsE;;;;YArCxE;oEACwD;;YAExD,6EAA6E;;YAE7E;gJACoI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CrI,CAAC"}
@@ -0,0 +1,60 @@
1
+ import '../index.js';
2
+ import { createComponent, Types } from 'elics';
3
+
4
+ /**
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ /** Motion type for {@link PhysicsBody}. @category Physics */
11
+ const PhysicsState = {
12
+ /** Static bodies are bodies which never move. Use this motion type for your immovable objects like walls and floors.
13
+ * It would still affect other bodies in the engine. */
14
+ Static: 'STATIC',
15
+ /** Bodies which can move and respond to forces, collisions, and gravity. */
16
+ Dynamic: 'DYNAMIC',
17
+ /** Kinematic bodies that can move just like dynamic bodies. The difference is that kinematic bodies won't be affected by any other bodies.
18
+ * Kinematic bodies will still push dynamic bodies out of the way but the kinematic body won't be affected by those collisions. */
19
+ Kinematic: 'KINEMATIC',
20
+ };
21
+ const DEFAULT_LINEAR_DAMPING = 0.0;
22
+ const DEFAULT_GRAVITY_FACTOR = 1.0;
23
+ /**
24
+ * Component for physics bodies. A physics body is a virtual object that represents a physical
25
+ * object in a simulation.
26
+ *
27
+ * @remarks
28
+ * - Static bodies are used for immovable objects like walls and floors.
29
+ * - Dynamic bodies respond to forces, collisions, and gravity.
30
+ * - Kinematic bodies can be moved programmatically but don't respond to physics forces.
31
+ * - Internal properties like `_engineBody` are managed automatically by {@link PhysicsSystem}.
32
+ *
33
+ * @example Add a dynamic physics body to an entity
34
+ * ```ts
35
+ * entity.addComponent(PhysicsBody, {
36
+ * state: PhysicsState.Dynamic
37
+ * })
38
+ * ```
39
+ *
40
+ * @category Physics
41
+ * @see {@link PhysicsSystem}
42
+ * @see {@link PhysicsShape}
43
+ */
44
+ const PhysicsBody = createComponent('PhysicsBody', {
45
+ /** The body's motion type in Physics Engine. {@link PhysicsState} */
46
+ state: {
47
+ type: Types.Enum,
48
+ enum: PhysicsState,
49
+ default: PhysicsState.Dynamic,
50
+ },
51
+ linearDamping: { type: Types.Float32, default: 0.0 },
52
+ gravityFactor: { type: Types.Float32, default: 1.0 },
53
+ _linearVelocity: { type: Types.Vec3, default: [0.0, 0.0, 0.0] },
54
+ _angularVelocity: { type: Types.Vec3, default: [0.0, 0.0, 0.0] },
55
+ _engineBody: { type: Types.Float64, default: 0 },
56
+ _engineOffset: { type: Types.Float64, default: 0 },
57
+ }, 'Component to define physics behavior of an entity.');
58
+
59
+ export { DEFAULT_GRAVITY_FACTOR, DEFAULT_LINEAR_DAMPING, PhysicsBody, PhysicsState };
60
+ //# sourceMappingURL=physicsBody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physicsBody.js","sources":["../../src/physics/physicsBody.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;;;;AAKG;AAIH;AACO,MAAM,YAAY,GAAG;AAC1B;AACwD;AACxD,IAAA,MAAM,EAAE,QAAQ;;AAEhB,IAAA,OAAO,EAAE,SAAS;AAClB;AACoI;AACpI,IAAA,SAAS,EAAE,WAAW;;AAGjB,MAAM,sBAAsB,GAAG;AAC/B,MAAM,sBAAsB,GAAG;AAEtC;;;;;;;;;;;;;;;;;;;;AAoBG;AACI,MAAM,WAAW,GAAG,eAAe,CACxC,aAAa,EACb;;AAEE,IAAA,KAAK,EAAE;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,YAAY,CAAC,OAAO;AAC9B,KAAA;IACD,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;IACpD,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;AACpD,IAAA,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;AAC/D,IAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IAChE,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE;IAChD,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE;CACnD,EACD,oDAAoD;;;;"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { Types } from '.././index.js';
8
+ /**
9
+ * Component for applying one‑time physics manipulations to an entity.
10
+ *
11
+ * @remarks
12
+ * - This component is automatically removed after the manipulations are applied.
13
+ * - Force is applied as an impulse at the entity's center of mass.
14
+ * - Setting linear or angular velocity overrides the current velocity.
15
+ * - All manipulations are applied in a single frame, then the component is removed.
16
+ * - Requires the entity to have {@link PhysicsBody}.
17
+ *
18
+ * @example Apply an upward force to make an object jump
19
+ * ```ts
20
+ * entity.addComponent(PhysicsManipulation, {
21
+ * force: [0, 10, 0]
22
+ * })
23
+ * ```
24
+ *
25
+ * @example Set specific velocity for controlled movement
26
+ * ```ts
27
+ * entity.addComponent(PhysicsManipulation, {
28
+ * linearVelocity: [5, 0, 0],
29
+ * angularVelocity: [0, 2, 0]
30
+ * })
31
+ * ```
32
+ *
33
+ * @category Physics
34
+ * @see {@link PhysicsSystem}
35
+ * @see {@link PhysicsBody}
36
+ */
37
+ export declare const PhysicsManipulation: import("elics").Component<{
38
+ force: {
39
+ type: Types.Vec3;
40
+ default: [number, number, number];
41
+ };
42
+ linearVelocity: {
43
+ type: Types.Vec3;
44
+ default: [number, number, number];
45
+ };
46
+ angularVelocity: {
47
+ type: Types.Vec3;
48
+ default: [number, number, number];
49
+ };
50
+ }>;
51
+ //# sourceMappingURL=physicsManipulation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physicsManipulation.d.ts","sourceRoot":"","sources":["../../src/physics/physicsManipulation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAmB,MAAM,eAAe,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;EAQ/B,CAAC"}