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 @@
1
+ {"version":3,"file":"group.js","sourceRoot":"","sources":["../../src/nodes/group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAoB,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAOzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,OAAO,KAAM,SAAQ,IAAuB;IAChD,YAAY,OAAqB;QAC/B,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACnC,CAAC;CACF;AAED,KAAK,CAAC,KAAK,GAAG,KAAK,CAAA"}
@@ -0,0 +1,8 @@
1
+ export type * from './_node.js';
2
+ export * from './group.js';
3
+ export * from './animation-player.js';
4
+ export * from './timer.js';
5
+ export * from './audio-player.js';
6
+ export * from './node2d/index.js';
7
+ export * from './lib/index.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nodes/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAA;AAE/B,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AAEjC,cAAc,mBAAmB,CAAA;AAEjC,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,7 @@
1
+ export * from './group.js';
2
+ export * from './animation-player.js';
3
+ export * from './timer.js';
4
+ export * from './audio-player.js';
5
+ export * from './node2d/index.js';
6
+ export * from './lib/index.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nodes/index.ts"],"names":[],"mappings":"AAEA,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AAEjC,cAAc,mBAAmB,CAAA;AAEjC,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * The **`PrimaryNode`** enum defines all built-in node types available in the engine.
3
+ * Use these values when creating nodes with `useNode` or `useChild`.
4
+ *
5
+ * @example
6
+ * ```tsx
7
+ * import { useNode } from 'dinix/hooks'
8
+ * import { PrimaryNode } from 'dinix/nodes/enum'
9
+ *
10
+ * const sprite = useNode(PrimaryNode.Sprite)
11
+ * return <sprite ref={sprite} textureId={PLAYER} />
12
+ * ```
13
+ */
14
+ export declare enum PrimaryNode {
15
+ /** A container node organizing child nodes without position management. */
16
+ Group = "group",
17
+ /** A container node for positioning and organizing child nodes. */
18
+ Transform = "transform",
19
+ /** A node that displays a texture or sprite. */
20
+ Sprite = "sprite",
21
+ /** A node that plays frame-based animations. */
22
+ AnimationPlayer = "animation-player",
23
+ /** A node that detects collisions with other colliders. */
24
+ Collider = "collider",
25
+ /** A node that projects a ray to detect colliders along a direction. */
26
+ RayCast = "ray-cast",
27
+ /** A node that detects click events. */
28
+ Clickable = "clickable",
29
+ /** A node for use time functions. */
30
+ Timer = "timer",
31
+ /** A node that renders a filled/stroked rectangle. */
32
+ Rectangle = "rectangle",
33
+ /** A node that renders text on the canvas. */
34
+ Text = "text",
35
+ /** A node that plays audio buffers. */
36
+ AudioPlayer = "audio-player",
37
+ /** A node that controls the viewport. */
38
+ Camera = "camera",
39
+ /** A node that adds physics simulation to a collider. */
40
+ RigidBody = "rigid-body"
41
+ }
42
+ //# sourceMappingURL=enum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../../src/nodes/lib/enum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,oBAAY,WAAW;IACrB,2EAA2E;IAC3E,KAAK,UAAU;IACf,mEAAmE;IACnE,SAAS,cAAc;IACvB,gDAAgD;IAChD,MAAM,WAAW;IACjB,gDAAgD;IAChD,eAAe,qBAAqB;IACpC,2DAA2D;IAC3D,QAAQ,aAAa;IACrB,wEAAwE;IACxE,OAAO,aAAa;IACpB,wCAAwC;IACxC,SAAS,cAAc;IACvB,qCAAqC;IACrC,KAAK,UAAU;IACf,sDAAsD;IACtD,SAAS,cAAc;IACvB,8CAA8C;IAC9C,IAAI,SAAS;IACb,uCAAuC;IACvC,WAAW,iBAAiB;IAC5B,yCAAyC;IACzC,MAAM,WAAW;IACjB,yDAAyD;IACzD,SAAS,eAAe;CACzB"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * The **`PrimaryNode`** enum defines all built-in node types available in the engine.
3
+ * Use these values when creating nodes with `useNode` or `useChild`.
4
+ *
5
+ * @example
6
+ * ```tsx
7
+ * import { useNode } from 'dinix/hooks'
8
+ * import { PrimaryNode } from 'dinix/nodes/enum'
9
+ *
10
+ * const sprite = useNode(PrimaryNode.Sprite)
11
+ * return <sprite ref={sprite} textureId={PLAYER} />
12
+ * ```
13
+ */
14
+ export var PrimaryNode;
15
+ (function (PrimaryNode) {
16
+ /** A container node organizing child nodes without position management. */
17
+ PrimaryNode["Group"] = "group";
18
+ /** A container node for positioning and organizing child nodes. */
19
+ PrimaryNode["Transform"] = "transform";
20
+ /** A node that displays a texture or sprite. */
21
+ PrimaryNode["Sprite"] = "sprite";
22
+ /** A node that plays frame-based animations. */
23
+ PrimaryNode["AnimationPlayer"] = "animation-player";
24
+ /** A node that detects collisions with other colliders. */
25
+ PrimaryNode["Collider"] = "collider";
26
+ /** A node that projects a ray to detect colliders along a direction. */
27
+ PrimaryNode["RayCast"] = "ray-cast";
28
+ /** A node that detects click events. */
29
+ PrimaryNode["Clickable"] = "clickable";
30
+ /** A node for use time functions. */
31
+ PrimaryNode["Timer"] = "timer";
32
+ /** A node that renders a filled/stroked rectangle. */
33
+ PrimaryNode["Rectangle"] = "rectangle";
34
+ /** A node that renders text on the canvas. */
35
+ PrimaryNode["Text"] = "text";
36
+ /** A node that plays audio buffers. */
37
+ PrimaryNode["AudioPlayer"] = "audio-player";
38
+ /** A node that controls the viewport. */
39
+ PrimaryNode["Camera"] = "camera";
40
+ /** A node that adds physics simulation to a collider. */
41
+ PrimaryNode["RigidBody"] = "rigid-body";
42
+ })(PrimaryNode || (PrimaryNode = {}));
43
+ //# sourceMappingURL=enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum.js","sourceRoot":"","sources":["../../../src/nodes/lib/enum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAN,IAAY,WA2BX;AA3BD,WAAY,WAAW;IACrB,2EAA2E;IAC3E,8BAAe,CAAA;IACf,mEAAmE;IACnE,sCAAuB,CAAA;IACvB,gDAAgD;IAChD,gCAAiB,CAAA;IACjB,gDAAgD;IAChD,mDAAoC,CAAA;IACpC,2DAA2D;IAC3D,oCAAqB,CAAA;IACrB,wEAAwE;IACxE,mCAAoB,CAAA;IACpB,wCAAwC;IACxC,sCAAuB,CAAA;IACvB,qCAAqC;IACrC,8BAAe,CAAA;IACf,sDAAsD;IACtD,sCAAuB,CAAA;IACvB,8CAA8C;IAC9C,4BAAa,CAAA;IACb,uCAAuC;IACvC,2CAA4B,CAAA;IAC5B,yCAAyC;IACzC,gCAAiB,CAAA;IACjB,yDAAyD;IACzD,uCAAwB,CAAA;AAC1B,CAAC,EA3BW,WAAW,KAAX,WAAW,QA2BtB"}
@@ -0,0 +1,5 @@
1
+ export * from './types.js';
2
+ export * from './enum.js';
3
+ export * from './registry.js';
4
+ export * from './utils.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nodes/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from './types.js';
2
+ export * from './enum.js';
3
+ export * from './registry.js';
4
+ export * from './utils.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nodes/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,43 @@
1
+ import type { PrimaryNode } from './enum.js';
2
+ import type { NodeClasses, NodeInstances, NodesOptions } from './types.js';
3
+ export declare const Nodes: NodeClasses;
4
+ /**
5
+ * The **`getNode`** function is used to create an instance of a node based on its name and options. It retrieves the node class from the registry and creates an instance of it using the provided options.
6
+ * @param type - The name of the node to create an instance of.
7
+ * @param options - The options to pass to the node constructor when creating an instance of the node.
8
+ * @returns An instance of the node corresponding to the provided node name and options.
9
+ */
10
+ export declare function getNode<T extends PrimaryNode>(type: T, options: NodesOptions[T]): NodeInstances[T];
11
+ /**
12
+ * The **`registerNode`** function is used to register a node class in the registry under a specific node name. This allows the node to be created later using the `getNode` function by referencing its name.
13
+ * @param nodeName - The name under which to register the node class in the registry.
14
+ * @param nodeClass - The class of the node to register.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * // my-node.ts
19
+ * interface MyNodeOptions extends NodeOptions {
20
+ * // Node options
21
+ * }
22
+ *
23
+ * class MyNode extends Node {
24
+ * constructor(options: MyNodeOptions) {
25
+ * super(options)
26
+ * // Node initialization
27
+ * }
28
+ * // Node implementation
29
+ * }
30
+ *
31
+ * // registry.ts
32
+ * declare module 'dinix' {
33
+ * interface NodeClasses {
34
+ * entity: typeof MyNode
35
+ * }
36
+ * }
37
+ *
38
+ * registerNode('myNode', MyNode)
39
+ *
40
+ * ```
41
+ */
42
+ export declare function registerNode<T extends PrimaryNode>(nodeName: T, nodeClass: NodeClasses[T]): void;
43
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/nodes/lib/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE1E,eAAO,MAAM,KAAK,EAAE,WAA+B,CAAA;AAEnD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,oBAG/E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,QAEzF"}
@@ -0,0 +1,46 @@
1
+ export const Nodes = {};
2
+ /**
3
+ * The **`getNode`** function is used to create an instance of a node based on its name and options. It retrieves the node class from the registry and creates an instance of it using the provided options.
4
+ * @param type - The name of the node to create an instance of.
5
+ * @param options - The options to pass to the node constructor when creating an instance of the node.
6
+ * @returns An instance of the node corresponding to the provided node name and options.
7
+ */
8
+ export function getNode(type, options) {
9
+ const cls = Nodes[type];
10
+ return new cls(options);
11
+ }
12
+ /**
13
+ * The **`registerNode`** function is used to register a node class in the registry under a specific node name. This allows the node to be created later using the `getNode` function by referencing its name.
14
+ * @param nodeName - The name under which to register the node class in the registry.
15
+ * @param nodeClass - The class of the node to register.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * // my-node.ts
20
+ * interface MyNodeOptions extends NodeOptions {
21
+ * // Node options
22
+ * }
23
+ *
24
+ * class MyNode extends Node {
25
+ * constructor(options: MyNodeOptions) {
26
+ * super(options)
27
+ * // Node initialization
28
+ * }
29
+ * // Node implementation
30
+ * }
31
+ *
32
+ * // registry.ts
33
+ * declare module 'dinix' {
34
+ * interface NodeClasses {
35
+ * entity: typeof MyNode
36
+ * }
37
+ * }
38
+ *
39
+ * registerNode('myNode', MyNode)
40
+ *
41
+ * ```
42
+ */
43
+ export function registerNode(nodeName, nodeClass) {
44
+ Nodes[nodeName] = nodeClass;
45
+ }
46
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/nodes/lib/registry.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,KAAK,GAAgB,EAAiB,CAAA;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAwB,IAAO,EAAE,OAAwB;IAC9E,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAsD,CAAA;IAC5E,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;AACzB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,YAAY,CAAwB,QAAW,EAAE,SAAyB;IACxF,KAAK,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAA;AAC7B,CAAC"}
@@ -0,0 +1,89 @@
1
+ import type { Node } from '../_node.js';
2
+ import type { Transform, TransformOptions } from '../node2d/transform.js';
3
+ import type { Sprite, SpriteOptions } from '../node2d/sprite.js';
4
+ import type { AnimationPlayer, AnimationPlayerOptions } from '../animation-player.js';
5
+ import type { Collider, ColliderOptions } from '../node2d/collider.js';
6
+ import type { RayCast, RayCastOptions } from '../node2d/ray-cast.js';
7
+ import type { Event } from '../../events/event.js';
8
+ import type { EventName } from '../../events/types.js';
9
+ import type { PrimaryNode } from './enum.js';
10
+ import type { Clickable, ClickableOptions } from '../node2d/clickable.js';
11
+ import type { Timer, TimerOptions } from '../timer.js';
12
+ import type { Rectangle, RectangleOptions } from '../node2d/rectangle.js';
13
+ import type { Text, TextOptions } from '../node2d/text.js';
14
+ import type { AudioPlayer, AudioPlayerOptions } from '../audio-player.js';
15
+ import type { Camera, CameraOptions } from '../node2d/camera.js';
16
+ import type { RigidBody, RigidBodyOptions } from '../node2d/rigid-body.js';
17
+ import type { Group, GroupOptions } from '../group.js';
18
+ /**
19
+ * The **`NodeClasses`** interface maps each `PrimaryNode` to its class constructor.
20
+ * Used internally by the node registry to instantiate nodes.
21
+ */
22
+ export interface NodeClasses {
23
+ [PrimaryNode.Group]: typeof Group;
24
+ [PrimaryNode.Transform]: typeof Transform;
25
+ [PrimaryNode.Sprite]: typeof Sprite;
26
+ [PrimaryNode.AnimationPlayer]: typeof AnimationPlayer;
27
+ [PrimaryNode.Collider]: typeof Collider;
28
+ [PrimaryNode.RayCast]: typeof RayCast;
29
+ [PrimaryNode.Clickable]: typeof Clickable;
30
+ [PrimaryNode.Timer]: typeof Timer;
31
+ [PrimaryNode.Rectangle]: typeof Rectangle;
32
+ [PrimaryNode.Text]: typeof Text;
33
+ [PrimaryNode.AudioPlayer]: typeof AudioPlayer;
34
+ [PrimaryNode.Camera]: typeof Camera;
35
+ [PrimaryNode.RigidBody]: typeof RigidBody;
36
+ }
37
+ /**
38
+ * The **`NodesOptions`** interface maps each `PrimaryNode` to its options type.
39
+ * Used to type-check constructor options when creating nodes.
40
+ */
41
+ export interface NodesOptions {
42
+ [PrimaryNode.Group]: GroupOptions;
43
+ [PrimaryNode.Transform]: TransformOptions;
44
+ [PrimaryNode.Sprite]: SpriteOptions;
45
+ [PrimaryNode.AnimationPlayer]: AnimationPlayerOptions;
46
+ [PrimaryNode.Collider]: ColliderOptions;
47
+ [PrimaryNode.RayCast]: RayCastOptions;
48
+ [PrimaryNode.Clickable]: ClickableOptions;
49
+ [PrimaryNode.Timer]: TimerOptions;
50
+ [PrimaryNode.Rectangle]: RectangleOptions;
51
+ [PrimaryNode.Text]: TextOptions;
52
+ [PrimaryNode.AudioPlayer]: AudioPlayerOptions;
53
+ [PrimaryNode.Camera]: CameraOptions;
54
+ [PrimaryNode.RigidBody]: RigidBodyOptions;
55
+ }
56
+ type NodeName = keyof NodeClasses;
57
+ /**
58
+ * The **`NodeInstances`** type maps each `PrimaryNode` to its class instance type.
59
+ * Used to type node references and event subscriptions.
60
+ */
61
+ export type NodeInstances = {
62
+ [P in NodeName]: InstanceType<NodeClasses[P]>;
63
+ };
64
+ /**
65
+ * The **`NodeToOptions`** type extracts the options type from a node class constructor.
66
+ */
67
+ export type NodeToOptions<T extends typeof Node> = ConstructorParameters<T>[0];
68
+ /**
69
+ * The **`NodeEvents`** type maps each node type to its available events.
70
+ * Used by `useEvent` to provide type-safe event subscriptions.
71
+ */
72
+ export type NodeEvents = {
73
+ [P in NodeName]: {
74
+ [Q in keyof NodeInstances[P] as NodeEvent<NodeInstances[P], Q> extends undefined ? never : EventName<NonNullable<NodeEvent<NodeInstances[P], Q>>['baseName']>]: NonNullable<NodeEvent<NodeInstances[P], Q>>;
75
+ };
76
+ };
77
+ type NodeEvent<T extends Node, K extends keyof T> = T[K] extends Event<any[], string> ? T[K] : undefined;
78
+ /**
79
+ * The **`NodeEventListeners`** type maps each node event to its listener function type.
80
+ * Used internally to type event callback parameters.
81
+ */
82
+ export type NodeEventListeners = {
83
+ [P in keyof NodeEvents]: {
84
+ [Q in keyof NodeEvents[P]]: NonNullable<NodeEventListener<P, Q>>;
85
+ };
86
+ };
87
+ type NodeEventListener<T extends keyof NodeEvents, K extends keyof NodeEvents[T]> = NodeEvents[T][K] extends Event<any[], string> ? NodeEvents[T][K]['exampleFun'] : undefined;
88
+ export {};
89
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/nodes/lib/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/nodes/lib/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ import type { PrimaryNode } from './enum.js';
2
+ import type { Node } from '../_node.js';
3
+ import type { NodeInstances } from './types.js';
4
+ import { DinixScript } from '../../scripts/script.js';
5
+ /**
6
+ * Resolves a node instance to its `PrimaryNode` string key.
7
+ * Used internally for descriptive error messages when node type mismatches occur.
8
+ *
9
+ * @param node The node instance to resolve
10
+ * @returns The `PrimaryNode` key for this node type
11
+ * @throws {InvalidNodeInstanceError} If the node is not in the registry
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const name = getNodeName(mySpriteNode) // 'sprite'
16
+ * ```
17
+ */
18
+ export declare function getNodeName<T extends PrimaryNode>(node: NodeInstances[T]): T;
19
+ /**
20
+ * Retrieves a parent's script if it matches the given class.
21
+ * Walks up `node.parent?.script` and returns it if it's an instance of `scriptClass`.
22
+ *
23
+ * @param node The node whose parent to inspect
24
+ * @param scriptClass The script class to check against
25
+ * @returns The parent's script if it matches, or `undefined`
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * const plantScript = getParentScript(collider, PlantScript)
30
+ * if (plantScript == null) return
31
+ * plantScript.applyDamage(50)
32
+ * ```
33
+ */
34
+ export declare function getParentScript<const K extends abstract new (...args: any) => DinixScript<PrimaryNode>>(node: Node | undefined | null, scriptClass: K): InstanceType<K> | undefined;
35
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/nodes/lib/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAIrD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAiB5E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,KAAK,CAAC,CAAC,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,KAAK,WAAW,CAAC,WAAW,CAAC,EACvE,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,EAAE,WAAW,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAK5E"}
@@ -0,0 +1,58 @@
1
+ import { InvalidNodeInstanceError } from '../../errors/node.js';
2
+ import { Nodes } from './registry.js';
3
+ import { DinixScript } from '../../scripts/script.js';
4
+ const nodeNamesMap = new Map();
5
+ /**
6
+ * Resolves a node instance to its `PrimaryNode` string key.
7
+ * Used internally for descriptive error messages when node type mismatches occur.
8
+ *
9
+ * @param node The node instance to resolve
10
+ * @returns The `PrimaryNode` key for this node type
11
+ * @throws {InvalidNodeInstanceError} If the node is not in the registry
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const name = getNodeName(mySpriteNode) // 'sprite'
16
+ * ```
17
+ */
18
+ export function getNodeName(node) {
19
+ const nodePrototype = Object.getPrototypeOf(node);
20
+ const name = nodeNamesMap.get(nodePrototype);
21
+ if (name != null)
22
+ return name;
23
+ for (const key in Nodes) {
24
+ if (!Object.hasOwn(Nodes, key))
25
+ continue;
26
+ const prototype = Nodes[key].prototype;
27
+ if (nodeNamesMap.has(prototype))
28
+ continue;
29
+ nodeNamesMap.set(prototype, key);
30
+ if (prototype === nodePrototype)
31
+ return key;
32
+ }
33
+ throw new InvalidNodeInstanceError(node);
34
+ }
35
+ /**
36
+ * Retrieves a parent's script if it matches the given class.
37
+ * Walks up `node.parent?.script` and returns it if it's an instance of `scriptClass`.
38
+ *
39
+ * @param node The node whose parent to inspect
40
+ * @param scriptClass The script class to check against
41
+ * @returns The parent's script if it matches, or `undefined`
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * const plantScript = getParentScript(collider, PlantScript)
46
+ * if (plantScript == null) return
47
+ * plantScript.applyDamage(50)
48
+ * ```
49
+ */
50
+ export function getParentScript(node, scriptClass) {
51
+ const script = node?.parent?.script;
52
+ if (script == null)
53
+ return;
54
+ if (!(script instanceof scriptClass))
55
+ return;
56
+ return script;
57
+ }
58
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/nodes/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAG/D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAqB,CAAA;AAEjD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CAAwB,IAAsB;IACvE,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAqB,CAAA;IACrE,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IAC5C,IAAI,IAAI,IAAI,IAAI;QAAE,OAAO,IAAS,CAAA;IAElC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC;YAAE,SAAQ;QAExC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAyB,CAAC,CAAC,SAAS,CAAA;QAE5D,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,SAAQ;QAEzC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,GAAyB,CAAC,CAAA;QACtD,IAAI,SAAS,KAAK,aAAa;YAAE,OAAO,GAAQ,CAAA;IAClD,CAAC;IAED,MAAM,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAA;AAC1C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe,CAE7B,IAA6B,EAAE,WAAc;IAC7C,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAA;IACnC,IAAI,MAAM,IAAI,IAAI;QAAE,OAAM;IAC1B,IAAI,CAAC,CAAC,MAAM,YAAY,WAAW,CAAC;QAAE,OAAM;IAC5C,OAAO,MAAyB,CAAA;AAClC,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { Vector2, type VectorLike } from '../../math/vector2.js';
2
+ import type { PrimaryNode } from '../lib/enum.js';
3
+ import { Node, type NodeOptions } from '../_node.js';
4
+ import type { Reactive } from '../../reactivity/index.js';
5
+ export interface Node2DOptions<T extends PrimaryNode> extends NodeOptions<T> {
6
+ /**
7
+ * The **`position`** property of a node.
8
+ * It represents the position in the plane.
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * useEvent(transform, 'updated', (delta) => {
13
+ * transform.node.position.x += delta * 20
14
+ * })
15
+ *
16
+ * return (
17
+ * <transform ref={transform}>
18
+ * <sprite textureId={BALL_TEXTURE} />
19
+ * </transform>
20
+ * )
21
+ * ```
22
+ */
23
+ position?: Reactive<VectorLike>;
24
+ }
25
+ export declare abstract class Node2D<T extends PrimaryNode = PrimaryNode> extends Node<T> {
26
+ /**
27
+ * The **`position`** property of a node.
28
+ * It represents the position in the plane.
29
+ *
30
+ * @example
31
+ * ```tsx
32
+ * const transform = useNode(PrimaryNode.Transform)
33
+ *
34
+ * useEvent(transform, 'updated', (delta) => {
35
+ * transform.node.position.x += delta * 20
36
+ * })
37
+ *
38
+ * return (
39
+ * <transform ref={transform}>
40
+ * <sprite textureId={BALL_TEXTURE} />
41
+ * </transform>
42
+ * )
43
+ * ```
44
+ */
45
+ position: Vector2;
46
+ constructor(type: T, options: Node2DOptions<T>);
47
+ /**
48
+ * Gets or sets the **`globalPosition`** of the node.
49
+ */
50
+ set globalPosition(value: Vector2);
51
+ get globalPosition(): Vector2;
52
+ /**
53
+ * The **`draw`** method is called each frame to render the node and its children.
54
+ * It applies position translation for proper rendering hierarchy.
55
+ * @param delta The time elapsed since the last frame in seconds.
56
+ */
57
+ draw(delta: number): void;
58
+ }
59
+ //# sourceMappingURL=_node2d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_node2d.d.ts","sourceRoot":"","sources":["../../../src/nodes/node2d/_node2d.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAE3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAEzD,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,WAAW,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IAC1E;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;CAChC;AAED,8BAAsB,MAAM,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,IAAI,CAAC,CAAC,CAAC;IAC/E;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,EAAE,OAAO,CAAe;gBAEpB,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IAS9C;;OAEG;IACH,IAAI,cAAc,CAAC,KAAK,EAKF,OAAO,AALL,EAIvB;IACD,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAU1B"}
@@ -0,0 +1,57 @@
1
+ import { GameConfig } from '../../core/game-config.js';
2
+ import { Vector2, vectorize } from '../../math/vector2.js';
3
+ import { applySignal, ns, propSignal } from '../../utils/ternaries.js';
4
+ import { Node } from '../_node.js';
5
+ import { getGlobalPosition } from './lib/utils.js';
6
+ export class Node2D extends Node {
7
+ /**
8
+ * The **`position`** property of a node.
9
+ * It represents the position in the plane.
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * const transform = useNode(PrimaryNode.Transform)
14
+ *
15
+ * useEvent(transform, 'updated', (delta) => {
16
+ * transform.node.position.x += delta * 20
17
+ * })
18
+ *
19
+ * return (
20
+ * <transform ref={transform}>
21
+ * <sprite textureId={BALL_TEXTURE} />
22
+ * </transform>
23
+ * )
24
+ * ```
25
+ */
26
+ position = Vector2.ZERO;
27
+ constructor(type, options) {
28
+ super(type, options);
29
+ this.position = ns(options.position, (vector) => propSignal(this, 'position', applySignal(vector, vectorize)), this.position);
30
+ }
31
+ /**
32
+ * Gets or sets the **`globalPosition`** of the node.
33
+ */
34
+ set globalPosition(value) {
35
+ const gp = getGlobalPosition(this).add(this.position).subtract(value);
36
+ this.position = gp.multiply(-1);
37
+ }
38
+ get globalPosition() {
39
+ return getGlobalPosition(this);
40
+ }
41
+ /**
42
+ * The **`draw`** method is called each frame to render the node and its children.
43
+ * It applies position translation for proper rendering hierarchy.
44
+ * @param delta The time elapsed since the last frame in seconds.
45
+ */
46
+ draw(delta) {
47
+ for (const node of this._children) {
48
+ GameConfig.ctx.translate(this.position.x, this.position.y);
49
+ GameConfig.translate.add(this.position);
50
+ node.draw(delta * node.deltaIncrease);
51
+ GameConfig.translate.subtract(this.position);
52
+ GameConfig.ctx.translate(-this.position.x, -this.position.y);
53
+ }
54
+ this.drawed.emit(delta);
55
+ }
56
+ }
57
+ //# sourceMappingURL=_node2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_node2d.js","sourceRoot":"","sources":["../../../src/nodes/node2d/_node2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAmB,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAEtE,OAAO,EAAE,IAAI,EAAoB,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAwBlD,MAAM,OAAgB,MAA4C,SAAQ,IAAO;IAC/E;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,GAAY,OAAO,CAAC,IAAI,CAAA;IAEhC,YAAY,IAAO,EAAE,OAAyB;QAC5C,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAChB,OAAO,CAAC,QAAQ,EAChB,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EACxE,IAAI,CAAC,QAAQ,CACd,CAAA;IACH,CAAC;IAED;;OAEG;IACH,IAAI,cAAc,CAAC,KAAK;QACtB,MAAM,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAErE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC;IACD,IAAI,cAAc;QAChB,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,KAAa;QAChB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAClC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;YAC1D,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACvC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAA;YACrC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC5C,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC9D,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;CACF"}
@@ -0,0 +1,64 @@
1
+ import { PrimaryNode } from '../lib/enum.js';
2
+ import { Node2D, type Node2DOptions } from './_node2d.js';
3
+ import type { Reactive } from '../../reactivity/types.js';
4
+ /**
5
+ * Options for the `Camera` node.
6
+ */
7
+ export interface CameraOptions extends Node2DOptions<PrimaryNode.Camera> {
8
+ /**
9
+ * The **`zoom`** property scales the viewport.
10
+ * A value of `2` means everything appears twice as large.
11
+ *
12
+ * @default 1
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * <camera zoom={2} />
17
+ * ```
18
+ */
19
+ zoom?: Reactive<number>;
20
+ }
21
+ /**
22
+ * The **`Camera`** node controls the viewport by applying a transform
23
+ * to all its children. It supports position, zoom, and target following.
24
+ *
25
+ * Place the Camera at the root of your scene to control what is visible.
26
+ *
27
+ * @example
28
+ * ```tsx
29
+ * import { useNode, useEffect } from 'dinix/hooks'
30
+ * import { PrimaryNode } from 'dinix/nodes/enum'
31
+ *
32
+ * function GameScene() {
33
+ * const camera = useNode(PrimaryNode.Camera)
34
+ * const player = useNode(PrimaryNode.Sprite)
35
+ *
36
+ * useEffect(() => {
37
+ * camera.follow(player)
38
+ * })
39
+ *
40
+ * return (
41
+ * <camera ref={camera} zoom={2}>
42
+ * <sprite ref={player} textureId={PLAYER} />
43
+ * <sprite textureId={BG} />
44
+ * </camera>
45
+ * )
46
+ * }
47
+ * ```
48
+ */
49
+ export declare class Camera extends Node2D<PrimaryNode.Camera> {
50
+ #private;
51
+ constructor(options: CameraOptions);
52
+ /**
53
+ * Makes the camera follow a target node's position.
54
+ * Pass `undefined` to stop following.
55
+ */
56
+ follow(target: Node2D | undefined): void;
57
+ /** Gets the current zoom level. */
58
+ get zoom(): number;
59
+ /** Sets the zoom level. */
60
+ set zoom(value: number);
61
+ /** @internal Applies viewport transform and draws children. */
62
+ draw(delta: number): void;
63
+ }
64
+ //# sourceMappingURL=camera.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../src/nodes/node2d/camera.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAEzD;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC;IACtE;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,MAAO,SAAQ,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;;gBAIxC,OAAO,EAAE,aAAa;IAKlC;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIxC,mCAAmC;IACnC,IAAI,IAAI,IAKQ,MAAM,CAHrB;IAED,2BAA2B;IAC3B,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAErB;IAED,+DAA+D;IAC/D,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAiB1B"}