fraxel 0.1.0-alpha.1

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 (501) hide show
  1. package/dist/animation/easing.d.ts +29 -0
  2. package/dist/animation/easing.d.ts.map +1 -0
  3. package/dist/animation/easing.js +50 -0
  4. package/dist/animation/easing.js.map +1 -0
  5. package/dist/animation/index.d.ts +7 -0
  6. package/dist/animation/index.d.ts.map +1 -0
  7. package/dist/animation/index.js +7 -0
  8. package/dist/animation/index.js.map +1 -0
  9. package/dist/animation/multiple.d.ts +26 -0
  10. package/dist/animation/multiple.d.ts.map +1 -0
  11. package/dist/animation/multiple.js +27 -0
  12. package/dist/animation/multiple.js.map +1 -0
  13. package/dist/animation/properties.d.ts +30 -0
  14. package/dist/animation/properties.d.ts.map +1 -0
  15. package/dist/animation/properties.js +32 -0
  16. package/dist/animation/properties.js.map +1 -0
  17. package/dist/animation/sequences.d.ts +30 -0
  18. package/dist/animation/sequences.d.ts.map +1 -0
  19. package/dist/animation/sequences.js +50 -0
  20. package/dist/animation/sequences.js.map +1 -0
  21. package/dist/animation/sprite-sheet.d.ts +81 -0
  22. package/dist/animation/sprite-sheet.d.ts.map +1 -0
  23. package/dist/animation/sprite-sheet.js +103 -0
  24. package/dist/animation/sprite-sheet.js.map +1 -0
  25. package/dist/animation/tween.d.ts +78 -0
  26. package/dist/animation/tween.d.ts.map +1 -0
  27. package/dist/animation/tween.js +103 -0
  28. package/dist/animation/tween.js.map +1 -0
  29. package/dist/assets/index.d.ts +6 -0
  30. package/dist/assets/index.d.ts.map +1 -0
  31. package/dist/assets/index.js +5 -0
  32. package/dist/assets/index.js.map +1 -0
  33. package/dist/assets/load-sound.d.ts +17 -0
  34. package/dist/assets/load-sound.d.ts.map +1 -0
  35. package/dist/assets/load-sound.js +35 -0
  36. package/dist/assets/load-sound.js.map +1 -0
  37. package/dist/assets/load-texture.d.ts +12 -0
  38. package/dist/assets/load-texture.d.ts.map +1 -0
  39. package/dist/assets/load-texture.js +40 -0
  40. package/dist/assets/load-texture.js.map +1 -0
  41. package/dist/assets/loader.d.ts +59 -0
  42. package/dist/assets/loader.d.ts.map +1 -0
  43. package/dist/assets/loader.js +65 -0
  44. package/dist/assets/loader.js.map +1 -0
  45. package/dist/assets/texture.d.ts +36 -0
  46. package/dist/assets/texture.d.ts.map +1 -0
  47. package/dist/assets/texture.js +49 -0
  48. package/dist/assets/texture.js.map +1 -0
  49. package/dist/audio/audio-context.d.ts +14 -0
  50. package/dist/audio/audio-context.d.ts.map +1 -0
  51. package/dist/audio/audio-context.js +20 -0
  52. package/dist/audio/audio-context.js.map +1 -0
  53. package/dist/audio/index.d.ts +2 -0
  54. package/dist/audio/index.d.ts.map +1 -0
  55. package/dist/audio/index.js +2 -0
  56. package/dist/audio/index.js.map +1 -0
  57. package/dist/collision/broadphase/spatial-hash.d.ts +32 -0
  58. package/dist/collision/broadphase/spatial-hash.d.ts.map +1 -0
  59. package/dist/collision/broadphase/spatial-hash.js +87 -0
  60. package/dist/collision/broadphase/spatial-hash.js.map +1 -0
  61. package/dist/collision/collision-system.d.ts +52 -0
  62. package/dist/collision/collision-system.d.ts.map +1 -0
  63. package/dist/collision/collision-system.js +278 -0
  64. package/dist/collision/collision-system.js.map +1 -0
  65. package/dist/collision/events/collision-emitter.d.ts +38 -0
  66. package/dist/collision/events/collision-emitter.d.ts.map +1 -0
  67. package/dist/collision/events/collision-emitter.js +47 -0
  68. package/dist/collision/events/collision-emitter.js.map +1 -0
  69. package/dist/collision/index.d.ts +13 -0
  70. package/dist/collision/index.d.ts.map +1 -0
  71. package/dist/collision/index.js +11 -0
  72. package/dist/collision/index.js.map +1 -0
  73. package/dist/collision/narrowphase/detector.d.ts +26 -0
  74. package/dist/collision/narrowphase/detector.d.ts.map +1 -0
  75. package/dist/collision/narrowphase/detector.js +70 -0
  76. package/dist/collision/narrowphase/detector.js.map +1 -0
  77. package/dist/collision/narrowphase/shapes.d.ts +91 -0
  78. package/dist/collision/narrowphase/shapes.d.ts.map +1 -0
  79. package/dist/collision/narrowphase/shapes.js +52 -0
  80. package/dist/collision/narrowphase/shapes.js.map +1 -0
  81. package/dist/collision/physics/physics-body.d.ts +38 -0
  82. package/dist/collision/physics/physics-body.d.ts.map +1 -0
  83. package/dist/collision/physics/physics-body.js +53 -0
  84. package/dist/collision/physics/physics-body.js.map +1 -0
  85. package/dist/collision/physics/physics-system.d.ts +23 -0
  86. package/dist/collision/physics/physics-system.d.ts.map +1 -0
  87. package/dist/collision/physics/physics-system.js +86 -0
  88. package/dist/collision/physics/physics-system.js.map +1 -0
  89. package/dist/collision/physics/resolver.d.ts +16 -0
  90. package/dist/collision/physics/resolver.d.ts.map +1 -0
  91. package/dist/collision/physics/resolver.js +91 -0
  92. package/dist/collision/physics/resolver.js.map +1 -0
  93. package/dist/collision/types.d.ts +22 -0
  94. package/dist/collision/types.d.ts.map +1 -0
  95. package/dist/collision/types.js +2 -0
  96. package/dist/collision/types.js.map +1 -0
  97. package/dist/core/game-config.d.ts +34 -0
  98. package/dist/core/game-config.d.ts.map +1 -0
  99. package/dist/core/game-config.js +31 -0
  100. package/dist/core/game-config.js.map +1 -0
  101. package/dist/core/game.d.ts +86 -0
  102. package/dist/core/game.d.ts.map +1 -0
  103. package/dist/core/game.js +166 -0
  104. package/dist/core/game.js.map +1 -0
  105. package/dist/core/index.d.ts +6 -0
  106. package/dist/core/index.d.ts.map +1 -0
  107. package/dist/core/index.js +6 -0
  108. package/dist/core/index.js.map +1 -0
  109. package/dist/core/scene-manager.d.ts +28 -0
  110. package/dist/core/scene-manager.d.ts.map +1 -0
  111. package/dist/core/scene-manager.js +65 -0
  112. package/dist/core/scene-manager.js.map +1 -0
  113. package/dist/core/scene.d.ts +43 -0
  114. package/dist/core/scene.d.ts.map +1 -0
  115. package/dist/core/scene.js +48 -0
  116. package/dist/core/scene.js.map +1 -0
  117. package/dist/core/theme.d.ts +63 -0
  118. package/dist/core/theme.d.ts.map +1 -0
  119. package/dist/core/theme.js +59 -0
  120. package/dist/core/theme.js.map +1 -0
  121. package/dist/errors/animation.d.ts +24 -0
  122. package/dist/errors/animation.d.ts.map +1 -0
  123. package/dist/errors/animation.js +29 -0
  124. package/dist/errors/animation.js.map +1 -0
  125. package/dist/errors/assets.d.ts +34 -0
  126. package/dist/errors/assets.d.ts.map +1 -0
  127. package/dist/errors/assets.js +41 -0
  128. package/dist/errors/assets.js.map +1 -0
  129. package/dist/errors/base.d.ts +12 -0
  130. package/dist/errors/base.d.ts.map +1 -0
  131. package/dist/errors/base.js +15 -0
  132. package/dist/errors/base.js.map +1 -0
  133. package/dist/errors/env.d.ts +24 -0
  134. package/dist/errors/env.d.ts.map +1 -0
  135. package/dist/errors/env.js +29 -0
  136. package/dist/errors/env.js.map +1 -0
  137. package/dist/errors/hook.d.ts +46 -0
  138. package/dist/errors/hook.d.ts.map +1 -0
  139. package/dist/errors/hook.js +55 -0
  140. package/dist/errors/hook.js.map +1 -0
  141. package/dist/errors/index.d.ts +11 -0
  142. package/dist/errors/index.d.ts.map +1 -0
  143. package/dist/errors/index.js +11 -0
  144. package/dist/errors/index.js.map +1 -0
  145. package/dist/errors/jsx.d.ts +26 -0
  146. package/dist/errors/jsx.d.ts.map +1 -0
  147. package/dist/errors/jsx.js +45 -0
  148. package/dist/errors/jsx.js.map +1 -0
  149. package/dist/errors/lifecycle.d.ts +35 -0
  150. package/dist/errors/lifecycle.d.ts.map +1 -0
  151. package/dist/errors/lifecycle.js +42 -0
  152. package/dist/errors/lifecycle.js.map +1 -0
  153. package/dist/errors/math.d.ts +24 -0
  154. package/dist/errors/math.d.ts.map +1 -0
  155. package/dist/errors/math.js +34 -0
  156. package/dist/errors/math.js.map +1 -0
  157. package/dist/errors/node.d.ts +68 -0
  158. package/dist/errors/node.d.ts.map +1 -0
  159. package/dist/errors/node.js +87 -0
  160. package/dist/errors/node.js.map +1 -0
  161. package/dist/errors/scene.d.ts +35 -0
  162. package/dist/errors/scene.d.ts.map +1 -0
  163. package/dist/errors/scene.js +42 -0
  164. package/dist/errors/scene.js.map +1 -0
  165. package/dist/events/event.d.ts +106 -0
  166. package/dist/events/event.d.ts.map +1 -0
  167. package/dist/events/event.js +125 -0
  168. package/dist/events/event.js.map +1 -0
  169. package/dist/events/index.d.ts +2 -0
  170. package/dist/events/index.d.ts.map +1 -0
  171. package/dist/events/index.js +2 -0
  172. package/dist/events/index.js.map +1 -0
  173. package/dist/events/types.d.ts +20 -0
  174. package/dist/events/types.d.ts.map +1 -0
  175. package/dist/events/types.js +2 -0
  176. package/dist/events/types.js.map +1 -0
  177. package/dist/hooks/context.d.ts +15 -0
  178. package/dist/hooks/context.d.ts.map +1 -0
  179. package/dist/hooks/context.js +26 -0
  180. package/dist/hooks/context.js.map +1 -0
  181. package/dist/hooks/deriveds/by-nodes/index.d.ts +7 -0
  182. package/dist/hooks/deriveds/by-nodes/index.d.ts.map +1 -0
  183. package/dist/hooks/deriveds/by-nodes/index.js +7 -0
  184. package/dist/hooks/deriveds/by-nodes/index.js.map +1 -0
  185. package/dist/hooks/deriveds/by-nodes/use-animation.d.ts +44 -0
  186. package/dist/hooks/deriveds/by-nodes/use-animation.d.ts.map +1 -0
  187. package/dist/hooks/deriveds/by-nodes/use-animation.js +61 -0
  188. package/dist/hooks/deriveds/by-nodes/use-animation.js.map +1 -0
  189. package/dist/hooks/deriveds/by-nodes/use-audio.d.ts +33 -0
  190. package/dist/hooks/deriveds/by-nodes/use-audio.d.ts.map +1 -0
  191. package/dist/hooks/deriveds/by-nodes/use-audio.js +43 -0
  192. package/dist/hooks/deriveds/by-nodes/use-audio.js.map +1 -0
  193. package/dist/hooks/deriveds/by-nodes/use-clickable.d.ts +32 -0
  194. package/dist/hooks/deriveds/by-nodes/use-clickable.d.ts.map +1 -0
  195. package/dist/hooks/deriveds/by-nodes/use-clickable.js +43 -0
  196. package/dist/hooks/deriveds/by-nodes/use-clickable.js.map +1 -0
  197. package/dist/hooks/deriveds/by-nodes/use-collider.d.ts +35 -0
  198. package/dist/hooks/deriveds/by-nodes/use-collider.d.ts.map +1 -0
  199. package/dist/hooks/deriveds/by-nodes/use-collider.js +55 -0
  200. package/dist/hooks/deriveds/by-nodes/use-collider.js.map +1 -0
  201. package/dist/hooks/deriveds/by-nodes/use-ray-cast.d.ts +35 -0
  202. package/dist/hooks/deriveds/by-nodes/use-ray-cast.d.ts.map +1 -0
  203. package/dist/hooks/deriveds/by-nodes/use-ray-cast.js +47 -0
  204. package/dist/hooks/deriveds/by-nodes/use-ray-cast.js.map +1 -0
  205. package/dist/hooks/deriveds/by-nodes/use-timer.d.ts +34 -0
  206. package/dist/hooks/deriveds/by-nodes/use-timer.d.ts.map +1 -0
  207. package/dist/hooks/deriveds/by-nodes/use-timer.js +48 -0
  208. package/dist/hooks/deriveds/by-nodes/use-timer.js.map +1 -0
  209. package/dist/hooks/deriveds/index.d.ts +5 -0
  210. package/dist/hooks/deriveds/index.d.ts.map +1 -0
  211. package/dist/hooks/deriveds/index.js +5 -0
  212. package/dist/hooks/deriveds/index.js.map +1 -0
  213. package/dist/hooks/deriveds/use-condition.d.ts +37 -0
  214. package/dist/hooks/deriveds/use-condition.d.ts.map +1 -0
  215. package/dist/hooks/deriveds/use-condition.js +47 -0
  216. package/dist/hooks/deriveds/use-condition.js.map +1 -0
  217. package/dist/hooks/deriveds/use-match.d.ts +26 -0
  218. package/dist/hooks/deriveds/use-match.d.ts.map +1 -0
  219. package/dist/hooks/deriveds/use-match.js +38 -0
  220. package/dist/hooks/deriveds/use-match.js.map +1 -0
  221. package/dist/hooks/deriveds/use-partial-node.d.ts +22 -0
  222. package/dist/hooks/deriveds/use-partial-node.d.ts.map +1 -0
  223. package/dist/hooks/deriveds/use-partial-node.js +25 -0
  224. package/dist/hooks/deriveds/use-partial-node.js.map +1 -0
  225. package/dist/hooks/deriveds/use-when.d.ts +28 -0
  226. package/dist/hooks/deriveds/use-when.d.ts.map +1 -0
  227. package/dist/hooks/deriveds/use-when.js +35 -0
  228. package/dist/hooks/deriveds/use-when.js.map +1 -0
  229. package/dist/hooks/index.d.ts +16 -0
  230. package/dist/hooks/index.d.ts.map +1 -0
  231. package/dist/hooks/index.js +16 -0
  232. package/dist/hooks/index.js.map +1 -0
  233. package/dist/hooks/use-child.d.ts +24 -0
  234. package/dist/hooks/use-child.d.ts.map +1 -0
  235. package/dist/hooks/use-child.js +37 -0
  236. package/dist/hooks/use-child.js.map +1 -0
  237. package/dist/hooks/use-computed.d.ts +28 -0
  238. package/dist/hooks/use-computed.d.ts.map +1 -0
  239. package/dist/hooks/use-computed.js +41 -0
  240. package/dist/hooks/use-computed.js.map +1 -0
  241. package/dist/hooks/use-context.d.ts +58 -0
  242. package/dist/hooks/use-context.d.ts.map +1 -0
  243. package/dist/hooks/use-context.js +77 -0
  244. package/dist/hooks/use-context.js.map +1 -0
  245. package/dist/hooks/use-effect.d.ts +24 -0
  246. package/dist/hooks/use-effect.d.ts.map +1 -0
  247. package/dist/hooks/use-effect.js +63 -0
  248. package/dist/hooks/use-effect.js.map +1 -0
  249. package/dist/hooks/use-event.d.ts +29 -0
  250. package/dist/hooks/use-event.d.ts.map +1 -0
  251. package/dist/hooks/use-event.js +30 -0
  252. package/dist/hooks/use-event.js.map +1 -0
  253. package/dist/hooks/use-game.d.ts +17 -0
  254. package/dist/hooks/use-game.d.ts.map +1 -0
  255. package/dist/hooks/use-game.js +35 -0
  256. package/dist/hooks/use-game.js.map +1 -0
  257. package/dist/hooks/use-mount.d.ts +21 -0
  258. package/dist/hooks/use-mount.d.ts.map +1 -0
  259. package/dist/hooks/use-mount.js +33 -0
  260. package/dist/hooks/use-mount.js.map +1 -0
  261. package/dist/hooks/use-node.d.ts +42 -0
  262. package/dist/hooks/use-node.d.ts.map +1 -0
  263. package/dist/hooks/use-node.js +63 -0
  264. package/dist/hooks/use-node.js.map +1 -0
  265. package/dist/hooks/use-ref.d.ts +27 -0
  266. package/dist/hooks/use-ref.d.ts.map +1 -0
  267. package/dist/hooks/use-ref.js +33 -0
  268. package/dist/hooks/use-ref.js.map +1 -0
  269. package/dist/hooks/use-script.d.ts +33 -0
  270. package/dist/hooks/use-script.d.ts.map +1 -0
  271. package/dist/hooks/use-script.js +40 -0
  272. package/dist/hooks/use-script.js.map +1 -0
  273. package/dist/hooks/use-signal.d.ts +25 -0
  274. package/dist/hooks/use-signal.d.ts.map +1 -0
  275. package/dist/hooks/use-signal.js +36 -0
  276. package/dist/hooks/use-signal.js.map +1 -0
  277. package/dist/hooks/use-spawn.d.ts +27 -0
  278. package/dist/hooks/use-spawn.d.ts.map +1 -0
  279. package/dist/hooks/use-spawn.js +39 -0
  280. package/dist/hooks/use-spawn.js.map +1 -0
  281. package/dist/hooks/use-trigger.d.ts +51 -0
  282. package/dist/hooks/use-trigger.d.ts.map +1 -0
  283. package/dist/hooks/use-trigger.js +68 -0
  284. package/dist/hooks/use-trigger.js.map +1 -0
  285. package/dist/index.d.ts +11 -0
  286. package/dist/index.d.ts.map +1 -0
  287. package/dist/index.js +11 -0
  288. package/dist/index.js.map +1 -0
  289. package/dist/input/input.d.ts +46 -0
  290. package/dist/input/input.d.ts.map +1 -0
  291. package/dist/input/input.js +159 -0
  292. package/dist/input/input.js.map +1 -0
  293. package/dist/jsx/components/fragment.d.ts +3 -0
  294. package/dist/jsx/components/fragment.d.ts.map +1 -0
  295. package/dist/jsx/components/fragment.js +7 -0
  296. package/dist/jsx/components/fragment.js.map +1 -0
  297. package/dist/jsx/components/game.d.ts +21 -0
  298. package/dist/jsx/components/game.d.ts.map +1 -0
  299. package/dist/jsx/components/game.js +17 -0
  300. package/dist/jsx/components/game.js.map +1 -0
  301. package/dist/jsx/components/index.d.ts +5 -0
  302. package/dist/jsx/components/index.d.ts.map +1 -0
  303. package/dist/jsx/components/index.js +5 -0
  304. package/dist/jsx/components/index.js.map +1 -0
  305. package/dist/jsx/components/list.d.ts +88 -0
  306. package/dist/jsx/components/list.d.ts.map +1 -0
  307. package/dist/jsx/components/list.js +93 -0
  308. package/dist/jsx/components/list.js.map +1 -0
  309. package/dist/jsx/components/scene.d.ts +40 -0
  310. package/dist/jsx/components/scene.d.ts.map +1 -0
  311. package/dist/jsx/components/scene.js +20 -0
  312. package/dist/jsx/components/scene.js.map +1 -0
  313. package/dist/jsx/index.d.ts +5 -0
  314. package/dist/jsx/index.d.ts.map +1 -0
  315. package/dist/jsx/index.js +5 -0
  316. package/dist/jsx/index.js.map +1 -0
  317. package/dist/jsx/jsx.d.ts +3 -0
  318. package/dist/jsx/jsx.d.ts.map +1 -0
  319. package/dist/jsx/jsx.js +4 -0
  320. package/dist/jsx/jsx.js.map +1 -0
  321. package/dist/jsx/render/game.d.ts +41 -0
  322. package/dist/jsx/render/game.d.ts.map +1 -0
  323. package/dist/jsx/render/game.js +86 -0
  324. package/dist/jsx/render/game.js.map +1 -0
  325. package/dist/jsx/render/index.d.ts +3 -0
  326. package/dist/jsx/render/index.d.ts.map +1 -0
  327. package/dist/jsx/render/index.js +3 -0
  328. package/dist/jsx/render/index.js.map +1 -0
  329. package/dist/jsx/render/to-nodes.d.ts +10 -0
  330. package/dist/jsx/render/to-nodes.d.ts.map +1 -0
  331. package/dist/jsx/render/to-nodes.js +52 -0
  332. package/dist/jsx/render/to-nodes.js.map +1 -0
  333. package/dist/jsx/render/types/class-component.d.ts +4 -0
  334. package/dist/jsx/render/types/class-component.d.ts.map +1 -0
  335. package/dist/jsx/render/types/class-component.js +8 -0
  336. package/dist/jsx/render/types/class-component.js.map +1 -0
  337. package/dist/jsx/render/types/func-components.d.ts +4 -0
  338. package/dist/jsx/render/types/func-components.d.ts.map +1 -0
  339. package/dist/jsx/render/types/func-components.js +8 -0
  340. package/dist/jsx/render/types/func-components.js.map +1 -0
  341. package/dist/jsx/render/types/instrinsic-elements.d.ts +6 -0
  342. package/dist/jsx/render/types/instrinsic-elements.d.ts.map +1 -0
  343. package/dist/jsx/render/types/instrinsic-elements.js +41 -0
  344. package/dist/jsx/render/types/instrinsic-elements.js.map +1 -0
  345. package/dist/jsx/types.d.ts +41 -0
  346. package/dist/jsx/types.d.ts.map +1 -0
  347. package/dist/jsx/types.js +2 -0
  348. package/dist/jsx/types.js.map +1 -0
  349. package/dist/jsx/utils.d.ts +4 -0
  350. package/dist/jsx/utils.d.ts.map +1 -0
  351. package/dist/jsx/utils.js +15 -0
  352. package/dist/jsx/utils.js.map +1 -0
  353. package/dist/jsx-runtime.d.ts +6 -0
  354. package/dist/jsx-runtime.d.ts.map +1 -0
  355. package/dist/jsx-runtime.js +6 -0
  356. package/dist/jsx-runtime.js.map +1 -0
  357. package/dist/math/index.d.ts +3 -0
  358. package/dist/math/index.d.ts.map +1 -0
  359. package/dist/math/index.js +2 -0
  360. package/dist/math/index.js.map +1 -0
  361. package/dist/math/types.d.ts +13 -0
  362. package/dist/math/types.d.ts.map +1 -0
  363. package/dist/math/types.js +2 -0
  364. package/dist/math/types.js.map +1 -0
  365. package/dist/math/vector2.d.ts +145 -0
  366. package/dist/math/vector2.d.ts.map +1 -0
  367. package/dist/math/vector2.js +164 -0
  368. package/dist/math/vector2.js.map +1 -0
  369. package/dist/nodes/_node.d.ts +283 -0
  370. package/dist/nodes/_node.d.ts.map +1 -0
  371. package/dist/nodes/_node.js +371 -0
  372. package/dist/nodes/_node.js.map +1 -0
  373. package/dist/nodes/animation-player.d.ts +208 -0
  374. package/dist/nodes/animation-player.d.ts.map +1 -0
  375. package/dist/nodes/animation-player.js +249 -0
  376. package/dist/nodes/animation-player.js.map +1 -0
  377. package/dist/nodes/audio-player.d.ts +128 -0
  378. package/dist/nodes/audio-player.d.ts.map +1 -0
  379. package/dist/nodes/audio-player.js +173 -0
  380. package/dist/nodes/audio-player.js.map +1 -0
  381. package/dist/nodes/group.d.ts +55 -0
  382. package/dist/nodes/group.d.ts.map +1 -0
  383. package/dist/nodes/group.js +54 -0
  384. package/dist/nodes/group.js.map +1 -0
  385. package/dist/nodes/index.d.ts +8 -0
  386. package/dist/nodes/index.d.ts.map +1 -0
  387. package/dist/nodes/index.js +7 -0
  388. package/dist/nodes/index.js.map +1 -0
  389. package/dist/nodes/lib/enum.d.ts +42 -0
  390. package/dist/nodes/lib/enum.d.ts.map +1 -0
  391. package/dist/nodes/lib/enum.js +43 -0
  392. package/dist/nodes/lib/enum.js.map +1 -0
  393. package/dist/nodes/lib/index.d.ts +5 -0
  394. package/dist/nodes/lib/index.d.ts.map +1 -0
  395. package/dist/nodes/lib/index.js +5 -0
  396. package/dist/nodes/lib/index.js.map +1 -0
  397. package/dist/nodes/lib/registry.d.ts +43 -0
  398. package/dist/nodes/lib/registry.d.ts.map +1 -0
  399. package/dist/nodes/lib/registry.js +46 -0
  400. package/dist/nodes/lib/registry.js.map +1 -0
  401. package/dist/nodes/lib/types.d.ts +89 -0
  402. package/dist/nodes/lib/types.d.ts.map +1 -0
  403. package/dist/nodes/lib/types.js +2 -0
  404. package/dist/nodes/lib/types.js.map +1 -0
  405. package/dist/nodes/lib/utils.d.ts +35 -0
  406. package/dist/nodes/lib/utils.d.ts.map +1 -0
  407. package/dist/nodes/lib/utils.js +58 -0
  408. package/dist/nodes/lib/utils.js.map +1 -0
  409. package/dist/nodes/node2d/_node2d.d.ts +59 -0
  410. package/dist/nodes/node2d/_node2d.d.ts.map +1 -0
  411. package/dist/nodes/node2d/_node2d.js +57 -0
  412. package/dist/nodes/node2d/_node2d.js.map +1 -0
  413. package/dist/nodes/node2d/camera.d.ts +64 -0
  414. package/dist/nodes/node2d/camera.d.ts.map +1 -0
  415. package/dist/nodes/node2d/camera.js +72 -0
  416. package/dist/nodes/node2d/camera.js.map +1 -0
  417. package/dist/nodes/node2d/clickable.d.ts +96 -0
  418. package/dist/nodes/node2d/clickable.d.ts.map +1 -0
  419. package/dist/nodes/node2d/clickable.js +117 -0
  420. package/dist/nodes/node2d/clickable.js.map +1 -0
  421. package/dist/nodes/node2d/collider.d.ts +96 -0
  422. package/dist/nodes/node2d/collider.d.ts.map +1 -0
  423. package/dist/nodes/node2d/collider.js +116 -0
  424. package/dist/nodes/node2d/collider.js.map +1 -0
  425. package/dist/nodes/node2d/index.d.ts +12 -0
  426. package/dist/nodes/node2d/index.d.ts.map +1 -0
  427. package/dist/nodes/node2d/index.js +11 -0
  428. package/dist/nodes/node2d/index.js.map +1 -0
  429. package/dist/nodes/node2d/lib/index.d.ts +2 -0
  430. package/dist/nodes/node2d/lib/index.d.ts.map +1 -0
  431. package/dist/nodes/node2d/lib/index.js +2 -0
  432. package/dist/nodes/node2d/lib/index.js.map +1 -0
  433. package/dist/nodes/node2d/lib/utils.d.ts +4 -0
  434. package/dist/nodes/node2d/lib/utils.d.ts.map +1 -0
  435. package/dist/nodes/node2d/lib/utils.js +14 -0
  436. package/dist/nodes/node2d/lib/utils.js.map +1 -0
  437. package/dist/nodes/node2d/ray-cast.d.ts +115 -0
  438. package/dist/nodes/node2d/ray-cast.d.ts.map +1 -0
  439. package/dist/nodes/node2d/ray-cast.js +129 -0
  440. package/dist/nodes/node2d/ray-cast.js.map +1 -0
  441. package/dist/nodes/node2d/rectangle.d.ts +87 -0
  442. package/dist/nodes/node2d/rectangle.d.ts.map +1 -0
  443. package/dist/nodes/node2d/rectangle.js +60 -0
  444. package/dist/nodes/node2d/rectangle.js.map +1 -0
  445. package/dist/nodes/node2d/rigid-body.d.ts +65 -0
  446. package/dist/nodes/node2d/rigid-body.d.ts.map +1 -0
  447. package/dist/nodes/node2d/rigid-body.js +56 -0
  448. package/dist/nodes/node2d/rigid-body.js.map +1 -0
  449. package/dist/nodes/node2d/sprite.d.ts +285 -0
  450. package/dist/nodes/node2d/sprite.d.ts.map +1 -0
  451. package/dist/nodes/node2d/sprite.js +226 -0
  452. package/dist/nodes/node2d/sprite.js.map +1 -0
  453. package/dist/nodes/node2d/text.d.ts +62 -0
  454. package/dist/nodes/node2d/text.d.ts.map +1 -0
  455. package/dist/nodes/node2d/text.js +52 -0
  456. package/dist/nodes/node2d/text.js.map +1 -0
  457. package/dist/nodes/node2d/transform.d.ts +32 -0
  458. package/dist/nodes/node2d/transform.d.ts.map +1 -0
  459. package/dist/nodes/node2d/transform.js +30 -0
  460. package/dist/nodes/node2d/transform.js.map +1 -0
  461. package/dist/nodes/timer.d.ts +107 -0
  462. package/dist/nodes/timer.d.ts.map +1 -0
  463. package/dist/nodes/timer.js +108 -0
  464. package/dist/nodes/timer.js.map +1 -0
  465. package/dist/reactivity/index.d.ts +5 -0
  466. package/dist/reactivity/index.d.ts.map +1 -0
  467. package/dist/reactivity/index.js +5 -0
  468. package/dist/reactivity/index.js.map +1 -0
  469. package/dist/reactivity/reactive.d.ts +4 -0
  470. package/dist/reactivity/reactive.d.ts.map +1 -0
  471. package/dist/reactivity/reactive.js +50 -0
  472. package/dist/reactivity/reactive.js.map +1 -0
  473. package/dist/reactivity/register.d.ts +7 -0
  474. package/dist/reactivity/register.d.ts.map +1 -0
  475. package/dist/reactivity/register.js +18 -0
  476. package/dist/reactivity/register.js.map +1 -0
  477. package/dist/reactivity/signal.d.ts +126 -0
  478. package/dist/reactivity/signal.d.ts.map +1 -0
  479. package/dist/reactivity/signal.js +152 -0
  480. package/dist/reactivity/signal.js.map +1 -0
  481. package/dist/reactivity/types.d.ts +31 -0
  482. package/dist/reactivity/types.d.ts.map +1 -0
  483. package/dist/reactivity/types.js +2 -0
  484. package/dist/reactivity/types.js.map +1 -0
  485. package/dist/scripts/index.d.ts +2 -0
  486. package/dist/scripts/index.d.ts.map +1 -0
  487. package/dist/scripts/index.js +2 -0
  488. package/dist/scripts/index.js.map +1 -0
  489. package/dist/scripts/script.d.ts +80 -0
  490. package/dist/scripts/script.d.ts.map +1 -0
  491. package/dist/scripts/script.js +75 -0
  492. package/dist/scripts/script.js.map +1 -0
  493. package/dist/utils/dpr.d.ts +2 -0
  494. package/dist/utils/dpr.d.ts.map +1 -0
  495. package/dist/utils/dpr.js +14 -0
  496. package/dist/utils/dpr.js.map +1 -0
  497. package/dist/utils/ternaries.d.ts +6 -0
  498. package/dist/utils/ternaries.d.ts.map +1 -0
  499. package/dist/utils/ternaries.js +17 -0
  500. package/dist/utils/ternaries.js.map +1 -0
  501. package/package.json +56 -0
