@jolly-pixel/engine 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/README.md +209 -0
  2. package/dist/actor/Actor.d.ts +39 -0
  3. package/dist/actor/Actor.d.ts.map +1 -0
  4. package/dist/actor/Actor.js +171 -0
  5. package/dist/actor/Actor.js.map +1 -0
  6. package/dist/actor/ActorComponent.d.ts +19 -0
  7. package/dist/actor/ActorComponent.d.ts.map +1 -0
  8. package/dist/actor/ActorComponent.js +30 -0
  9. package/dist/actor/ActorComponent.js.map +1 -0
  10. package/dist/actor/ActorTree.d.ts +31 -0
  11. package/dist/actor/ActorTree.d.ts.map +1 -0
  12. package/dist/actor/ActorTree.js +167 -0
  13. package/dist/actor/ActorTree.js.map +1 -0
  14. package/dist/actor/Signal.d.ts +14 -0
  15. package/dist/actor/Signal.d.ts.map +1 -0
  16. package/dist/actor/Signal.js +38 -0
  17. package/dist/actor/Signal.js.map +1 -0
  18. package/dist/actor/Transform.d.ts +37 -0
  19. package/dist/actor/Transform.d.ts.map +1 -0
  20. package/dist/actor/Transform.js +148 -0
  21. package/dist/actor/Transform.js.map +1 -0
  22. package/dist/actor/index.d.ts +5 -0
  23. package/dist/actor/index.d.ts.map +1 -0
  24. package/dist/actor/index.js +5 -0
  25. package/dist/actor/index.js.map +1 -0
  26. package/dist/adapters/canvas.d.ts +7 -0
  27. package/dist/adapters/canvas.d.ts.map +1 -0
  28. package/dist/adapters/canvas.js +2 -0
  29. package/dist/adapters/canvas.js.map +1 -0
  30. package/dist/adapters/console.d.ts +6 -0
  31. package/dist/adapters/console.d.ts.map +1 -0
  32. package/dist/adapters/console.js +2 -0
  33. package/dist/adapters/console.js.map +1 -0
  34. package/dist/adapters/document.d.ts +14 -0
  35. package/dist/adapters/document.d.ts.map +1 -0
  36. package/dist/adapters/document.js +19 -0
  37. package/dist/adapters/document.js.map +1 -0
  38. package/dist/adapters/eventTarget.d.ts +6 -0
  39. package/dist/adapters/eventTarget.d.ts.map +1 -0
  40. package/dist/adapters/eventTarget.js +2 -0
  41. package/dist/adapters/eventTarget.js.map +1 -0
  42. package/dist/adapters/global.d.ts +8 -0
  43. package/dist/adapters/global.d.ts.map +1 -0
  44. package/dist/adapters/global.js +8 -0
  45. package/dist/adapters/global.js.map +1 -0
  46. package/dist/adapters/index.d.ts +6 -0
  47. package/dist/adapters/index.d.ts.map +1 -0
  48. package/dist/adapters/index.js +6 -0
  49. package/dist/adapters/index.js.map +1 -0
  50. package/dist/adapters/navigator.d.ts +9 -0
  51. package/dist/adapters/navigator.d.ts.map +1 -0
  52. package/dist/adapters/navigator.js +9 -0
  53. package/dist/adapters/navigator.js.map +1 -0
  54. package/dist/adapters/window.d.ts +12 -0
  55. package/dist/adapters/window.d.ts.map +1 -0
  56. package/dist/adapters/window.js +11 -0
  57. package/dist/adapters/window.js.map +1 -0
  58. package/dist/audio/AudioBackground.d.ts +48 -0
  59. package/dist/audio/AudioBackground.d.ts.map +1 -0
  60. package/dist/audio/AudioBackground.js +151 -0
  61. package/dist/audio/AudioBackground.js.map +1 -0
  62. package/dist/audio/AudioLibrary.d.ts +6 -0
  63. package/dist/audio/AudioLibrary.d.ts.map +1 -0
  64. package/dist/audio/AudioLibrary.js +6 -0
  65. package/dist/audio/AudioLibrary.js.map +1 -0
  66. package/dist/audio/AudioManager.d.ts +33 -0
  67. package/dist/audio/AudioManager.d.ts.map +1 -0
  68. package/dist/audio/AudioManager.js +47 -0
  69. package/dist/audio/AudioManager.js.map +1 -0
  70. package/dist/audio/GlobalAudio.d.ts +20 -0
  71. package/dist/audio/GlobalAudio.d.ts.map +1 -0
  72. package/dist/audio/GlobalAudio.js +41 -0
  73. package/dist/audio/GlobalAudio.js.map +1 -0
  74. package/dist/audio/internals/AudioBuffer.d.ts +23 -0
  75. package/dist/audio/internals/AudioBuffer.d.ts.map +1 -0
  76. package/dist/audio/internals/AudioBuffer.js +28 -0
  77. package/dist/audio/internals/AudioBuffer.js.map +1 -0
  78. package/dist/audio/internals/AudioListener.d.ts +5 -0
  79. package/dist/audio/internals/AudioListener.d.ts.map +1 -0
  80. package/dist/audio/internals/AudioListener.js +2 -0
  81. package/dist/audio/internals/AudioListener.js.map +1 -0
  82. package/dist/audio/internals/AudioService.d.ts +19 -0
  83. package/dist/audio/internals/AudioService.d.ts.map +1 -0
  84. package/dist/audio/internals/AudioService.js +36 -0
  85. package/dist/audio/internals/AudioService.js.map +1 -0
  86. package/dist/components/camera/Camera3DControls.d.ts +31 -0
  87. package/dist/components/camera/Camera3DControls.d.ts.map +1 -0
  88. package/dist/components/camera/Camera3DControls.js +79 -0
  89. package/dist/components/camera/Camera3DControls.js.map +1 -0
  90. package/dist/components/index.d.ts +5 -0
  91. package/dist/components/index.d.ts.map +1 -0
  92. package/dist/components/index.js +5 -0
  93. package/dist/components/index.js.map +1 -0
  94. package/dist/components/renderers/index.d.ts +14 -0
  95. package/dist/components/renderers/index.d.ts.map +1 -0
  96. package/dist/components/renderers/index.js +14 -0
  97. package/dist/components/renderers/index.js.map +1 -0
  98. package/dist/components/renderers/model/ModelAnimation.d.ts +21 -0
  99. package/dist/components/renderers/model/ModelAnimation.d.ts.map +1 -0
  100. package/dist/components/renderers/model/ModelAnimation.js +84 -0
  101. package/dist/components/renderers/model/ModelAnimation.js.map +1 -0
  102. package/dist/components/renderers/model/ModelRenderer.d.ts +24 -0
  103. package/dist/components/renderers/model/ModelRenderer.d.ts.map +1 -0
  104. package/dist/components/renderers/model/ModelRenderer.js +49 -0
  105. package/dist/components/renderers/model/ModelRenderer.js.map +1 -0
  106. package/dist/components/renderers/model/loader.d.ts +8 -0
  107. package/dist/components/renderers/model/loader.d.ts.map +1 -0
  108. package/dist/components/renderers/model/loader.js +112 -0
  109. package/dist/components/renderers/model/loader.js.map +1 -0
  110. package/dist/components/renderers/sprite/SpriteAnimation.class.d.ts +33 -0
  111. package/dist/components/renderers/sprite/SpriteAnimation.class.d.ts.map +1 -0
  112. package/dist/components/renderers/sprite/SpriteAnimation.class.js +78 -0
  113. package/dist/components/renderers/sprite/SpriteAnimation.class.js.map +1 -0
  114. package/dist/components/renderers/sprite/SpriteRenderer.class.d.ts +35 -0
  115. package/dist/components/renderers/sprite/SpriteRenderer.class.d.ts.map +1 -0
  116. package/dist/components/renderers/sprite/SpriteRenderer.class.js +76 -0
  117. package/dist/components/renderers/sprite/SpriteRenderer.class.js.map +1 -0
  118. package/dist/components/renderers/text/Text3D.class.d.ts +26 -0
  119. package/dist/components/renderers/text/Text3D.class.d.ts.map +1 -0
  120. package/dist/components/renderers/text/Text3D.class.js +104 -0
  121. package/dist/components/renderers/text/Text3D.class.js.map +1 -0
  122. package/dist/components/renderers/text/TextRenderer.class.d.ts +15 -0
  123. package/dist/components/renderers/text/TextRenderer.class.d.ts.map +1 -0
  124. package/dist/components/renderers/text/TextRenderer.class.js +47 -0
  125. package/dist/components/renderers/text/TextRenderer.class.js.map +1 -0
  126. package/dist/components/renderers/text/loader.d.ts +4 -0
  127. package/dist/components/renderers/text/loader.d.ts.map +1 -0
  128. package/dist/components/renderers/text/loader.js +14 -0
  129. package/dist/components/renderers/text/loader.js.map +1 -0
  130. package/dist/components/renderers/tiled/TileLayer.d.ts +13 -0
  131. package/dist/components/renderers/tiled/TileLayer.d.ts.map +1 -0
  132. package/dist/components/renderers/tiled/TileLayer.js +34 -0
  133. package/dist/components/renderers/tiled/TileLayer.js.map +1 -0
  134. package/dist/components/renderers/tiled/TileMapRenderer.d.ts +15 -0
  135. package/dist/components/renderers/tiled/TileMapRenderer.d.ts.map +1 -0
  136. package/dist/components/renderers/tiled/TileMapRenderer.js +59 -0
  137. package/dist/components/renderers/tiled/TileMapRenderer.js.map +1 -0
  138. package/dist/components/renderers/tiled/TileObject.d.ts +18 -0
  139. package/dist/components/renderers/tiled/TileObject.d.ts.map +1 -0
  140. package/dist/components/renderers/tiled/TileObject.js +59 -0
  141. package/dist/components/renderers/tiled/TileObject.js.map +1 -0
  142. package/dist/components/renderers/tiled/TileSet.d.ts +27 -0
  143. package/dist/components/renderers/tiled/TileSet.d.ts.map +1 -0
  144. package/dist/components/renderers/tiled/TileSet.js +116 -0
  145. package/dist/components/renderers/tiled/TileSet.js.map +1 -0
  146. package/dist/components/renderers/tiled/loader.d.ts +13 -0
  147. package/dist/components/renderers/tiled/loader.d.ts.map +1 -0
  148. package/dist/components/renderers/tiled/loader.js +39 -0
  149. package/dist/components/renderers/tiled/loader.js.map +1 -0
  150. package/dist/components/renderers/tiled/types.d.ts +325 -0
  151. package/dist/components/renderers/tiled/types.d.ts.map +1 -0
  152. package/dist/components/renderers/tiled/types.js +18 -0
  153. package/dist/components/renderers/tiled/types.js.map +1 -0
  154. package/dist/components/script/Behavior.d.ts +16 -0
  155. package/dist/components/script/Behavior.d.ts.map +1 -0
  156. package/dist/components/script/Behavior.js +52 -0
  157. package/dist/components/script/Behavior.js.map +1 -0
  158. package/dist/components/script/BehaviorDecorators.d.ts +29 -0
  159. package/dist/components/script/BehaviorDecorators.d.ts.map +1 -0
  160. package/dist/components/script/BehaviorDecorators.js +47 -0
  161. package/dist/components/script/BehaviorDecorators.js.map +1 -0
  162. package/dist/components/script/BehaviorInitializer.d.ts +15 -0
  163. package/dist/components/script/BehaviorInitializer.d.ts.map +1 -0
  164. package/dist/components/script/BehaviorInitializer.js +103 -0
  165. package/dist/components/script/BehaviorInitializer.js.map +1 -0
  166. package/dist/components/types.d.ts +12 -0
  167. package/dist/components/types.d.ts.map +1 -0
  168. package/dist/components/types.js +3 -0
  169. package/dist/components/types.js.map +1 -0
  170. package/dist/controls/AtomicInput.d.ts +17 -0
  171. package/dist/controls/AtomicInput.d.ts.map +1 -0
  172. package/dist/controls/AtomicInput.js +69 -0
  173. package/dist/controls/AtomicInput.js.map +1 -0
  174. package/dist/controls/CombinedInput.d.ts +54 -0
  175. package/dist/controls/CombinedInput.d.ts.map +1 -0
  176. package/dist/controls/CombinedInput.js +119 -0
  177. package/dist/controls/CombinedInput.js.map +1 -0
  178. package/dist/controls/Input.class.d.ts +93 -0
  179. package/dist/controls/Input.class.d.ts.map +1 -0
  180. package/dist/controls/Input.class.js +334 -0
  181. package/dist/controls/Input.class.js.map +1 -0
  182. package/dist/controls/devices/Gamepad.class.d.ts +98 -0
  183. package/dist/controls/devices/Gamepad.class.d.ts.map +1 -0
  184. package/dist/controls/devices/Gamepad.class.js +275 -0
  185. package/dist/controls/devices/Gamepad.class.js.map +1 -0
  186. package/dist/controls/devices/Mouse.class.d.ts +80 -0
  187. package/dist/controls/devices/Mouse.class.d.ts.map +1 -0
  188. package/dist/controls/devices/Mouse.class.js +260 -0
  189. package/dist/controls/devices/Mouse.class.js.map +1 -0
  190. package/dist/controls/devices/Screen.d.ts +27 -0
  191. package/dist/controls/devices/Screen.d.ts.map +1 -0
  192. package/dist/controls/devices/Screen.js +61 -0
  193. package/dist/controls/devices/Screen.js.map +1 -0
  194. package/dist/controls/devices/Touchpad.class.d.ts +61 -0
  195. package/dist/controls/devices/Touchpad.class.d.ts.map +1 -0
  196. package/dist/controls/devices/Touchpad.class.js +149 -0
  197. package/dist/controls/devices/Touchpad.class.js.map +1 -0
  198. package/dist/controls/devices/index.d.ts +6 -0
  199. package/dist/controls/devices/index.d.ts.map +1 -0
  200. package/dist/controls/devices/index.js +6 -0
  201. package/dist/controls/devices/index.js.map +1 -0
  202. package/dist/controls/devices/keyboard/Keyboard.class.d.ts +37 -0
  203. package/dist/controls/devices/keyboard/Keyboard.class.d.ts.map +1 -0
  204. package/dist/controls/devices/keyboard/Keyboard.class.js +135 -0
  205. package/dist/controls/devices/keyboard/Keyboard.class.js.map +1 -0
  206. package/dist/controls/devices/keyboard/code.d.ts +9 -0
  207. package/dist/controls/devices/keyboard/code.d.ts.map +1 -0
  208. package/dist/controls/devices/keyboard/code.js +13 -0
  209. package/dist/controls/devices/keyboard/code.js.map +1 -0
  210. package/dist/controls/devices/keyboard/transformers/alphabet.d.ts +31 -0
  211. package/dist/controls/devices/keyboard/transformers/alphabet.d.ts.map +1 -0
  212. package/dist/controls/devices/keyboard/transformers/alphabet.js +34 -0
  213. package/dist/controls/devices/keyboard/transformers/alphabet.js.map +1 -0
  214. package/dist/controls/devices/keyboard/transformers/numeric.d.ts +15 -0
  215. package/dist/controls/devices/keyboard/transformers/numeric.d.ts.map +1 -0
  216. package/dist/controls/devices/keyboard/transformers/numeric.js +18 -0
  217. package/dist/controls/devices/keyboard/transformers/numeric.js.map +1 -0
  218. package/dist/controls/types.d.ts +23 -0
  219. package/dist/controls/types.d.ts.map +1 -0
  220. package/dist/controls/types.js +2 -0
  221. package/dist/controls/types.js.map +1 -0
  222. package/dist/index.d.ts +9 -0
  223. package/dist/index.d.ts.map +1 -0
  224. package/dist/index.js +9 -0
  225. package/dist/index.js.map +1 -0
  226. package/dist/systems/FixedTimeStep.d.ts +16 -0
  227. package/dist/systems/FixedTimeStep.d.ts.map +1 -0
  228. package/dist/systems/FixedTimeStep.js +41 -0
  229. package/dist/systems/FixedTimeStep.js.map +1 -0
  230. package/dist/systems/GameInstance.d.ts +30 -0
  231. package/dist/systems/GameInstance.d.ts.map +1 -0
  232. package/dist/systems/GameInstance.js +54 -0
  233. package/dist/systems/GameInstance.js.map +1 -0
  234. package/dist/systems/Scene.d.ts +30 -0
  235. package/dist/systems/Scene.d.ts.map +1 -0
  236. package/dist/systems/Scene.js +91 -0
  237. package/dist/systems/Scene.js.map +1 -0
  238. package/dist/systems/asset/Base.d.ts +18 -0
  239. package/dist/systems/asset/Base.d.ts.map +1 -0
  240. package/dist/systems/asset/Base.js +36 -0
  241. package/dist/systems/asset/Base.js.map +1 -0
  242. package/dist/systems/asset/Manager.d.ts +21 -0
  243. package/dist/systems/asset/Manager.d.ts.map +1 -0
  244. package/dist/systems/asset/Manager.js +68 -0
  245. package/dist/systems/asset/Manager.js.map +1 -0
  246. package/dist/systems/asset/Queue.d.ts +8 -0
  247. package/dist/systems/asset/Queue.d.ts.map +1 -0
  248. package/dist/systems/asset/Queue.js +17 -0
  249. package/dist/systems/asset/Queue.js.map +1 -0
  250. package/dist/systems/asset/Registry.d.ts +17 -0
  251. package/dist/systems/asset/Registry.d.ts.map +1 -0
  252. package/dist/systems/asset/Registry.js +23 -0
  253. package/dist/systems/asset/Registry.js.map +1 -0
  254. package/dist/systems/index.d.ts +9 -0
  255. package/dist/systems/index.d.ts.map +1 -0
  256. package/dist/systems/index.js +8 -0
  257. package/dist/systems/index.js.map +1 -0
  258. package/dist/systems/rendering/GameRenderer.d.ts +18 -0
  259. package/dist/systems/rendering/GameRenderer.d.ts.map +1 -0
  260. package/dist/systems/rendering/GameRenderer.js +3 -0
  261. package/dist/systems/rendering/GameRenderer.js.map +1 -0
  262. package/dist/systems/rendering/RenderStrategy.d.ts +24 -0
  263. package/dist/systems/rendering/RenderStrategy.d.ts.map +1 -0
  264. package/dist/systems/rendering/RenderStrategy.js +38 -0
  265. package/dist/systems/rendering/RenderStrategy.js.map +1 -0
  266. package/dist/systems/rendering/ThreeRenderer.d.ts +48 -0
  267. package/dist/systems/rendering/ThreeRenderer.d.ts.map +1 -0
  268. package/dist/systems/rendering/ThreeRenderer.js +149 -0
  269. package/dist/systems/rendering/ThreeRenderer.js.map +1 -0
  270. package/dist/systems/rendering/index.d.ts +4 -0
  271. package/dist/systems/rendering/index.d.ts.map +1 -0
  272. package/dist/systems/rendering/index.js +3 -0
  273. package/dist/systems/rendering/index.js.map +1 -0
  274. package/dist/utils/createViewHelper.d.ts +5 -0
  275. package/dist/utils/createViewHelper.d.ts.map +1 -0
  276. package/dist/utils/createViewHelper.js +11 -0
  277. package/dist/utils/createViewHelper.js.map +1 -0
  278. package/dist/utils/index.d.ts +4 -0
  279. package/dist/utils/index.d.ts.map +1 -0
  280. package/dist/utils/index.js +4 -0
  281. package/dist/utils/index.js.map +1 -0
  282. package/dist/utils/loadJSON.d.ts +2 -0
  283. package/dist/utils/loadJSON.d.ts.map +1 -0
  284. package/dist/utils/loadJSON.js +15 -0
  285. package/dist/utils/loadJSON.js.map +1 -0
  286. package/dist/utils/path.d.ts +9 -0
  287. package/dist/utils/path.d.ts.map +1 -0
  288. package/dist/utils/path.js +18 -0
  289. package/dist/utils/path.js.map +1 -0
  290. package/package.json +41 -0
