@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,23 @@
1
+ // Import Third-party Dependencies
2
+ import * as THREE from "three";
3
+ // Import Internal Dependencies
4
+ import { Asset } from "./Base.js";
5
+ // CONSTANTS
6
+ const kDefaultAssetType = "unknown";
7
+ export class AssetRegistry {
8
+ #extToType = new Map();
9
+ #typeToLoader = new Map();
10
+ loader(options, loader) {
11
+ this.#typeToLoader.set(options.type, loader);
12
+ for (const ext of options.extensions) {
13
+ this.#extToType.set(ext, options.type);
14
+ }
15
+ }
16
+ getTypeForExt(ext) {
17
+ return this.#extToType.get(ext) ?? kDefaultAssetType;
18
+ }
19
+ getLoaderForType(type) {
20
+ return this.#typeToLoader.get(type);
21
+ }
22
+ }
23
+ //# sourceMappingURL=Registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Registry.js","sourceRoot":"","sources":["../../../src/systems/asset/Registry.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,+BAA+B;AAC/B,OAAO,EACL,KAAK,EAEN,MAAM,WAAW,CAAC;AAEnB,YAAY;AACZ,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAapC,MAAM,OAAO,aAAa;IACxB,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,aAAa,GAAG,IAAI,GAAG,EAA+B,CAAC;IAEvD,MAAM,CACJ,OAA2B,EAC3B,MAA2B;QAE3B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,aAAa,CAAC,GAAW;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC;IACvD,CAAC;IAED,gBAAgB,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import { AssetManager, type AssetOnProgressCallback } from "./asset/Manager.ts";
2
+ export * from "./asset/Base.ts";
3
+ export type { AssetLoaderCallback, AssetLoaderContext, AssetLoaderOptions } from "./asset/Registry.ts";
4
+ export * from "./GameInstance.ts";
5
+ export * from "./rendering/index.ts";
6
+ export * from "./Scene.ts";
7
+ export type { AssetOnProgressCallback };
8
+ export declare const Assets: AssetManager;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/systems/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAE5B,cAAc,iBAAiB,CAAC;AAChC,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAE7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAE3B,YAAY,EACV,uBAAuB,EACxB,CAAC;AAEF,eAAO,MAAM,MAAM,cAAqB,CAAC"}
@@ -0,0 +1,8 @@
1
+ // Import Internal Dependencies
2
+ import { AssetManager } from "./asset/Manager.js";
3
+ export * from "./asset/Base.js";
4
+ export * from "./GameInstance.js";
5
+ export * from "./rendering/index.js";
6
+ export * from "./Scene.js";
7
+ export const Assets = new AssetManager();
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/systems/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EACL,YAAY,EAEb,MAAM,oBAAoB,CAAC;AAE5B,cAAc,iBAAiB,CAAC;AAOhC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAM3B,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC"}
@@ -0,0 +1,18 @@
1
+ import * as THREE from "three";
2
+ import type { Pass } from "three/addons/postprocessing/EffectComposer.js";
3
+ import type { RenderMode } from "./RenderStrategy.ts";
4
+ export type RenderComponent = THREE.PerspectiveCamera | THREE.OrthographicCamera;
5
+ export interface GameRenderer<T = any> {
6
+ readonly canvas: HTMLCanvasElement;
7
+ getSource(): T;
8
+ setRenderMode(mode: RenderMode): this;
9
+ setRatio(ratio: number | null): this;
10
+ setEffects(...effects: Pass[]): this;
11
+ addRenderComponent(component: RenderComponent): void;
12
+ removeRenderComponent(component: RenderComponent): void;
13
+ resize(): void;
14
+ draw(): void;
15
+ onDraw(callback: (source: T) => void): void;
16
+ clear(): void;
17
+ }
18
+ //# sourceMappingURL=GameRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GameRenderer.d.ts","sourceRoot":"","sources":["../../../src/systems/rendering/GameRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,+CAA+C,CAAC;AAG1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,kBAAkB,CAAC;AAEjF,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG;IACnC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEnC,SAAS,IAAI,CAAC,CAAC;IACf,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACrC,UAAU,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAErC,kBAAkB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IACrD,qBAAqB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IAExD,MAAM,IAAI,IAAI,CAAC;IACf,IAAI,IAAI,IAAI,CAAC;IACb,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5C,KAAK,IAAI,IAAI,CAAC;CACf"}
@@ -0,0 +1,3 @@
1
+ // Import Third-party Dependencies
2
+ import * as THREE from "three";
3
+ //# sourceMappingURL=GameRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GameRenderer.js","sourceRoot":"","sources":["../../../src/systems/rendering/GameRenderer.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC"}
@@ -0,0 +1,24 @@
1
+ import * as THREE from "three";
2
+ import type { EffectComposer, Pass } from "three/addons/postprocessing/EffectComposer.js";
3
+ import type { RenderComponent } from "./GameRenderer.ts";
4
+ export type RenderMode = "direct" | "composer";
5
+ export interface RenderStrategy {
6
+ render(scene: THREE.Scene, renderComponents: RenderComponent[]): void;
7
+ resize(width: number, height: number): void;
8
+ }
9
+ export declare class DirectRenderStrategy implements RenderStrategy {
10
+ #private;
11
+ constructor(renderer: THREE.WebGLRenderer);
12
+ render(scene: THREE.Scene, renderComponents: RenderComponent[]): void;
13
+ resize(width: number, height: number): void;
14
+ }
15
+ export declare class ComposerRenderStrategy implements RenderStrategy {
16
+ #private;
17
+ constructor(composer: EffectComposer);
18
+ render(_scene: THREE.Scene, _renderComponents: RenderComponent[]): void;
19
+ resize(width: number, height: number): void;
20
+ addEffect(pass: Pass): void;
21
+ removeEffect(pass: Pass): void;
22
+ getComposer(): EffectComposer;
23
+ }
24
+ //# sourceMappingURL=RenderStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderStrategy.d.ts","sourceRoot":"","sources":["../../../src/systems/rendering/RenderStrategy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,cAAc,EACd,IAAI,EACL,MAAM,+CAA+C,CAAC;AAGvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IACtE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED,qBAAa,oBAAqB,YAAW,cAAc;;gBAIvD,QAAQ,EAAE,KAAK,CAAC,aAAa;IAK/B,MAAM,CACJ,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,gBAAgB,EAAE,eAAe,EAAE,GAClC,IAAI;IAMP,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAG5C;AAED,qBAAa,sBAAuB,YAAW,cAAc;;gBAIzD,QAAQ,EAAE,cAAc;IAK1B,MAAM,CACJ,MAAM,EAAE,KAAK,CAAC,KAAK,EACnB,iBAAiB,EAAE,eAAe,EAAE,GACnC,IAAI;IAIP,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI3C,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI3B,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI9B,WAAW,IAAI,cAAc;CAG9B"}
@@ -0,0 +1,38 @@
1
+ // Import Third-party Dependencies
2
+ import * as THREE from "three";
3
+ export class DirectRenderStrategy {
4
+ #renderer;
5
+ constructor(renderer) {
6
+ this.#renderer = renderer;
7
+ }
8
+ render(scene, renderComponents) {
9
+ for (const renderComponent of renderComponents) {
10
+ this.#renderer.render(scene, renderComponent);
11
+ }
12
+ }
13
+ resize(width, height) {
14
+ this.#renderer.setSize(width, height, false);
15
+ }
16
+ }
17
+ export class ComposerRenderStrategy {
18
+ #composer;
19
+ constructor(composer) {
20
+ this.#composer = composer;
21
+ }
22
+ render(_scene, _renderComponents) {
23
+ this.#composer.render();
24
+ }
25
+ resize(width, height) {
26
+ this.#composer.setSize(width, height);
27
+ }
28
+ addEffect(pass) {
29
+ this.#composer.addPass(pass);
30
+ }
31
+ removeEffect(pass) {
32
+ this.#composer.removePass(pass);
33
+ }
34
+ getComposer() {
35
+ return this.#composer;
36
+ }
37
+ }
38
+ //# sourceMappingURL=RenderStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderStrategy.js","sourceRoot":"","sources":["../../../src/systems/rendering/RenderStrategy.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgB/B,MAAM,OAAO,oBAAoB;IAC/B,SAAS,CAAsB;IAE/B,YACE,QAA6B;QAE7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,MAAM,CACJ,KAAkB,EAClB,gBAAmC;QAEnC,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,MAAc;QAClC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;CACF;AAED,MAAM,OAAO,sBAAsB;IACjC,SAAS,CAAiB;IAE1B,YACE,QAAwB;QAExB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,MAAM,CACJ,MAAmB,EACnB,iBAAoC;QAEpC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,MAAc;QAClC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,SAAS,CAAC,IAAU;QAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,YAAY,CAAC,IAAU;QACrB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,48 @@
1
+ import * as THREE from "three";
2
+ import { type Pass } from "three/addons/postprocessing/EffectComposer.js";
3
+ import { EventEmitter } from "@posva/event-emitter";
4
+ import type { GameRenderer, RenderComponent } from "./GameRenderer.ts";
5
+ import type { Scene } from "../Scene.ts";
6
+ import { type RenderMode, type RenderStrategy } from "./RenderStrategy.ts";
7
+ export type ThreeRendererEvents = {
8
+ resize: [
9
+ {
10
+ width: number;
11
+ height: number;
12
+ }
13
+ ];
14
+ draw: [
15
+ {
16
+ source: THREE.WebGLRenderer;
17
+ }
18
+ ];
19
+ };
20
+ export interface ThreeRendererOptions {
21
+ /**
22
+ * @default "direct"
23
+ */
24
+ renderMode: RenderMode;
25
+ scene: Scene;
26
+ }
27
+ export declare class ThreeRenderer extends EventEmitter<ThreeRendererEvents> implements GameRenderer {
28
+ webGLRenderer: THREE.WebGLRenderer;
29
+ renderComponents: RenderComponent[];
30
+ renderStrategy: RenderStrategy;
31
+ ratio: number | null;
32
+ scene: Scene;
33
+ constructor(canvas: HTMLCanvasElement, options: ThreeRendererOptions);
34
+ get canvas(): HTMLCanvasElement;
35
+ getSource(): THREE.WebGLRenderer;
36
+ addRenderComponent(component: RenderComponent): void;
37
+ removeRenderComponent(component: RenderComponent): void;
38
+ setRenderMode(mode: RenderMode): this;
39
+ setEffects(...effects: Pass[]): this;
40
+ setRatio(ratio?: number | null): this;
41
+ resize: () => void;
42
+ draw(): void;
43
+ onDraw(callback: (event: {
44
+ source: THREE.WebGLRenderer;
45
+ }) => void): void;
46
+ clear(): void;
47
+ }
48
+ //# sourceMappingURL=ThreeRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeRenderer.d.ts","sourceRoot":"","sources":["../../../src/systems/rendering/ThreeRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAkB,KAAK,IAAI,EAAE,MAAM,+CAA+C,CAAC;AAE1F,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EAGpB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE;QACN;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;SAAE;KACnC,CAAC;IACF,IAAI,EAAE;QACJ;YAAE,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC;SAAE;KACjC,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;CACd;AAED,qBAAa,aAAc,SAAQ,YAAY,CAC7C,mBAAmB,CACnB,YAAW,YAAY;IACvB,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC;IACnC,gBAAgB,EAAE,eAAe,EAAE,CAAM;IACzC,cAAc,EAAE,cAAc,CAAC;IAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5B,KAAK,EAAE,KAAK,CAAC;gBAGX,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,oBAAoB;IAU/B,IAAI,MAAM,sBAET;IAED,SAAS;IAIT,kBAAkB,CAChB,SAAS,EAAE,eAAe,GACzB,IAAI;IAQP,qBAAqB,CACnB,SAAS,EAAE,eAAe,GACzB,IAAI;IAeP,aAAa,CACX,IAAI,EAAE,UAAU,GACf,IAAI;IAuBP,UAAU,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI;IAUpC,QAAQ,CACN,KAAK,GAAE,MAAM,GAAG,IAAW;IAa7B,MAAM,aA4CJ;IAEF,IAAI;IAWJ,MAAM,CACJ,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC;KAAE,KAAK,IAAI;IAK7D,KAAK;CAGN"}
@@ -0,0 +1,149 @@
1
+ // Import Third-party Dependencies
2
+ import * as THREE from "three";
3
+ import { EffectComposer } from "three/addons/postprocessing/EffectComposer.js";
4
+ import { RenderPass } from "three/addons/postprocessing/RenderPass.js";
5
+ import { EventEmitter } from "@posva/event-emitter";
6
+ import { DirectRenderStrategy, ComposerRenderStrategy } from "./RenderStrategy.js";
7
+ export class ThreeRenderer extends EventEmitter {
8
+ webGLRenderer;
9
+ renderComponents = [];
10
+ renderStrategy;
11
+ ratio = null;
12
+ scene;
13
+ constructor(canvas, options) {
14
+ super();
15
+ const { scene, renderMode = "direct" } = options;
16
+ this.scene = scene;
17
+ this.webGLRenderer = createWebGLRenderer(canvas);
18
+ this.setRenderMode(renderMode);
19
+ }
20
+ get canvas() {
21
+ return this.webGLRenderer.domElement;
22
+ }
23
+ getSource() {
24
+ return this.webGLRenderer;
25
+ }
26
+ addRenderComponent(component) {
27
+ this.renderComponents.push(component);
28
+ if (this.renderStrategy instanceof ComposerRenderStrategy) {
29
+ const renderPass = new RenderPass(this.scene.getSource(), component);
30
+ this.renderStrategy.addEffect(renderPass);
31
+ }
32
+ }
33
+ removeRenderComponent(component) {
34
+ const index = this.renderComponents.indexOf(component);
35
+ if (index !== -1) {
36
+ this.renderComponents.splice(index, 1);
37
+ }
38
+ if (this.renderStrategy instanceof ComposerRenderStrategy) {
39
+ const composer = this.renderStrategy.getComposer();
40
+ const renderPass = composer.passes.find((pass) => pass.camera === component);
41
+ this.renderStrategy.removeEffect(renderPass);
42
+ }
43
+ }
44
+ setRenderMode(mode) {
45
+ if (mode === "direct") {
46
+ this.renderStrategy = new DirectRenderStrategy(this.webGLRenderer);
47
+ }
48
+ else {
49
+ const composer = new EffectComposer(this.webGLRenderer);
50
+ const scene = this.scene.getSource();
51
+ for (const renderComponent of this.renderComponents) {
52
+ const renderPass = new RenderPass(scene, renderComponent);
53
+ composer.addPass(renderPass);
54
+ }
55
+ this.renderStrategy = new ComposerRenderStrategy(composer);
56
+ }
57
+ this.resize();
58
+ this.clear();
59
+ return this;
60
+ }
61
+ setEffects(...effects) {
62
+ if (this.renderStrategy instanceof ComposerRenderStrategy) {
63
+ for (const pass of effects) {
64
+ this.renderStrategy.addEffect(pass);
65
+ }
66
+ }
67
+ return this;
68
+ }
69
+ setRatio(ratio = null) {
70
+ this.ratio = ratio;
71
+ const styles = this.ratio ?
72
+ { margin: "0", flex: "1" } :
73
+ { margin: "auto", flex: "none" };
74
+ Object.assign(this.webGLRenderer.domElement.style, styles);
75
+ this.resize();
76
+ return this;
77
+ }
78
+ resize = () => {
79
+ let width;
80
+ let height;
81
+ if (this.ratio) {
82
+ if (document.body.clientWidth / document.body.clientHeight > this.ratio) {
83
+ height = document.body.clientHeight;
84
+ width = Math.min(document.body.clientWidth, height * this.ratio);
85
+ }
86
+ else {
87
+ width = document.body.clientWidth;
88
+ height = Math.min(document.body.clientHeight, width / this.ratio);
89
+ }
90
+ }
91
+ else {
92
+ const parent = this.webGLRenderer.domElement.parentElement;
93
+ if (parent) {
94
+ width = parent.clientWidth;
95
+ height = parent.clientHeight;
96
+ }
97
+ else {
98
+ width = this.webGLRenderer.domElement.clientWidth;
99
+ height = this.webGLRenderer.domElement.clientHeight;
100
+ }
101
+ }
102
+ if (this.webGLRenderer.domElement.width !== width ||
103
+ this.webGLRenderer.domElement.height !== height) {
104
+ this.renderStrategy.resize(width, height);
105
+ for (const renderComponent of this.renderComponents) {
106
+ if (renderComponent instanceof THREE.PerspectiveCamera) {
107
+ renderComponent.aspect = width / height;
108
+ }
109
+ if (renderComponent instanceof THREE.OrthographicCamera) {
110
+ renderComponent.left = width / -2;
111
+ renderComponent.right = width / 2;
112
+ renderComponent.top = height / 2;
113
+ renderComponent.bottom = height / -2;
114
+ }
115
+ renderComponent.updateProjectionMatrix();
116
+ }
117
+ this.emit("resize", { width, height });
118
+ }
119
+ };
120
+ draw() {
121
+ this.resize();
122
+ this.clear();
123
+ this.renderStrategy.render(this.scene.getSource(), this.renderComponents);
124
+ this.emit("draw", { source: this.webGLRenderer });
125
+ }
126
+ onDraw(callback) {
127
+ this.on("draw", callback);
128
+ }
129
+ clear() {
130
+ this.webGLRenderer.clear();
131
+ }
132
+ }
133
+ function createWebGLRenderer(canvas) {
134
+ const renderer = new THREE.WebGLRenderer({
135
+ canvas,
136
+ antialias: true,
137
+ alpha: true
138
+ });
139
+ renderer.setPixelRatio(window.devicePixelRatio);
140
+ renderer.shadowMap.enabled = true;
141
+ renderer.shadowMap.type = THREE.BasicShadowMap;
142
+ renderer.setSize(0, 0, false);
143
+ renderer.autoClear = false;
144
+ renderer.outputColorSpace = THREE.SRGBColorSpace;
145
+ renderer.toneMapping = THREE.NeutralToneMapping;
146
+ renderer.toneMappingExposure = 1.25;
147
+ return renderer;
148
+ }
149
+ //# sourceMappingURL=ThreeRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeRenderer.js","sourceRoot":"","sources":["../../../src/systems/rendering/ThreeRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from "./GameRenderer.ts";
2
+ export * from "./ThreeRenderer.ts";
3
+ export type { RenderMode } from "./RenderStrategy.ts";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/systems/rendering/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./GameRenderer.js";
2
+ export * from "./ThreeRenderer.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/systems/rendering/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import * as THREE from "three";
2
+ import { ViewHelper } from "three/addons/helpers/ViewHelper.js";
3
+ import type { Systems } from "../index.ts";
4
+ export declare function createViewHelper(camera: THREE.Camera, gameInstance: Systems.GameInstance): ViewHelper;
5
+ //# sourceMappingURL=createViewHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createViewHelper.d.ts","sourceRoot":"","sources":["../../src/utils/createViewHelper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAGhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,YAAY,EAAE,OAAO,CAAC,YAAY,GACjC,UAAU,CAUZ"}
@@ -0,0 +1,11 @@
1
+ // Import Third-party Dependencies
2
+ import * as THREE from "three";
3
+ import { ViewHelper } from "three/addons/helpers/ViewHelper.js";
4
+ export function createViewHelper(camera, gameInstance) {
5
+ const helper = new ViewHelper(camera, gameInstance.renderer.canvas);
6
+ gameInstance.renderer.onDraw(() => {
7
+ helper.render(gameInstance.renderer.getSource());
8
+ });
9
+ return helper;
10
+ }
11
+ //# sourceMappingURL=createViewHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createViewHelper.js","sourceRoot":"","sources":["../../src/utils/createViewHelper.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAKhE,MAAM,UAAU,gBAAgB,CAC9B,MAAoB,EACpB,YAAkC;IAElC,MAAM,MAAM,GAAG,IAAI,UAAU,CAC3B,MAAM,EACN,YAAY,CAAC,QAAQ,CAAC,MAAM,CAC7B,CAAC;IACF,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE;QAChC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * as pathUtils from "./path.ts";
2
+ export { loadJSON } from "./loadJSON.ts";
3
+ export { createViewHelper } from "./createViewHelper.ts";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * as pathUtils from "./path.js";
2
+ export { loadJSON } from "./loadJSON.js";
3
+ export { createViewHelper } from "./createViewHelper.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function loadJSON<T>(url: string): Promise<T>;
2
+ //# sourceMappingURL=loadJSON.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadJSON.d.ts","sourceRoot":"","sources":["../../src/utils/loadJSON.ts"],"names":[],"mappings":"AAAA,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,CAAC,CAAC,CAcZ"}
@@ -0,0 +1,15 @@
1
+ export async function loadJSON(url) {
2
+ const response = await fetch(url);
3
+ if (response.status !== 200) {
4
+ throw new Error(`Failed to load JSON from '${url}': ${response.statusText}`);
5
+ }
6
+ try {
7
+ return await response.json();
8
+ }
9
+ catch (error) {
10
+ throw new Error(`Failed to parse JSON from '${url}'`, {
11
+ cause: error
12
+ });
13
+ }
14
+ }
15
+ //# sourceMappingURL=loadJSON.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadJSON.js","sourceRoot":"","sources":["../../src/utils/loadJSON.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,GAAW;IAEX,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,KAAU,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,GAAG,EAAE;YACpD,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ export interface ParsedPath {
2
+ dir: string;
3
+ base: string;
4
+ name: string;
5
+ ext: string;
6
+ }
7
+ export declare function parse(nonNormalizedPath: string): ParsedPath;
8
+ export declare function extname(filename: string): string;
9
+ //# sourceMappingURL=path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,KAAK,CACnB,iBAAiB,EAAE,MAAM,GACxB,UAAU,CAaZ;AAED,wBAAgB,OAAO,CACrB,QAAQ,EAAE,MAAM,GACf,MAAM,CAMR"}
@@ -0,0 +1,18 @@
1
+ export function parse(nonNormalizedPath) {
2
+ const normalized = nonNormalizedPath.replace(/\\/g, "/");
3
+ const lastSlash = normalized.lastIndexOf("/");
4
+ const dir = lastSlash === -1 ? "" : normalized.slice(0, lastSlash + 1);
5
+ const base = lastSlash === -1 ? normalized : normalized.slice(lastSlash + 1);
6
+ const parsedExt = extname(base);
7
+ const name = parsedExt ?
8
+ base.slice(0, base.length - parsedExt.length) :
9
+ base;
10
+ return { dir, base, name, ext: parsedExt };
11
+ }
12
+ export function extname(filename) {
13
+ const lastDot = filename.lastIndexOf(".");
14
+ // Ignore les fichiers cachés comme « .gitignore »
15
+ const hasDot = lastDot > 0;
16
+ return hasDot ? filename.slice(lastDot) : "";
17
+ }
18
+ //# sourceMappingURL=path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,KAAK,CACnB,iBAAyB;IAEzB,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEzD,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAE7E,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC;IAEP,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,QAAgB;IAEhB,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1C,kDAAkD;IAClD,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;IAE3B,OAAO,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@jolly-pixel/engine",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "prepublish": "rimraf ./dist && tsc -b",
9
+ "build": "tsc",
10
+ "test-only": "node --test test/**/*.spec.ts",
11
+ "test": "c8 -r html npm run test-only"
12
+ },
13
+ "publishConfig": {
14
+ "registry": "https://registry.npmjs.org",
15
+ "access": "public"
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/JollyPixel/editor.git",
20
+ "directory": "packages/engine"
21
+ },
22
+ "keywords": [],
23
+ "files": [
24
+ "dist"
25
+ ],
26
+ "directories": {
27
+ "doc": "docs",
28
+ "test": "test"
29
+ },
30
+ "author": "GENTILHOMME Thomas <gentilhomme.thomas@gmail.com>",
31
+ "license": "MIT",
32
+ "dependencies": {
33
+ "@posva/event-emitter": "^1.0.3",
34
+ "picomatch": "^4.0.3",
35
+ "reflect-metadata": "^0.2.2",
36
+ "three": "^0.182.0"
37
+ },
38
+ "devDependencies": {
39
+ "@types/picomatch": "^4.0.2"
40
+ }
41
+ }