@@ -0,0 +1,72 @@
1
+ import { GameConfig } from '../../core/game-config.js';
2
+ import { propSignal } from '../../utils/ternaries.js';
3
+ import { PrimaryNode } from '../lib/enum.js';
4
+ import { Nodes } from '../lib/registry.js';
5
+ import { Node2D } from './_node2d.js';
6
+ /**
7
+ * The **`Camera`** node controls the viewport by applying a transform
8
+ * to all its children. It supports position, zoom, and target following.
9
+ *
10
+ * Place the Camera at the root of your scene to control what is visible.
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * import { useNode, useEffect } from 'dinix/hooks'
15
+ * import { PrimaryNode } from 'dinix/nodes/enum'
16
+ *
17
+ * function GameScene() {
18
+ * const camera = useNode(PrimaryNode.Camera)
19
+ * const player = useNode(PrimaryNode.Sprite)
20
+ *
21
+ * useEffect(() => {
22
+ * camera.follow(player)
23
+ * })
24
+ *
25
+ * return (
26
+ * <camera ref={camera} zoom={2}>
27
+ * <sprite ref={player} textureId={PLAYER} />
28
+ * <sprite textureId={BG} />
29
+ * </camera>
30
+ * )
31
+ * }
32
+ * ```
33
+ */
34
+ export class Camera extends Node2D {
35
+ #zoom;
36
+ #target = null;
37
+ constructor(options) {
38
+ super(PrimaryNode.Camera, options);
39
+ this.#zoom = propSignal(this, 'zoom', options.zoom) ?? 1;
40
+ }
41
+ /**
42
+ * Makes the camera follow a target node's position.
43
+ * Pass `undefined` to stop following.
44
+ */
45
+ follow(target) {
46
+ this.#target = target ?? null;
47
+ }
48
+ /** Gets the current zoom level. */
49
+ get zoom() {
50
+ return this.#zoom;
51
+ }
52
+ /** Sets the zoom level. */
53
+ set zoom(value) {
54
+ this.#zoom = value;
55
+ }
56
+ /** @internal Applies viewport transform and draws children. */
57
+ draw(delta) {
58
+ const ctx = GameConfig.ctx;
59
+ const halfW = GameConfig.width / 2;
60
+ const halfH = GameConfig.height / 2;
61
+ const offsetX = this.#target != null ? this.#target.globalPosition.x : this.position.x;
62
+ const offsetY = this.#target != null ? this.#target.globalPosition.y : this.position.y;
63
+ ctx.save();
64
+ ctx.translate(halfW, halfH);
65
+ ctx.scale(this.#zoom, this.#zoom);
66
+ ctx.translate(-offsetX, -offsetY);
67
+ super.draw(delta);
68
+ ctx.restore();
69
+ }
70
+ }
71
+ Nodes['camera'] = Camera;
72
+ //# sourceMappingURL=camera.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera.js","sourceRoot":"","sources":["../../../src/nodes/node2d/camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAsB,MAAM,cAAc,CAAA;AAqBzD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,MAAO,SAAQ,MAA0B;IACpD,KAAK,CAAQ;IACb,OAAO,GAAkB,IAAI,CAAA;IAE7B,YAAY,OAAsB;QAChC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAClC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1D,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAA0B;QAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,IAAI,CAAA;IAC/B,CAAC;IAED,mCAAmC;IACnC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,2BAA2B;IAC3B,IAAI,IAAI,CAAC,KAAa;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,+DAA+D;IAC/D,IAAI,CAAC,KAAa;QAChB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAA;QAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,CAAA;QAClC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;QAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;QACtF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;QAEtF,GAAG,CAAC,IAAI,EAAE,CAAA;QACV,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC3B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QACjC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAA;QAEjC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEjB,GAAG,CAAC,OAAO,EAAE,CAAA;IACf,CAAC;CACF;AAED,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAA"}
@@ -0,0 +1,96 @@
1
+ import { Event } from '../../events/event.js';
2
+ import { type Vector2, type VectorLike } from '../../math/vector2.js';
3
+ import { PrimaryNode } from '../lib/enum.js';
4
+ import { Node2D, type Node2DOptions } from './_node2d.js';
5
+ import type { Reactive } from '../../reactivity/types.js';
6
+ /**
7
+ * The **`ClickableOptions`** interface defines the options for a `Clickable` node.
8
+ */
9
+ export interface ClickableOptions extends Node2DOptions<PrimaryNode.Clickable> {
10
+ /**
11
+ * The **`size`** property defines the clickable area dimensions.
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * // As a [x, y] tuple
16
+ * <clickable size={[64, 32]} />
17
+ *
18
+ * // As an {x, y} object
19
+ * <clickable size={{ x: 64, y: 32 }} />
20
+ *
21
+ * // As a single number (square area)
22
+ * <clickable size={64} />
23
+ * ```
24
+ */
25
+ size: Reactive<VectorLike>;
26
+ /**
27
+ * The **`disabled`** property disable the clickable area.
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * const handleClick = () => {
32
+ * console.log("Never")
33
+ * }
34
+ *
35
+ * <clickable size={12} disabled onClick={handleClick} />
36
+ * ```
37
+ */
38
+ disabled?: Reactive<boolean>;
39
+ }
40
+ /**
41
+ * The **`Clickable`** node detects pointer interactions (click/tap) within its rectangular area.
42
+ * It emits events when the pointer enters, exits, or completes a click inside the area.
43
+ *
44
+ * The `clicked` event includes the local position relative to the node's top-left corner.
45
+ *
46
+ * @example
47
+ * ```tsx
48
+ * import { useNode } from 'dinix/hooks'
49
+ * import { PrimaryNode } from 'dinix/nodes/enum'
50
+ *
51
+ * function Button() {
52
+ * const btn = useNode(PrimaryNode.Clickable)
53
+ *
54
+ * const handleClick = (pos: Vector2) => {
55
+ * console.log('Clicked at', pos.x, pos.y)
56
+ * }
57
+ *
58
+ * return (
59
+ * <clickable ref={btn} size={[64, 32]} onClick={handleClick}>
60
+ * <sprite textureId={BUTTON} />
61
+ * </clickable>
62
+ * )
63
+ * }
64
+ * ```
65
+ */
66
+ export declare class Clickable extends Node2D<PrimaryNode.Clickable> {
67
+ #private;
68
+ size: Vector2;
69
+ disabled: boolean;
70
+ /**
71
+ * The **`clicked`** event fires when the pointer is released inside the clickable area.
72
+ * The callback receives the local position relative to the node's top-left corner.
73
+ */
74
+ clicked: Event<[_position: Vector2], "click">;
75
+ /**
76
+ * The **`mouseEntered`** event fires when the pointer enters the clickable area.
77
+ */
78
+ mouseEntered: Event<[], "mouseEnter">;
79
+ /**
80
+ * The **`mouseExited`** event fires when the pointer leaves the clickable area.
81
+ */
82
+ mouseExited: Event<[], "mouseExit">;
83
+ /**
84
+ * The **`mouseOver`** event fires every frame while the pointer is inside the clickable area.
85
+ * The callback receives the local position relative to the node's top-left corner.
86
+ */
87
+ mouseOver: Event<[_position: Vector2], "mouseOver">;
88
+ constructor(options: ClickableOptions);
89
+ /** @internal Handles hit-testing for pointer interactions. */
90
+ update(delta: number): void;
91
+ /** @internal Draws the clickable area for debugging when showClickables is enabled. */
92
+ draw(delta: number): void;
93
+ /** @internal Cleans up all event listeners. */
94
+ cleanEvents(): void;
95
+ }
96
+ //# sourceMappingURL=clickable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickable.d.ts","sourceRoot":"","sources":["../../../src/nodes/node2d/clickable.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAa,KAAK,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAGzD;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC;IAC5E;;;;;;;;;;;;;;OAcG;IACH,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;IAC1B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,SAAU,SAAQ,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;;IAC1D,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,OAAO,CAAQ;IAIzB;;;OAGG;IACH,OAAO,uCAAiD;IAExD;;OAEG;IACH,YAAY,0BAAoC;IAEhD;;OAEG;IACH,WAAW,yBAAmC;IAE9C;;;OAGG;IACH,SAAS,2CAAqD;gBAElD,OAAO,EAAE,gBAAgB;IAiBrC,8DAA8D;IAC9D,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IA4B3B,uFAAuF;IACvF,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAazB,+CAA+C;IAC/C,WAAW,IAAI,IAAI;CAOpB"}
@@ -0,0 +1,117 @@
1
+ import { Game } from '../../core/game.js';
2
+ import { GameConfig } from '../../core/game-config.js';
3
+ import { Event } from '../../events/event.js';
4
+ import { vectorize } from '../../math/vector2.js';
5
+ import { PrimaryNode } from '../lib/enum.js';
6
+ import { Node2D } from './_node2d.js';
7
+ import { Nodes } from '../lib/registry.js';
8
+ import { applySignal, propSignal } from '../../utils/ternaries.js';
9
+ /**
10
+ * The **`Clickable`** node detects pointer interactions (click/tap) within its rectangular area.
11
+ * It emits events when the pointer enters, exits, or completes a click inside the area.
12
+ *
13
+ * The `clicked` event includes the local position relative to the node's top-left corner.
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * import { useNode } from 'dinix/hooks'
18
+ * import { PrimaryNode } from 'dinix/nodes/enum'
19
+ *
20
+ * function Button() {
21
+ * const btn = useNode(PrimaryNode.Clickable)
22
+ *
23
+ * const handleClick = (pos: Vector2) => {
24
+ * console.log('Clicked at', pos.x, pos.y)
25
+ * }
26
+ *
27
+ * return (
28
+ * <clickable ref={btn} size={[64, 32]} onClick={handleClick}>
29
+ * <sprite textureId={BUTTON} />
30
+ * </clickable>
31
+ * )
32
+ * }
33
+ * ```
34
+ */
35
+ export class Clickable extends Node2D {
36
+ size;
37
+ disabled = false;
38
+ #isHovered = false;
39
+ #wasPressed = false;
40
+ /**
41
+ * The **`clicked`** event fires when the pointer is released inside the clickable area.
42
+ * The callback receives the local position relative to the node's top-left corner.
43
+ */
44
+ clicked = new Event('click', (_position) => { });
45
+ /**
46
+ * The **`mouseEntered`** event fires when the pointer enters the clickable area.
47
+ */
48
+ mouseEntered = new Event('mouseEnter', () => { });
49
+ /**
50
+ * The **`mouseExited`** event fires when the pointer leaves the clickable area.
51
+ */
52
+ mouseExited = new Event('mouseExit', () => { });
53
+ /**
54
+ * The **`mouseOver`** event fires every frame while the pointer is inside the clickable area.
55
+ * The callback receives the local position relative to the node's top-left corner.
56
+ */
57
+ mouseOver = new Event('mouseOver', (_position) => { });
58
+ constructor(options) {
59
+ super(PrimaryNode.Clickable, options);
60
+ this.size = propSignal(this, 'size', applySignal(options.size, vectorize));
61
+ this.disabled = propSignal(this, 'disabled', options.disabled);
62
+ }
63
+ #isPointerInside() {
64
+ const pointer = Game.input.pointerPosition;
65
+ const pos = this.globalPosition;
66
+ return (pointer.x >= pos.x &&
67
+ pointer.x <= pos.x + this.size.x &&
68
+ pointer.y >= pos.y &&
69
+ pointer.y <= pos.y + this.size.y);
70
+ }
71
+ /** @internal Handles hit-testing for pointer interactions. */
72
+ update(delta) {
73
+ const isInside = this.#isPointerInside();
74
+ if (!this.disabled) {
75
+ if (isInside && !this.#isHovered) {
76
+ this.#isHovered = true;
77
+ this.mouseEntered.emit();
78
+ }
79
+ else if (!isInside && this.#isHovered) {
80
+ this.#isHovered = false;
81
+ this.mouseExited.emit();
82
+ }
83
+ const isPressed = Game.input.isPointerPressed;
84
+ if (this.#wasPressed && !isPressed && isInside) {
85
+ const local = Game.input.pointerPosition.toSubtracted(this.globalPosition);
86
+ this.clicked.emit(local);
87
+ }
88
+ this.#wasPressed = isPressed;
89
+ if (isInside) {
90
+ const local = Game.input.pointerPosition.toSubtracted(this.globalPosition);
91
+ this.mouseOver.emit(local);
92
+ }
93
+ }
94
+ super.update(delta);
95
+ }
96
+ /** @internal Draws the clickable area for debugging when showClickables is enabled. */
97
+ draw(delta) {
98
+ if (GameConfig.testOptions.showClickables) {
99
+ GameConfig.ctx.fillStyle = this.disabled ? '#cbc2ac5c' : '#e2c8855c';
100
+ GameConfig.ctx.strokeStyle = this.disabled ? '#9ca082b4' : '#abb37ab4';
101
+ GameConfig.ctx.lineWidth = 1;
102
+ GameConfig.ctx.fillRect(this.position.x, this.position.y, this.size.x, this.size.y);
103
+ GameConfig.ctx.strokeRect(this.position.x, this.position.y, this.size.x, this.size.y);
104
+ }
105
+ super.draw(delta);
106
+ }
107
+ /** @internal Cleans up all event listeners. */
108
+ cleanEvents() {
109
+ this.clicked.clean();
110
+ this.mouseEntered.clean();
111
+ this.mouseExited.clean();
112
+ this.mouseOver.clean();
113
+ super.cleanEvents();
114
+ }
115
+ }
116
+ Nodes.clickable = Clickable;
117
+ //# sourceMappingURL=clickable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickable.js","sourceRoot":"","sources":["../../../src/nodes/node2d/clickable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import { Event } from '../../events/event.js';
2
+ import type { Vector2 } from '../../math/vector2.js';
3
+ import { PrimaryNode } from '../lib/enum.js';
4
+ import { Node2D, type Node2DOptions } from './_node2d.js';
5
+ import type { Shape } from '../../collision/narrowphase/shapes.js';
6
+ export interface ColliderOptions extends Node2DOptions<PrimaryNode.Collider> {
7
+ /**
8
+ * The **`shape`** property defines the collision shape of the collider.
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * // Rectangle
13
+ * <collider shape={shapes.rectangle(32, 32)} ... />
14
+ *
15
+ * // Circle
16
+ * <collider shape={shapes.circle(16)} ... />
17
+ * ```
18
+ */
19
+ shape: Shape;
20
+ /**
21
+ * The **`group`** property defines the collision groups this collider belongs to.
22
+ *
23
+ * @example
24
+ * ```tsx
25
+ * <collider shape={...} group={['player', 'character']} ... />
26
+ * ```
27
+ */
28
+ group: string[];
29
+ /**
30
+ * The **`collidesWith`** property defines which groups this collider can interact with.
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * <collider shape={...} group={...} collidesWith={['enemy', 'obstacle']} ... />
35
+ * ```
36
+ */
37
+ collidesWith: string[];
38
+ }
39
+ /**
40
+ * The **`Collider`** node detects collisions with other colliders based on shape, group, and collidesWith configuration.
41
+ * It supports rectangle and circle shapes and emits events when collisions begin, continue, or end.
42
+ *
43
+ * @example
44
+ * ```tsx
45
+ * import { shapes } from 'dinix'
46
+ *
47
+ * // Rectangle collider
48
+ * <collider shape={shapes.rectangle(32, 32)} group={['player']} collidesWith={['enemy']} />
49
+ *
50
+ * // Circle collider
51
+ * <collider shape={shapes.circle(16)} group={['projectile']} collidesWith={['zombie']} />
52
+ * ```
53
+ */
54
+ export declare class Collider extends Node2D<PrimaryNode.Collider> {
55
+ #private;
56
+ _activeCollisions: Set<Collider>;
57
+ /**
58
+ * The read-only **`shape`** property returns the collision shape of this collider.
59
+ */
60
+ get shape(): Shape;
61
+ /**
62
+ * The read-only **`group`** property returns the set of groups this collider belongs to.
63
+ */
64
+ get group(): Set<string>;
65
+ /**
66
+ * The read-only **`collidesWith`** property returns the set of groups this collider can collide with.
67
+ */
68
+ get collidesWith(): Set<string>;
69
+ /**
70
+ * The read-only **`size`** property returns the bounding dimensions of the shape.
71
+ * For rectangles, returns the width and height. For circles, returns diameter x diameter.
72
+ */
73
+ get size(): Vector2;
74
+ constructor(options: ColliderOptions);
75
+ /**
76
+ * The **`colliderEntered`** event fires when this collider first overlaps with another collider.
77
+ */
78
+ colliderEntered: Event<[_collider: Collider], "colliderEnter">;
79
+ /**
80
+ * The **`collided`** event fires every frame while this collider overlaps with another collider.
81
+ */
82
+ collided: Event<[_collider: Collider], "collide">;
83
+ /**
84
+ * The **`colliderExited`** event fires when this collider stops overlapping with another collider.
85
+ */
86
+ colliderExited: Event<[_collider: Collider], "colliderExit">;
87
+ /** @internal Registers this collider with the collision system. */
88
+ start(): void;
89
+ /** @internal Draws the collision shape for debugging. */
90
+ draw(delta: number): void;
91
+ /** @internal Checks position changes and marks collision system dirty. */
92
+ update(delta: number): void;
93
+ /** @internal Unregisters this collider from the collision system. */
94
+ destroy(): void;
95
+ }
96
+ //# sourceMappingURL=collider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collider.d.ts","sourceRoot":"","sources":["../../../src/nodes/node2d/collider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAGzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAA;AAElE,MAAM,WAAW,eAAgB,SAAQ,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC;IAC1E;;;;;;;;;;;OAWG;IACH,KAAK,EAAE,KAAK,CAAA;IACZ;;;;;;;OAOG;IACH,KAAK,EAAE,MAAM,EAAE,CAAA;IACf;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,QAAS,SAAQ,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;;IAKxD,iBAAiB,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAY;IAI5C;;OAEG;IACH,IAAI,KAAK,UAER;IAED;;OAEG;IACH,IAAI,KAAK,gBAER;IAED;;OAEG;IACH,IAAI,YAAY,gBAEf;IAED;;;OAGG;IACH,IAAI,IAAI,IAAI,OAAO,CAMlB;gBAEW,OAAO,EAAE,eAAe;IASpC;;OAEG;IACH,eAAe,gDAA0D;IAEzE;;OAEG;IACH,QAAQ,0CAAoD;IAE5D;;OAEG;IACH,cAAc,+CAAyD;IAEvE,mEAAmE;IACnE,KAAK,IAAI,IAAI;IAKb,yDAAyD;IACzD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IA8BzB,0EAA0E;IAC1E,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU3B,qEAAqE;IACrE,OAAO,IAAI,IAAI;CAIhB"}
@@ -0,0 +1,116 @@
1
+ import { GameConfig } from '../../core/game-config.js';
2
+ import { Event } from '../../events/event.js';
3
+ import { PrimaryNode } from '../lib/enum.js';
4
+ import { Node2D } from './_node2d.js';
5
+ import { Nodes } from '../lib/registry.js';
6
+ import { CollisionSystem } from '../../collision/collision-system.js';
7
+ /**
8
+ * The **`Collider`** node detects collisions with other colliders based on shape, group, and collidesWith configuration.
9
+ * It supports rectangle and circle shapes and emits events when collisions begin, continue, or end.
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * import { shapes } from 'dinix'
14
+ *
15
+ * // Rectangle collider
16
+ * <collider shape={shapes.rectangle(32, 32)} group={['player']} collidesWith={['enemy']} />
17
+ *
18
+ * // Circle collider
19
+ * <collider shape={shapes.circle(16)} group={['projectile']} collidesWith={['zombie']} />
20
+ * ```
21
+ */
22
+ export class Collider extends Node2D {
23
+ #shape;
24
+ #group = new Set();
25
+ #collidesWith = new Set();
26
+ _activeCollisions = new Set();
27
+ #lastGlobalPosition;
28
+ /**
29
+ * The read-only **`shape`** property returns the collision shape of this collider.
30
+ */
31
+ get shape() {
32
+ return this.#shape;
33
+ }
34
+ /**
35
+ * The read-only **`group`** property returns the set of groups this collider belongs to.
36
+ */
37
+ get group() {
38
+ return this.#group;
39
+ }
40
+ /**
41
+ * The read-only **`collidesWith`** property returns the set of groups this collider can collide with.
42
+ */
43
+ get collidesWith() {
44
+ return this.#collidesWith;
45
+ }
46
+ /**
47
+ * The read-only **`size`** property returns the bounding dimensions of the shape.
48
+ * For rectangles, returns the width and height. For circles, returns diameter x diameter.
49
+ */
50
+ get size() {
51
+ if (this.#shape.type === 'rectangle') {
52
+ return this.#shape.size;
53
+ }
54
+ const d = this.#shape.radius * 2;
55
+ return { x: d, y: d };
56
+ }
57
+ constructor(options) {
58
+ super(PrimaryNode.Collider, options);
59
+ this.#shape = options.shape;
60
+ this.#group = new Set(options.group);
61
+ this.#collidesWith = new Set(options.collidesWith);
62
+ this.#lastGlobalPosition = this.globalPosition.clone();
63
+ }
64
+ /**
65
+ * The **`colliderEntered`** event fires when this collider first overlaps with another collider.
66
+ */
67
+ colliderEntered = new Event('colliderEnter', (_collider) => { });
68
+ /**
69
+ * The **`collided`** event fires every frame while this collider overlaps with another collider.
70
+ */
71
+ collided = new Event('collide', (_collider) => { });
72
+ /**
73
+ * The **`colliderExited`** event fires when this collider stops overlapping with another collider.
74
+ */
75
+ colliderExited = new Event('colliderExit', (_collider) => { });
76
+ /** @internal Registers this collider with the collision system. */
77
+ start() {
78
+ CollisionSystem.register(this);
79
+ super.start();
80
+ }
81
+ /** @internal Draws the collision shape for debugging. */
82
+ draw(delta) {
83
+ if (GameConfig.testOptions.showColliders) {
84
+ GameConfig.ctx.fillStyle = '#85b2e25c';
85
+ GameConfig.ctx.strokeStyle = '#3f73abb4';
86
+ GameConfig.ctx.lineWidth = 1;
87
+ if (this.#shape.type === 'circle') {
88
+ GameConfig.ctx.beginPath();
89
+ GameConfig.ctx.arc(this.position.x, this.position.y, this.#shape.radius, 0, Math.PI * 2);
90
+ GameConfig.ctx.fill();
91
+ GameConfig.ctx.stroke();
92
+ }
93
+ else {
94
+ GameConfig.ctx.fillRect(this.position.x, this.position.y, this.#shape.size.x, this.#shape.size.y);
95
+ GameConfig.ctx.strokeRect(this.position.x, this.position.y, this.#shape.size.x, this.#shape.size.y);
96
+ }
97
+ }
98
+ super.draw(delta);
99
+ }
100
+ /** @internal Checks position changes and marks collision system dirty. */
101
+ update(delta) {
102
+ const currentGlobalPos = this.globalPosition;
103
+ if (!currentGlobalPos.equals(this.#lastGlobalPosition)) {
104
+ this.#lastGlobalPosition = currentGlobalPos.clone();
105
+ CollisionSystem.setDirty();
106
+ }
107
+ super.update(delta);
108
+ }
109
+ /** @internal Unregisters this collider from the collision system. */
110
+ destroy() {
111
+ CollisionSystem.unregister(this);
112
+ super.destroy();
113
+ }
114
+ }
115
+ Nodes.collider = Collider;
116
+ //# sourceMappingURL=collider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collider.js","sourceRoot":"","sources":["../../../src/nodes/node2d/collider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export type * from './_node2d.js';
2
+ export * from './clickable.js';
3
+ export * from './collider.js';
4
+ export * from './ray-cast.js';
5
+ export * from './sprite.js';
6
+ export * from './transform.js';
7
+ export * from './rectangle.js';
8
+ export * from './text.js';
9
+ export * from './camera.js';
10
+ export * from './rigid-body.js';
11
+ export * from './lib/index.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nodes/node2d/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,cAAc,CAAA;AAEjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAE/B,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,11 @@
1
+ export * from './clickable.js';
2
+ export * from './collider.js';
3
+ export * from './ray-cast.js';
4
+ export * from './sprite.js';
5
+ export * from './transform.js';
6
+ export * from './rectangle.js';
7
+ export * from './text.js';
8
+ export * from './camera.js';
9
+ export * from './rigid-body.js';
10
+ export * from './lib/index.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nodes/node2d/index.ts"],"names":[],"mappings":"AAEA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAE/B,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './utils.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/nodes/node2d/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './utils.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/nodes/node2d/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { Vector2 } from '../../../math/vector2.js';
2
+ import type { Node } from '../../_node.js';
3
+ export declare function getGlobalPosition(node: Node | undefined): Vector2;
4
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/nodes/node2d/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAG1C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CASjE"}
@@ -0,0 +1,14 @@
1
+ import { Vector2 } from '../../../math/vector2.js';
2
+ import { Node2D } from '../_node2d.js';
3
+ export function getGlobalPosition(node) {
4
+ const pos = node instanceof Node2D ? node.position.clone() : Vector2.ZERO;
5
+ let parent = node?.parent;
6
+ while (parent != null) {
7
+ if (!(parent instanceof Node2D))
8
+ continue;
9
+ pos.add(parent.position);
10
+ parent = parent.parent;
11
+ }
12
+ return pos;
13
+ }
14
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/nodes/node2d/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC,MAAM,UAAU,iBAAiB,CAAC,IAAsB;IACtD,MAAM,GAAG,GAAG,IAAI,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAA;IACzE,IAAI,MAAM,GAAG,IAAI,EAAE,MAAM,CAAA;IACzB,OAAO,MAAM,IAAI,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,MAAM,YAAY,MAAM,CAAC;YAAE,SAAQ;QACzC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACxB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IACxB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}