@@ -0,0 +1,47 @@
1
+ // Import Third-party Dependencies
2
+ import "reflect-metadata";
3
+ export function SceneProperty(options) {
4
+ const { type } = options;
5
+ return function fn(object, propertyName) {
6
+ const { label = propertyName.toString(), description = "" } = options;
7
+ const propertyValue = {
8
+ type,
9
+ label,
10
+ description
11
+ };
12
+ const metadata = getBehaviorMetadata(object);
13
+ if (metadata) {
14
+ metadata.properties.set(propertyName, propertyValue);
15
+ }
16
+ else {
17
+ const metadata = createBehaviorMetadata();
18
+ metadata.properties.set(propertyName, propertyValue);
19
+ Reflect.defineMetadata(SceneProperty.Metadata, metadata, object);
20
+ }
21
+ };
22
+ }
23
+ SceneProperty.Metadata = Symbol.for("BehaviorMetadata");
24
+ export function SceneActorComponent(classObject) {
25
+ return function fn(object, propertyName) {
26
+ const metadata = getBehaviorMetadata(object);
27
+ if (metadata) {
28
+ metadata.components.set(propertyName, classObject);
29
+ }
30
+ else {
31
+ const metadata = createBehaviorMetadata();
32
+ metadata.components.set(propertyName, classObject);
33
+ Reflect.defineMetadata(SceneProperty.Metadata, metadata, object);
34
+ }
35
+ };
36
+ }
37
+ export function getBehaviorMetadata(object) {
38
+ return Reflect.getMetadata(SceneProperty.Metadata, object);
39
+ }
40
+ export function createBehaviorMetadata() {
41
+ return {
42
+ properties: new Map(),
43
+ components: new Map(),
44
+ signals: new Set()
45
+ };
46
+ }
47
+ //# sourceMappingURL=BehaviorDecorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BehaviorDecorators.js","sourceRoot":"","sources":["../../../src/components/script/BehaviorDecorators.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,kBAAkB,CAAC;AA2C1B,MAAM,UAAU,aAAa,CAC3B,OAA6B;IAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzB,OAAO,SAAS,EAAE,CAChB,MAAc,EACd,YAAyB;QAEzB,MAAM,EAAE,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;QAEtE,MAAM,aAAa,GAA6B;YAC9C,IAAI;YACJ,KAAK;YACL,WAAW;SACZ,CAAC;QAEF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QACvD,CAAC;aACI,CAAC;YACJ,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;YAC1C,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YAErD,OAAO,CAAC,cAAc,CACpB,aAAa,CAAC,QAAQ,EACtB,QAAQ,EACR,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AACD,aAAa,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAUxD,MAAM,UAAU,mBAAmB,CACjC,WAAoC;IAEpC,OAAO,SAAS,EAAE,CAChB,MAAc,EACd,YAAyB;QAEzB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAE7C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACrD,CAAC;aACI,CAAC;YACJ,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;YAC1C,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAEnD,OAAO,CAAC,cAAc,CACpB,aAAa,CAAC,QAAQ,EACtB,QAAQ,EACR,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAc;IAEd,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,OAAO,EAAE,IAAI,GAAG,EAAU;KAC3B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import "reflect-metadata";
2
+ import { Behavior } from "./Behavior.ts";
3
+ import { type BehaviorMetadata } from "./BehaviorDecorators.ts";
4
+ import { type ConsoleAdapter } from "../../adapters/console.ts";
5
+ export interface BehaviorInitializerOptions {
6
+ consoleAdapter?: ConsoleAdapter;
7
+ }
8
+ export declare class BehaviorInitializer {
9
+ #private;
10
+ static for(behavior: Behavior): BehaviorInitializer | null;
11
+ constructor(behavior: Behavior, metadata: BehaviorMetadata, options?: BehaviorInitializerOptions);
12
+ get behaviorName(): string;
13
+ load(): void;
14
+ }
15
+ //# sourceMappingURL=BehaviorInitializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BehaviorInitializer.d.ts","sourceRoot":"","sources":["../../../src/components/script/BehaviorInitializer.ts"],"names":[],"mappings":"AAEA,OAAO,kBAAkB,CAAC;AAU1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAgBhE,MAAM,WAAW,0BAA0B;IACzC,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,qBAAa,mBAAmB;;IAK9B,MAAM,CAAC,GAAG,CACR,QAAQ,EAAE,QAAQ,GACjB,mBAAmB,GAAG,IAAI;gBAW3B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE,0BAA+B;IAS1C,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,IAAI,IAAI;CAwFb"}
@@ -0,0 +1,103 @@
1
+ // Import Third-party Dependencies
2
+ import * as THREE from "three";
3
+ import "reflect-metadata";
4
+ // Import Internal Dependencies
5
+ import { Input } from "../../controls/Input.class.js";
6
+ import { SignalEvent } from "../../actor/Signal.js";
7
+ import { Behavior } from "./Behavior.js";
8
+ import { getBehaviorMetadata } from "./BehaviorDecorators.js";
9
+ import {} from "../../adapters/console.js";
10
+ // CONSTANTS
11
+ const kDefaultValues = {
12
+ string: "",
13
+ "string[]": [],
14
+ number: 0,
15
+ "number[]": [],
16
+ boolean: false,
17
+ "boolean[]": [],
18
+ Vector2: new THREE.Vector2(0, 0),
19
+ Vector3: new THREE.Vector3(0, 0, 0),
20
+ Vector4: new THREE.Vector4(0, 0, 0, 0),
21
+ Color: new THREE.Color(0, 0, 0)
22
+ };
23
+ export class BehaviorInitializer {
24
+ #behavior;
25
+ #metadata;
26
+ #console;
27
+ static for(behavior) {
28
+ const proto = Object.getPrototypeOf(behavior);
29
+ const metadata = getBehaviorMetadata(proto);
30
+ if (!metadata) {
31
+ return null;
32
+ }
33
+ return new BehaviorInitializer(behavior, metadata);
34
+ }
35
+ constructor(behavior, metadata, options = {}) {
36
+ const { consoleAdapter = console } = options;
37
+ this.#behavior = behavior;
38
+ this.#metadata = metadata;
39
+ this.#console = consoleAdapter;
40
+ }
41
+ get behaviorName() {
42
+ return this.#behavior.constructor.name;
43
+ }
44
+ load() {
45
+ this.#bindSignalHandlers();
46
+ this.#resolveProperties();
47
+ this.#resolveActorComponents();
48
+ this.#resolveInputListeners();
49
+ }
50
+ #bindSignalHandlers() {
51
+ const { signals } = this.#metadata;
52
+ for (const propertyName of signals) {
53
+ this.#behavior[propertyName] = new SignalEvent();
54
+ }
55
+ }
56
+ #resolveInputListeners() {
57
+ const { input } = this.#behavior.actor.gameInstance;
58
+ const metadata = Reflect.getMetadata(Input.Metadata, this.#behavior) ?? [];
59
+ for (const { type, methodName } of metadata) {
60
+ if (!(methodName in this.#behavior)) {
61
+ this.#console.warn(`[BehaviorInitializer] Class method '${methodName}' not found in ${this.behaviorName}`);
62
+ continue;
63
+ }
64
+ const [targetName, eventName] = type.split(".");
65
+ const target = targetName === "input" ? input : input[targetName];
66
+ target.on(eventName, this.#behavior[methodName].bind(this.#behavior));
67
+ }
68
+ }
69
+ #resolveProperties() {
70
+ for (const [propertyName, properties] of this.#metadata.properties) {
71
+ const { type } = properties;
72
+ const currentValue = this.#behavior[propertyName];
73
+ const defaultValue = this.#getDefaultValue(type);
74
+ const finalValue = currentValue ?? defaultValue;
75
+ this.#behavior[propertyName] = finalValue;
76
+ this.#behavior.setProperty(propertyName, finalValue);
77
+ }
78
+ }
79
+ #resolveActorComponents() {
80
+ for (const [componentName, ComponentClass] of this.#metadata.components) {
81
+ if (!(componentName in this.#behavior)) {
82
+ this.#console.warn(`[BehaviorInitializer] Component '${String(componentName)}' not found in ${this.behaviorName}`);
83
+ continue;
84
+ }
85
+ const component = this.#behavior.actor.components.find((component) => component.constructor.name === ComponentClass.name);
86
+ this.#behavior[componentName] = component ?? undefined;
87
+ }
88
+ }
89
+ #getDefaultValue(type) {
90
+ const value = kDefaultValues[type];
91
+ if (value instanceof THREE.Vector2 ||
92
+ value instanceof THREE.Vector3 ||
93
+ value instanceof THREE.Vector4 ||
94
+ value instanceof THREE.Color) {
95
+ return value.clone();
96
+ }
97
+ if (Array.isArray(value)) {
98
+ return [...value];
99
+ }
100
+ return value;
101
+ }
102
+ }
103
+ //# sourceMappingURL=BehaviorInitializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BehaviorInitializer.js","sourceRoot":"","sources":["../../../src/components/script/BehaviorInitializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { Actor } from "../actor/Actor.ts";
2
+ export type StrictComponentEnum = "ScriptBehavior" | "Camera" | "VoxelRenderer" | "SpriteRenderer" | "ModelRenderer" | "TiledMapRenderer" | "TextRenderer";
3
+ export type FreeComponentEnum = StrictComponentEnum | (string & {});
4
+ export interface Component {
5
+ actor: Actor;
6
+ typeName: FreeComponentEnum;
7
+ awake?(): void;
8
+ start?(): void;
9
+ update?(deltaTime: number): void;
10
+ destroy(): void;
11
+ }
12
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/components/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,MAAM,MAAM,mBAAmB,GAC3B,gBAAgB,GAChB,QAAQ,GACR,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,kBAAkB,GAClB,cAAc,CAAC;AAEnB,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEpE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAE5B,KAAK,CAAC,IAAI,IAAI,CAAC;IACf,KAAK,CAAC,IAAI,IAAI,CAAC;IACf,MAAM,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,IAAI,IAAI,CAAC;CACjB"}
@@ -0,0 +1,3 @@
1
+ // Import Internal Dependencies
2
+ import { Actor } from "../actor/Actor.js";
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/components/types.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Input } from "./Input.class.ts";
2
+ import { type MouseAction, type GamepadIndex, type GamepadButton, type ExtendedKeyCode } from "./devices/index.ts";
3
+ export interface InputCondition {
4
+ evaluate(input: Input): boolean;
5
+ reset(): void;
6
+ }
7
+ export type CombinedInputType = "key" | "mouse" | "gamepad";
8
+ export type CombinedInputState = "down" | "pressed" | "released";
9
+ export type CombinedInputAction = `${ExtendedKeyCode | MouseAction}.${CombinedInputState}`;
10
+ export type AtomicInputAction = ExtendedKeyCode | MouseAction | [GamepadIndex, number | keyof typeof GamepadButton];
11
+ export declare class AtomicInput implements InputCondition {
12
+ #private;
13
+ constructor(type: CombinedInputType, action: AtomicInputAction, state?: CombinedInputState);
14
+ evaluate(input: Input): boolean;
15
+ reset(): void;
16
+ }
17
+ //# sourceMappingURL=AtomicInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AtomicInput.d.ts","sourceRoot":"","sources":["../../src/controls/AtomicInput.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;IAChC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;AAC5D,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AACjE,MAAM,MAAM,mBAAmB,GAAG,GAAG,eAAe,GAAG,WAAW,IAAI,kBAAkB,EAAE,CAAC;AAE3F,MAAM,MAAM,iBAAiB,GACzB,eAAe,GACf,WAAW,GACX,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,OAAO,aAAa,CAAC,CAAC;AAExD,qBAAa,WAAY,YAAW,cAAc;;gBAM9C,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,iBAAiB,EACzB,KAAK,GAAE,kBAA8B;IAOvC,QAAQ,CACN,KAAK,EAAE,KAAK,GACX,OAAO;IAaV,KAAK,IAAI,IAAI;CA6Dd"}
@@ -0,0 +1,69 @@
1
+ import {} from "./devices/index.js";
2
+ export class AtomicInput {
3
+ #type;
4
+ #action;
5
+ #state;
6
+ constructor(type, action, state = "pressed") {
7
+ this.#type = type;
8
+ this.#action = action;
9
+ this.#state = state;
10
+ }
11
+ evaluate(input) {
12
+ switch (this.#type) {
13
+ case "key":
14
+ return this.#evaluateKey(input);
15
+ case "mouse":
16
+ return this.#evaluateMouse(input);
17
+ case "gamepad":
18
+ return this.#evaluateGamepad(input);
19
+ default:
20
+ return false;
21
+ }
22
+ }
23
+ reset() {
24
+ // No state to reset for atomic inputs
25
+ }
26
+ #evaluateKey(input) {
27
+ const key = this.#action;
28
+ switch (this.#state) {
29
+ case "down":
30
+ return input.isKeyDown(key);
31
+ case "pressed":
32
+ return input.wasKeyJustPressed(key);
33
+ case "released":
34
+ return input.wasKeyJustReleased(key);
35
+ default:
36
+ return false;
37
+ }
38
+ }
39
+ #evaluateMouse(input) {
40
+ const button = this.#action;
41
+ switch (this.#state) {
42
+ case "down":
43
+ return input.isMouseButtonDown(button);
44
+ case "pressed":
45
+ return input.wasMouseButtonJustPressed(button);
46
+ case "released":
47
+ return input.wasMouseButtonJustReleased(button);
48
+ default:
49
+ return false;
50
+ }
51
+ }
52
+ #evaluateGamepad(input) {
53
+ const [gamepad, button] = this.#action;
54
+ if (typeof button === "number") {
55
+ switch (this.#state) {
56
+ case "down":
57
+ return input.isGamepadButtonDown(gamepad, button);
58
+ case "pressed":
59
+ return input.wasGamepadButtonJustPressed(gamepad, button);
60
+ case "released":
61
+ return input.wasGamepadButtonJustReleased(gamepad, button);
62
+ default:
63
+ return false;
64
+ }
65
+ }
66
+ return false;
67
+ }
68
+ }
69
+ //# sourceMappingURL=AtomicInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AtomicInput.js","sourceRoot":"","sources":["../../src/controls/AtomicInput.ts"],"names":[],"mappings":"AAEA,OAAO,EAKN,MAAM,oBAAoB,CAAC;AAgB5B,MAAM,OAAO,WAAW;IACtB,KAAK,CAAoB;IACzB,OAAO,CAAoB;IAC3B,MAAM,CAAqB;IAE3B,YACE,IAAuB,EACvB,MAAyB,EACzB,QAA4B,SAAS;QAErC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,QAAQ,CACN,KAAY;QAEZ,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAClC,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACpC,KAAK,SAAS;gBACZ,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACtC;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAED,KAAK;QACH,sCAAsC;IACxC,CAAC;IAED,YAAY,CACV,KAAY;QAEZ,MAAM,GAAG,GAAG,IAAI,CAAC,OAA0B,CAAC;QAE5C,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,MAAM;gBACT,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC9B,KAAK,SAAS;gBACZ,OAAO,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YACtC,KAAK,UAAU;gBACb,OAAO,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACvC;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAED,cAAc,CACZ,KAAY;QAEZ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAsB,CAAC;QAE3C,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,MAAM;gBACT,OAAO,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACzC,KAAK,SAAS;gBACZ,OAAO,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;YACjD,KAAK,UAAU;gBACb,OAAO,KAAK,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;YAClD;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAED,gBAAgB,CACd,KAAY;QAEZ,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,OAG9B,CAAC;QAEF,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpB,KAAK,MAAM;oBACT,OAAO,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACpD,KAAK,SAAS;oBACZ,OAAO,KAAK,CAAC,2BAA2B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC5D,KAAK,UAAU;oBACb,OAAO,KAAK,CAAC,4BAA4B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC7D;oBACE,OAAO,KAAK,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,54 @@
1
+ import type { Input } from "./Input.class.ts";
2
+ import { type MouseAction, type GamepadIndex, type GamepadButton, type ExtendedKeyCode } from "./devices/index.ts";
3
+ import { AtomicInput, type InputCondition, type CombinedInputAction, type CombinedInputState } from "./AtomicInput.ts";
4
+ /**
5
+ * Composite condition: ALL inputs must be satisfied.
6
+ */
7
+ export declare class AllInputs implements InputCondition {
8
+ #private;
9
+ constructor(conditions: InputCondition[]);
10
+ evaluate(input: Input): boolean;
11
+ reset(): void;
12
+ }
13
+ /**
14
+ * Composite condition: AT LEAST ONE input must be satisfied.
15
+ */
16
+ export declare class AtLeastOneInput implements InputCondition {
17
+ #private;
18
+ constructor(conditions: InputCondition[]);
19
+ evaluate(input: Input): boolean;
20
+ reset(): void;
21
+ }
22
+ /**
23
+ * Composite condition: NONE of the inputs should be satisfied.
24
+ */
25
+ export declare class NoneInputs implements InputCondition {
26
+ #private;
27
+ constructor(conditions: InputCondition[]);
28
+ evaluate(input: Input): boolean;
29
+ reset(): void;
30
+ }
31
+ /**
32
+ * Sequence condition: inputs must be pressed in specific order within timeout.
33
+ */
34
+ export declare class SequenceInputs implements InputCondition {
35
+ #private;
36
+ static DefaultTimeout: number;
37
+ constructor(conditions: InputCondition[], timeoutMs?: number);
38
+ evaluate(input: Input): boolean;
39
+ reset(): void;
40
+ }
41
+ export declare class InputCombination {
42
+ static isCombinedAction(action: any): action is CombinedInputAction;
43
+ static key(key: CombinedInputAction): AtomicInput;
44
+ static key(key: ExtendedKeyCode, state?: CombinedInputState): AtomicInput;
45
+ static mouse(button: MouseAction): AtomicInput;
46
+ static mouse(button: MouseAction, state?: CombinedInputState): AtomicInput;
47
+ static gamepad(gamepad: GamepadIndex, button: number | keyof typeof GamepadButton, state?: CombinedInputState): AtomicInput;
48
+ static all(...conditions: (InputCondition | CombinedInputAction)[]): AllInputs;
49
+ static atLeastOne(...conditions: (InputCondition | CombinedInputAction)[]): AtLeastOneInput;
50
+ static none(...conditions: (InputCondition | CombinedInputAction)[]): NoneInputs;
51
+ static sequence(...conditions: (InputCondition | CombinedInputAction)[]): SequenceInputs;
52
+ static sequenceWithTimeout(timeoutMs: number, ...conditions: (InputCondition | CombinedInputAction)[]): SequenceInputs;
53
+ }
54
+ //# sourceMappingURL=CombinedInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CombinedInput.d.ts","sourceRoot":"","sources":["../../src/controls/CombinedInput.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,qBAAa,SAAU,YAAW,cAAc;;gBAGlC,UAAU,EAAE,cAAc,EAAE;IAIxC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAM/B,KAAK,IAAI,IAAI;CAKd;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,cAAc;;gBAGxC,UAAU,EAAE,cAAc,EAAE;IAIxC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAM/B,KAAK,IAAI,IAAI;CAKd;AAED;;GAEG;AACH,qBAAa,UAAW,YAAW,cAAc;;gBAGnC,UAAU,EAAE,cAAc,EAAE;IAIxC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAM/B,KAAK,IAAI,IAAI;CAKd;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,cAAc;;IACnD,MAAM,CAAC,cAAc,SAAO;gBAQ1B,UAAU,EAAE,cAAc,EAAE,EAC5B,SAAS,GAAE,MAAsC;IAMnD,QAAQ,CACN,KAAK,EAAE,KAAK,GACX,OAAO;IAqBV,KAAK,IAAI,IAAI;CAKd;AAED,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,gBAAgB,CACrB,MAAM,EAAE,GAAG,GACV,MAAM,IAAI,mBAAmB;IAIhC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,GAAG,WAAW;IACjD,MAAM,CAAC,GAAG,CACR,GAAG,EAAE,eAAe,EACpB,KAAK,CAAC,EAAE,kBAAkB,GACzB,WAAW;IAcd,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW;IAC9C,MAAM,CAAC,KAAK,CACV,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,kBAAkB,GACzB,WAAW;IAcd,MAAM,CAAC,OAAO,CACZ,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,GAAG,MAAM,OAAO,aAAa,EAC3C,KAAK,GAAE,kBAA8B,GACpC,WAAW;IAId,MAAM,CAAC,GAAG,CACR,GAAG,UAAU,EAAE,CAAC,cAAc,GAAG,mBAAmB,CAAC,EAAE,GACtD,SAAS;IAMZ,MAAM,CAAC,UAAU,CACf,GAAG,UAAU,EAAE,CAAC,cAAc,GAAG,mBAAmB,CAAC,EAAE,GACtD,eAAe;IAMlB,MAAM,CAAC,IAAI,CACT,GAAG,UAAU,EAAE,CAAC,cAAc,GAAG,mBAAmB,CAAC,EAAE,GACtD,UAAU;IAMb,MAAM,CAAC,QAAQ,CACb,GAAG,UAAU,EAAE,CAAC,cAAc,GAAG,mBAAmB,CAAC,EAAE,GACtD,cAAc;IAMjB,MAAM,CAAC,mBAAmB,CACxB,SAAS,EAAE,MAAM,EACjB,GAAG,UAAU,EAAE,CAAC,cAAc,GAAG,mBAAmB,CAAC,EAAE,GACtD,cAAc;CAMlB"}
@@ -0,0 +1,119 @@
1
+ import {} from "./devices/index.js";
2
+ import { AtomicInput } from "./AtomicInput.js";
3
+ /**
4
+ * Composite condition: ALL inputs must be satisfied.
5
+ */
6
+ export class AllInputs {
7
+ #conditions;
8
+ constructor(conditions) {
9
+ this.#conditions = conditions;
10
+ }
11
+ evaluate(input) {
12
+ return this.#conditions.every((condition) => condition.evaluate(input));
13
+ }
14
+ reset() {
15
+ this.#conditions.forEach((condition) => condition.reset());
16
+ }
17
+ }
18
+ /**
19
+ * Composite condition: AT LEAST ONE input must be satisfied.
20
+ */
21
+ export class AtLeastOneInput {
22
+ #conditions;
23
+ constructor(conditions) {
24
+ this.#conditions = conditions;
25
+ }
26
+ evaluate(input) {
27
+ return this.#conditions.some((condition) => condition.evaluate(input));
28
+ }
29
+ reset() {
30
+ this.#conditions.forEach((condition) => condition.reset());
31
+ }
32
+ }
33
+ /**
34
+ * Composite condition: NONE of the inputs should be satisfied.
35
+ */
36
+ export class NoneInputs {
37
+ #conditions;
38
+ constructor(conditions) {
39
+ this.#conditions = conditions;
40
+ }
41
+ evaluate(input) {
42
+ return this.#conditions.every((condition) => !condition.evaluate(input));
43
+ }
44
+ reset() {
45
+ this.#conditions.forEach((condition) => condition.reset());
46
+ }
47
+ }
48
+ /**
49
+ * Sequence condition: inputs must be pressed in specific order within timeout.
50
+ */
51
+ export class SequenceInputs {
52
+ static DefaultTimeout = 100;
53
+ #conditions;
54
+ #currentIndex = 0;
55
+ #lastActivationTime = 0;
56
+ #timeoutMs;
57
+ constructor(conditions, timeoutMs = SequenceInputs.DefaultTimeout) {
58
+ this.#conditions = conditions;
59
+ this.#timeoutMs = timeoutMs;
60
+ }
61
+ evaluate(input) {
62
+ const now = Date.now();
63
+ if (now - this.#lastActivationTime > this.#timeoutMs) {
64
+ this.#currentIndex = 0;
65
+ }
66
+ if (this.#conditions[this.#currentIndex]?.evaluate(input)) {
67
+ this.#currentIndex++;
68
+ this.#lastActivationTime = now;
69
+ if (this.#currentIndex >= this.#conditions.length) {
70
+ this.#currentIndex = 0;
71
+ return true;
72
+ }
73
+ }
74
+ return false;
75
+ }
76
+ reset() {
77
+ this.#currentIndex = 0;
78
+ this.#lastActivationTime = 0;
79
+ this.#conditions.forEach((condition) => condition.reset());
80
+ }
81
+ }
82
+ export class InputCombination {
83
+ static isCombinedAction(action) {
84
+ return typeof action === "string" && action.includes(".");
85
+ }
86
+ static key(key, state = "pressed") {
87
+ if (InputCombination.isCombinedAction(key)) {
88
+ const [keyCode, keyState] = key.split(".");
89
+ return new AtomicInput("key", keyCode, keyState);
90
+ }
91
+ return new AtomicInput("key", key, state);
92
+ }
93
+ static mouse(button, state = "pressed") {
94
+ if (InputCombination.isCombinedAction(button)) {
95
+ const [mouseAction, mouseState] = button.split(".");
96
+ return new AtomicInput("mouse", mouseAction, mouseState);
97
+ }
98
+ return new AtomicInput("mouse", button, state);
99
+ }
100
+ static gamepad(gamepad, button, state = "pressed") {
101
+ return new AtomicInput("gamepad", [gamepad, button], state);
102
+ }
103
+ static all(...conditions) {
104
+ return new AllInputs(conditions.map((condition) => (typeof condition === "string" ? InputCombination.key(condition) : condition)));
105
+ }
106
+ static atLeastOne(...conditions) {
107
+ return new AtLeastOneInput(conditions.map((condition) => (typeof condition === "string" ? InputCombination.key(condition) : condition)));
108
+ }
109
+ static none(...conditions) {
110
+ return new NoneInputs(conditions.map((condition) => (typeof condition === "string" ? InputCombination.key(condition) : condition)));
111
+ }
112
+ static sequence(...conditions) {
113
+ return new SequenceInputs(conditions.map((condition) => (typeof condition === "string" ? InputCombination.key(condition) : condition)));
114
+ }
115
+ static sequenceWithTimeout(timeoutMs, ...conditions) {
116
+ return new SequenceInputs(conditions.map((condition) => (typeof condition === "string" ? InputCombination.key(condition) : condition)), timeoutMs);
117
+ }
118
+ }
119
+ //# sourceMappingURL=CombinedInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CombinedInput.js","sourceRoot":"","sources":["../../src/controls/CombinedInput.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import * as THREE from "three";
2
+ import { EventEmitter } from "@posva/event-emitter";
3
+ import "reflect-metadata";
4
+ import * as devices from "./devices/index.ts";
5
+ import { type WindowAdapter } from "../adapters/index.ts";
6
+ import type { InputMouseAction, InputKeyboardAction, InputCustomAction, KeyCode } from "./types.ts";
7
+ export type { MouseEventButton } from "./devices/Mouse.class.ts";
8
+ /**
9
+ * @note default stand for mouse + keyboard
10
+ */
11
+ export type InputDevicePreference = "default" | "gamepad";
12
+ export type InputListener = "input.devicePreferenceChange" | "input.exit" | "mouse.down" | "mouse.up" | "mouse.move" | "mouse.wheel" | "mouse.lockStateChange" | "gamepad.connect" | "gamepad.disconnect" | "touchpad.start" | "touchpad.move" | "touchpad.end" | "screen.stateChange" | "keyboard.down" | "keyboard.up" | "keyboard.press" | `keyboard.${KeyCode}`;
13
+ export interface InputListenerMetadata {
14
+ type: InputListener;
15
+ methodName: string;
16
+ }
17
+ export type InputEvents = {
18
+ exit: [];
19
+ devicePreferenceChange: [preference: InputDevicePreference];
20
+ };
21
+ export interface InputOptions {
22
+ /**
23
+ * @default false
24
+ */
25
+ enableOnExit?: boolean;
26
+ windowAdapter?: WindowAdapter;
27
+ }
28
+ export declare class Input extends EventEmitter<InputEvents> {
29
+ #private;
30
+ static Metadata: symbol;
31
+ static listen(type: InputListener): (object: Object, methodName: string) => void;
32
+ mouse: devices.Mouse;
33
+ touchpad: devices.Touchpad;
34
+ gamepad: devices.Gamepad;
35
+ screen: devices.Screen;
36
+ keyboard: devices.Keyboard;
37
+ exited: boolean;
38
+ constructor(canvas: HTMLCanvasElement, options?: InputOptions);
39
+ connect(): void;
40
+ disconnect(): void;
41
+ getDevicePreference(): InputDevicePreference;
42
+ isTouchpadAvailable(): boolean;
43
+ enterFullscreen(): void;
44
+ exitFullscreen(): void;
45
+ update(): void;
46
+ getScreenSize(): THREE.Vector2;
47
+ getScreenBounds(): {
48
+ left: number;
49
+ right: number;
50
+ top: number;
51
+ bottom: number;
52
+ };
53
+ getMouseVisible(): boolean;
54
+ setMouseVisible(visible: boolean): void;
55
+ lockMouse(): void;
56
+ unlockMouse(): void;
57
+ isMouseMoving(): boolean;
58
+ getMousePosition(): THREE.Vector2;
59
+ getMouseWorldPosition(): THREE.Vector2;
60
+ getMouseDelta(normalizeWithSize?: boolean): THREE.Vector2;
61
+ isMouseButtonDown(action: InputMouseAction): boolean;
62
+ wasMouseButtonJustReleased(action: InputMouseAction): boolean;
63
+ wasMouseButtonJustPressed(action: InputMouseAction): boolean;
64
+ getTouchPosition(index: number): THREE.Vector2;
65
+ isTouchDown(index: devices.TouchAction): boolean;
66
+ wasTouchStarted(index: devices.TouchAction): boolean;
67
+ wasTouchEnded(index: devices.TouchAction): boolean;
68
+ vibrate(pattern: VibratePattern): void;
69
+ isKeyDown(key: InputKeyboardAction): boolean;
70
+ wasKeyJustPressed(key: InputKeyboardAction): boolean;
71
+ wasKeyJustReleased(key: InputKeyboardAction): boolean;
72
+ wasKeyJustAutoRepeated(key: Exclude<InputKeyboardAction, InputCustomAction>): boolean;
73
+ getTextEntered(): string;
74
+ isGamepadButtonDown(gamepad: devices.GamepadIndex, buttonIndex: number | keyof typeof devices.GamepadButton): boolean;
75
+ wasGamepadButtonJustPressed(gamepad: devices.GamepadIndex, buttonIndex: number | keyof typeof devices.GamepadButton): boolean;
76
+ wasGamepadButtonJustReleased(gamepad: devices.GamepadIndex, buttonIndex: number | keyof typeof devices.GamepadButton): boolean;
77
+ setGamepadAxisDeadZone(deadZone: number): void;
78
+ getGamepadAxisDeadZone(): number;
79
+ wasGamepadAxisJustPressed(gamepad: devices.GamepadIndex, axis: number | keyof typeof devices.GamepadAxis, options?: {
80
+ autoRepeat?: boolean;
81
+ positive?: boolean;
82
+ }): boolean;
83
+ wasGamepadAxisJustReleased(gamepad: devices.GamepadIndex, axis: number | keyof typeof devices.GamepadAxis, options?: {
84
+ positive?: boolean;
85
+ }): boolean;
86
+ getGamepadAxisValue(gamepad: devices.GamepadIndex, axis: number | keyof typeof devices.GamepadAxis): number;
87
+ getGamepadButtonValue(gamepad: devices.GamepadIndex, buttonIndex: number | keyof typeof devices.GamepadButton): number;
88
+ private onBlur;
89
+ private onContextMenu;
90
+ private doExitCallback;
91
+ }
92
+ export type { InputMouseAction, InputKeyboardAction, InputCustomAction };
93
+ //# sourceMappingURL=Input.class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.class.d.ts","sourceRoot":"","sources":["../../src/controls/Input.class.ts"],"names":[],"mappings":"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"}