@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 @@
1
+ {"version":3,"file":"SpriteRenderer.class.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/sprite/SpriteRenderer.class.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC5B,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,IAAI,CAAC,EAAE;QACL,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;CACH;AAED,qBAAa,cAAe,SAAQ,cAAc;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI;;;MAGF;IAEF,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;IACvB,SAAS,EAAE,eAAe,CAAC;IAC3B,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;gBAGxB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,qBAAqB;IAgChC,iBAAiB,CACf,KAAK,EAAE,OAAO;IAMhB,eAAe,CACb,KAAK,EAAE,OAAO;IAMhB,UAAU,CACR,OAAO,EAAE,MAAM;IAOjB,KAAK;IAML,QAAQ,CACN,KAAK,EAAE,MAAM;IAYf,MAAM;IAOG,OAAO;CAOjB;AAED,YAAY,EAAE,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,76 @@
1
+ // Import Third-party Dependencies
2
+ import * as THREE from "three";
3
+ // Import Internal Dependencies
4
+ import { Actor, ActorComponent } from "../../../actor/index.js";
5
+ import { SpriteAnimation } from "./SpriteAnimation.class.js";
6
+ export class SpriteRenderer extends ActorComponent {
7
+ frameIndex;
8
+ tileHorizontal;
9
+ tileVertical;
10
+ flip = {
11
+ horizontal: false,
12
+ vertical: false
13
+ };
14
+ texture;
15
+ animation;
16
+ threeObject;
17
+ constructor(actor, options) {
18
+ super({
19
+ actor,
20
+ typeName: "SpriteRenderer"
21
+ });
22
+ const { texture, tileHorizontal, tileVertical, animations = {}, flip = {} } = options;
23
+ this.tileHorizontal = tileHorizontal;
24
+ this.tileVertical = tileVertical;
25
+ this.texture = new THREE.TextureLoader().load(texture);
26
+ this.texture.colorSpace = THREE.SRGBColorSpace;
27
+ this.texture.magFilter = THREE.NearestFilter;
28
+ this.texture.minFilter = THREE.NearestFilter;
29
+ this.setHorizontalFlip(flip.horizontal ?? false);
30
+ this.setVerticalFlip(flip.vertical ?? false);
31
+ this.animation = new SpriteAnimation(animations);
32
+ const material = new THREE.SpriteMaterial({
33
+ map: this.texture
34
+ });
35
+ this.threeObject = new THREE.Sprite(material);
36
+ }
37
+ setHorizontalFlip(value) {
38
+ this.flip.horizontal = value;
39
+ this.texture.repeat.x = (value ? -1 : 1) / this.tileHorizontal;
40
+ }
41
+ setVerticalFlip(value) {
42
+ this.flip.vertical = value;
43
+ this.texture.repeat.y = (value ? -1 : 1) / this.tileVertical;
44
+ }
45
+ setOpacity(opacity) {
46
+ this.threeObject.material.transparent = true;
47
+ this.threeObject.material.opacity = opacity;
48
+ this.threeObject.material.needsUpdate = true;
49
+ }
50
+ start() {
51
+ this.actor.threeObject.add(this.threeObject);
52
+ this.threeObject.updateMatrixWorld(false);
53
+ this.setFrame(0);
54
+ }
55
+ setFrame(index) {
56
+ const tileX = index % this.tileHorizontal;
57
+ const tileY = this.tileVertical - Math.floor(index / this.tileHorizontal) - 1;
58
+ const x = (this.flip.horizontal ? tileX + 1 : tileX) / this.tileHorizontal;
59
+ const y = (this.flip.vertical ? tileY + 1 : tileY) / this.tileVertical;
60
+ this.frameIndex = index;
61
+ this.texture.offset.set(x, y);
62
+ }
63
+ update() {
64
+ const frame = this.animation.update();
65
+ if (frame) {
66
+ this.setFrame(frame);
67
+ }
68
+ }
69
+ destroy() {
70
+ this.actor.threeObject.remove(this.threeObject);
71
+ this.texture.dispose();
72
+ this.threeObject.clear();
73
+ super.destroy();
74
+ }
75
+ }
76
+ //# sourceMappingURL=SpriteRenderer.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpriteRenderer.class.js","sourceRoot":"","sources":["../../../../src/components/renderers/sprite/SpriteRenderer.class.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import * as THREE from "three";
2
+ import { type TextGeometryParameters } from "three/addons/geometries/TextGeometry.js";
3
+ import { type Font } from "three/examples/jsm/loaders/FontLoader.js";
4
+ export type Text3DGeometryParameters = Omit<TextGeometryParameters, "font"> & {
5
+ center?: boolean;
6
+ };
7
+ export interface Text3DOptions {
8
+ font?: Font;
9
+ textGeometryOptions?: Text3DGeometryParameters;
10
+ material?: THREE.Material;
11
+ }
12
+ export declare class Text3D {
13
+ #private;
14
+ material: THREE.Material;
15
+ constructor(options: Text3DOptions);
16
+ get mesh(): THREE.Mesh | null;
17
+ getBoundingBox(): THREE.Box3 | null;
18
+ setValue(text: string): this;
19
+ getValue(): string;
20
+ setGeometryOptions(options: Partial<Omit<TextGeometryParameters, "font">>): this;
21
+ setMaterial(material: THREE.Material): this;
22
+ setWireframe(wireframe?: boolean): this;
23
+ setFont(font: Font): this;
24
+ dispose(): void;
25
+ }
26
+ //# sourceMappingURL=Text3D.class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Text3D.class.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/text/Text3D.class.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,KAAK,IAAI,EACV,MAAM,0CAA0C,CAAC;AAQlD,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,GAAG;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,mBAAmB,CAAC,EAAE,wBAAwB,CAAC;IAC/C,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;CAC3B;AAED,qBAAa,MAAM;;IAQjB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;gBAGvB,OAAO,EAAE,aAAa;IAexB,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAM5B;IAED,cAAc,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI;IAInC,QAAQ,CACN,IAAI,EAAE,MAAM,GACX,IAAI;IAUP,QAAQ,IAAI,MAAM;IAIlB,kBAAkB,CAChB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC,GACrD,IAAI;IAOP,WAAW,CACT,QAAQ,EAAE,KAAK,CAAC,QAAQ,GACvB,IAAI;IASP,YAAY,CACV,SAAS,GAAE,OAAc,GACxB,IAAI;IAQP,OAAO,CACL,IAAI,EAAE,IAAI,GACT,IAAI;IASP,OAAO,IAAI,IAAI;CAuChB"}
@@ -0,0 +1,104 @@
1
+ // Import Third-party Dependencies
2
+ import * as THREE from "three";
3
+ import { TextGeometry } from "three/addons/geometries/TextGeometry.js";
4
+ import {} from "three/examples/jsm/loaders/FontLoader.js";
5
+ // CONSTANTS
6
+ const kDefaultGeometryOptions = {
7
+ size: 1,
8
+ depth: 1
9
+ };
10
+ export class Text3D {
11
+ #font;
12
+ #text = "";
13
+ #geometryOptions;
14
+ #mesh = null;
15
+ #geometry = null;
16
+ #needsUpdate = true;
17
+ material;
18
+ constructor(options) {
19
+ const { font, textGeometryOptions = kDefaultGeometryOptions, material = new THREE.MeshBasicMaterial() } = options;
20
+ if (font) {
21
+ this.setFont(font);
22
+ }
23
+ this.#geometryOptions = { ...textGeometryOptions };
24
+ this.material = material;
25
+ }
26
+ get mesh() {
27
+ if (this.#needsUpdate) {
28
+ this.#updateMesh();
29
+ }
30
+ return this.#mesh;
31
+ }
32
+ getBoundingBox() {
33
+ return this.#geometry?.boundingBox?.clone() ?? null;
34
+ }
35
+ setValue(text) {
36
+ const trimmedText = text.trim();
37
+ if (this.#text !== trimmedText) {
38
+ this.#text = trimmedText;
39
+ this.#needsUpdate = true;
40
+ }
41
+ return this;
42
+ }
43
+ getValue() {
44
+ return this.#text;
45
+ }
46
+ setGeometryOptions(options) {
47
+ this.#geometryOptions = { ...this.#geometryOptions, ...options };
48
+ this.#needsUpdate = true;
49
+ return this;
50
+ }
51
+ setMaterial(material) {
52
+ this.material = material;
53
+ if (this.#mesh) {
54
+ this.#mesh.material = material;
55
+ }
56
+ return this;
57
+ }
58
+ setWireframe(wireframe = true) {
59
+ if (this.material instanceof THREE.MeshBasicMaterial) {
60
+ this.material.wireframe = wireframe;
61
+ }
62
+ return this;
63
+ }
64
+ setFont(font) {
65
+ if (this.#font !== font) {
66
+ this.#font = font;
67
+ this.#needsUpdate = true;
68
+ }
69
+ return this;
70
+ }
71
+ dispose() {
72
+ if (this.#geometry) {
73
+ this.#geometry.dispose();
74
+ this.#geometry = null;
75
+ }
76
+ if (this.#mesh) {
77
+ this.#mesh.removeFromParent();
78
+ this.#mesh = null;
79
+ }
80
+ this.#needsUpdate = true;
81
+ }
82
+ #updateMesh() {
83
+ if (this.#geometry) {
84
+ this.#geometry.dispose();
85
+ }
86
+ const { center = false, ...othersGeometryOptions } = this.#geometryOptions;
87
+ this.#geometry = new TextGeometry(this.#text, {
88
+ font: this.#font,
89
+ ...othersGeometryOptions
90
+ });
91
+ this.#geometry.computeBoundingBox();
92
+ if (center) {
93
+ this.#geometry.center();
94
+ }
95
+ if (this.#mesh) {
96
+ this.#mesh.geometry = this.#geometry;
97
+ }
98
+ else {
99
+ this.#mesh = new THREE.Mesh(this.#geometry, this.material);
100
+ }
101
+ this.#needsUpdate = false;
102
+ }
103
+ }
104
+ //# sourceMappingURL=Text3D.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Text3D.class.js","sourceRoot":"","sources":["../../../../src/components/renderers/text/Text3D.class.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Actor, ActorComponent } from "../../../actor/index.ts";
2
+ import { Text3D, type Text3DOptions } from "./Text3D.class.ts";
3
+ export interface TextRendererOptions extends Omit<Text3DOptions, "font"> {
4
+ path: string;
5
+ text?: string;
6
+ }
7
+ export declare class TextRenderer extends ActorComponent {
8
+ #private;
9
+ text: Text3D;
10
+ constructor(actor: Actor, options: TextRendererOptions);
11
+ awake(): void;
12
+ destroy(): void;
13
+ updateMesh(): void;
14
+ }
15
+ //# sourceMappingURL=TextRenderer.class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextRenderer.class.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/text/TextRenderer.class.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,MAAM,EACN,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAG3B,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,YAAa,SAAQ,cAAc;;IAG9C,IAAI,EAAE,MAAM,CAAC;gBAGX,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,mBAAmB;IAwB9B,KAAK,IAAI,IAAI;IAOJ,OAAO,IAAI,IAAI;IAIxB,UAAU,IAAI,IAAI;CAUnB"}
@@ -0,0 +1,47 @@
1
+ // Import Third-party Dependencies
2
+ import * as THREE from "three";
3
+ // Import Internal Dependencies
4
+ import * as Systems from "../../../systems/index.js";
5
+ import { Actor, ActorComponent } from "../../../actor/index.js";
6
+ import { Text3D } from "./Text3D.class.js";
7
+ import { font } from "./loader.js";
8
+ export class TextRenderer extends ActorComponent {
9
+ #asset;
10
+ text;
11
+ constructor(actor, options) {
12
+ super({
13
+ actor,
14
+ typeName: "TextRenderer"
15
+ });
16
+ const { path, text, textGeometryOptions, material = new THREE.MeshBasicMaterial() } = options;
17
+ this.#asset = font(path);
18
+ this.text = new Text3D({
19
+ material,
20
+ textGeometryOptions
21
+ });
22
+ if (text) {
23
+ this.text.setValue(text);
24
+ }
25
+ }
26
+ awake() {
27
+ const font = this.#asset.get();
28
+ this.text.setFont(font);
29
+ this.updateMesh();
30
+ }
31
+ destroy() {
32
+ this.text.dispose();
33
+ }
34
+ updateMesh() {
35
+ for (const child of this.actor.threeObject.children) {
36
+ isMeshWithGeometry(child) && this.actor.threeObject.remove(child);
37
+ }
38
+ const mesh = this.text.mesh;
39
+ if (mesh) {
40
+ this.actor.threeObject.add(mesh);
41
+ }
42
+ }
43
+ }
44
+ function isMeshWithGeometry(object) {
45
+ return object instanceof THREE.Mesh && object.geometry instanceof THREE.BufferGeometry;
46
+ }
47
+ //# sourceMappingURL=TextRenderer.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextRenderer.class.js","sourceRoot":"","sources":["../../../../src/components/renderers/text/TextRenderer.class.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,+BAA+B;AAC/B,OAAO,KAAK,OAAO,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,MAAM,EAEP,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAa,MAAM,aAAa,CAAC;AAO9C,MAAM,OAAO,YAAa,SAAQ,cAAc;IAC9C,MAAM,CAA0B;IAEhC,IAAI,CAAS;IAEb,YACE,KAAY,EACZ,OAA4B;QAE5B,KAAK,CAAC;YACJ,KAAK;YACL,QAAQ,EAAE,cAAc;SACzB,CAAC,CAAC;QAEH,MAAM,EACJ,IAAI,EACJ,IAAI,EACJ,mBAAmB,EACnB,QAAQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,EAAE,EACzC,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC;YACrB,QAAQ;YACR,mBAAmB;SACpB,CAAC,CAAC;QACH,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,KAAK;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAE/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEQ,OAAO;QACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;IAED,UAAU;QACR,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YACpD,kBAAkB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF;AAED,SAAS,kBAAkB,CACzB,MAAsB;IAEtB,OAAO,MAAM,YAAY,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,YAAY,KAAK,CAAC,cAAc,CAAC;AACzF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type Font } from "three/examples/jsm/loaders/FontLoader.js";
2
+ export declare const font: (assetOrPath: import("../../../systems/index.ts").Asset | string) => import("../../../systems/index.ts").LazyAsset<Font>;
3
+ export type { Font };
4
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/text/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,IAAI,EACV,MAAM,0CAA0C,CAAC;AAoBlD,eAAO,MAAM,IAAI,0HAA0B,CAAC;AAE5C,YAAY,EAAE,IAAI,EAAE,CAAC"}
@@ -0,0 +1,14 @@
1
+ // Import Third-party Dependencies
2
+ import { FontLoader } from "three/examples/jsm/loaders/FontLoader.js";
3
+ // Import Internal Dependencies
4
+ import { Assets } from "../../../systems/index.js";
5
+ Assets.registry.loader({
6
+ extensions: [".typeface.json"],
7
+ type: "font"
8
+ }, (asset, context) => {
9
+ const fontLoader = new FontLoader(context.manager)
10
+ .setPath(asset.path);
11
+ return fontLoader.loadAsync(asset.name + asset.ext);
12
+ });
13
+ export const font = Assets.lazyLoad();
14
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../../src/components/renderers/text/loader.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,EACL,UAAU,EAEX,MAAM,0CAA0C,CAAC;AAElD,+BAA+B;AAC/B,OAAO,EACL,MAAM,EACP,MAAM,2BAA2B,CAAC;AAEnC,MAAM,CAAC,QAAQ,CAAC,MAAM,CACpB;IACE,UAAU,EAAE,CAAC,gBAAgB,CAAC;IAC9B,IAAI,EAAE,MAAM;CACb,EACD,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACjB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;SAC/C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEvB,OAAO,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAQ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import * as THREE from "three";
2
+ import type { TiledMap, TiledTileLayer } from "./types.ts";
3
+ export declare class TileLayer {
4
+ static fromTileMap(map: TiledMap): Generator<TileLayer, void, unknown>;
5
+ layer: TiledTileLayer;
6
+ zIndex: number;
7
+ constructor(layer: TiledTileLayer, zIndex?: number);
8
+ [Symbol.iterator](): Generator<{
9
+ tileId: number;
10
+ position: THREE.Vector3;
11
+ }, void, unknown>;
12
+ }
13
+ //# sourceMappingURL=TileLayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TileLayer.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/tiled/TileLayer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,qBAAa,SAAS;IACpB,MAAM,CAAE,WAAW,CACjB,GAAG,EAAE,QAAQ;IAWf,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;gBAGb,KAAK,EAAE,cAAc,EACrB,MAAM,SAAI;IAMV,CAAC,MAAM,CAAC,QAAQ,CAAC;;;;CAepB"}
@@ -0,0 +1,34 @@
1
+ // Import Third-party Dependencies
2
+ import * as THREE from "three";
3
+ export class TileLayer {
4
+ static *fromTileMap(map) {
5
+ let zId = 0;
6
+ for (const layer of map.layers) {
7
+ if (layer.type === "tilelayer") {
8
+ yield new TileLayer(layer, zId);
9
+ zId++;
10
+ }
11
+ }
12
+ }
13
+ layer;
14
+ zIndex;
15
+ constructor(layer, zIndex = 0) {
16
+ this.layer = layer;
17
+ this.zIndex = zIndex;
18
+ }
19
+ *[Symbol.iterator]() {
20
+ for (let x = 0; x < this.layer.width; x++) {
21
+ for (let y = 0; y < this.layer.height; y++) {
22
+ const tileIndex = (y * this.layer.width) + x;
23
+ const tileId = Number(this.layer.data[tileIndex]);
24
+ if (tileId !== 0) {
25
+ yield {
26
+ tileId,
27
+ position: new THREE.Vector3(x, y, this.zIndex)
28
+ };
29
+ }
30
+ }
31
+ }
32
+ }
33
+ }
34
+ //# sourceMappingURL=TileLayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TileLayer.js","sourceRoot":"","sources":["../../../../src/components/renderers/tiled/TileLayer.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,MAAM,OAAO,SAAS;IACpB,MAAM,CAAA,CAAE,WAAW,CACjB,GAAa;QAEb,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC/B,MAAM,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAChC,GAAG,EAAE,CAAC;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAiB;IACtB,MAAM,CAAS;IAEf,YACE,KAAqB,EACrB,MAAM,GAAG,CAAC;QAEV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,CAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAElD,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjB,MAAM;wBACJ,MAAM;wBACN,QAAQ,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;qBAC/C,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import { Actor, ActorComponent } from "../../../actor/index.ts";
2
+ export type TiledMapOrientation = "top-down" | "platformer";
3
+ export interface TiledMapRendererOptions {
4
+ assetPath: string;
5
+ /**
6
+ * @default "platformer"
7
+ */
8
+ orientation?: TiledMapOrientation;
9
+ }
10
+ export declare class TiledMapRenderer extends ActorComponent {
11
+ #private;
12
+ constructor(actor: Actor, options: TiledMapRendererOptions);
13
+ awake(): void;
14
+ }
15
+ //# sourceMappingURL=TileMapRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TileMapRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/tiled/TileMapRenderer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAMhE,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,YAAY,CAAC;AAE5D,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,CAAC,EAAE,mBAAmB,CAAC;CACnC;AAED,qBAAa,gBAAiB,SAAQ,cAAc;;gBAKhD,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,uBAAuB;IAgBlC,KAAK;CAwBN"}
@@ -0,0 +1,59 @@
1
+ // Import Third-party Dependencies
2
+ import * as THREE from "three";
3
+ // Import Internal Dependencies
4
+ import * as Systems from "../../../systems/index.js";
5
+ import { Actor, ActorComponent } from "../../../actor/index.js";
6
+ import { TileSet } from "./TileSet.js";
7
+ import { TileObject } from "./TileObject.js";
8
+ import { TileLayer } from "./TileLayer.js";
9
+ import { tiledMap } from "./loader.js";
10
+ export class TiledMapRenderer extends ActorComponent {
11
+ #map;
12
+ #orientation;
13
+ constructor(actor, options) {
14
+ const { assetPath, orientation = "platformer" } = options;
15
+ super({
16
+ actor,
17
+ typeName: "TiledMapRenderer"
18
+ });
19
+ this.#map = tiledMap(assetPath);
20
+ this.#orientation = orientation;
21
+ }
22
+ awake() {
23
+ const { tilemap, tilesets: rawTileSets } = this.#map.get();
24
+ const tilesets = [...rawTileSets.values()].map(({ tileset, texture }) => new TileSet(tileset, texture));
25
+ for (const layer of TileLayer.fromTileMap(tilemap)) {
26
+ for (const { tileId, position } of layer) {
27
+ const texture = TileSet.find(tilesets, tileId)?.getTileTexture(tileId) ?? null;
28
+ const cube = new TileMapCube(texture);
29
+ cube.position.set(position.x, position.y, position.z);
30
+ this.actor.threeObject.add(cube);
31
+ }
32
+ }
33
+ for (const layer of TileObject.fromTileMap(tilemap)) {
34
+ layer.createActors(this.actor);
35
+ }
36
+ if (this.#orientation === "top-down") {
37
+ this.actor.threeObject.rotateX(-Math.PI / 2);
38
+ }
39
+ }
40
+ }
41
+ class TileMapCube extends THREE.Mesh {
42
+ static SIZE = 1;
43
+ constructor(texture) {
44
+ super();
45
+ if (texture) {
46
+ this.material = new THREE.MeshPhongMaterial({
47
+ map: texture
48
+ });
49
+ this.material.transparent = true;
50
+ }
51
+ else {
52
+ this.material = new THREE.MeshBasicMaterial({
53
+ color: new THREE.Color(0xffffff)
54
+ });
55
+ }
56
+ this.geometry = new THREE.BoxGeometry(TileMapCube.SIZE, TileMapCube.SIZE, TileMapCube.SIZE);
57
+ }
58
+ }
59
+ //# sourceMappingURL=TileMapRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TileMapRenderer.js","sourceRoot":"","sources":["../../../../src/components/renderers/tiled/TileMapRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Actor } from "../../../actor/Actor.ts";
2
+ import type { TiledMap, TiledObjectLayer } from "./types.ts";
3
+ export interface TileObjectOptions {
4
+ zIndex: number;
5
+ width: number;
6
+ height: number;
7
+ }
8
+ export declare class TileObject {
9
+ #private;
10
+ static fromTileMap(map: TiledMap): Generator<TileObject, void, unknown>;
11
+ layer: TiledObjectLayer;
12
+ zIndex: number;
13
+ width: number;
14
+ height: number;
15
+ constructor(layer: TiledObjectLayer, options: TileObjectOptions);
16
+ createActors(parent: Actor): void;
17
+ }
18
+ //# sourceMappingURL=TileObject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TileObject.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/tiled/TileObject.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,KAAK,EACV,QAAQ,EAER,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,UAAU;;IACrB,MAAM,CAAE,WAAW,CACjB,GAAG,EAAE,QAAQ;IAaf,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;gBAGb,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,iBAAiB;IAQ5B,YAAY,CACV,MAAM,EAAE,KAAK;CAiDhB"}
@@ -0,0 +1,59 @@
1
+ // Import Third-party Dependencies
2
+ import * as THREE from "three";
3
+ // Import Internal Dependencies
4
+ import { Actor } from "../../../actor/Actor.js";
5
+ export class TileObject {
6
+ static *fromTileMap(map) {
7
+ for (const layer of map.layers) {
8
+ if (layer.type === "objectgroup") {
9
+ yield new TileObject(layer, {
10
+ zIndex: 1,
11
+ width: map.tilewidth,
12
+ height: map.tileheight
13
+ });
14
+ }
15
+ }
16
+ }
17
+ layer;
18
+ zIndex;
19
+ width;
20
+ height;
21
+ constructor(layer, options) {
22
+ this.layer = layer;
23
+ this.zIndex = options.zIndex;
24
+ this.width = options.width;
25
+ this.height = options.height;
26
+ }
27
+ createActors(parent) {
28
+ for (const object of this.layer.objects) {
29
+ const childrenActor = new Actor(parent.gameInstance, {
30
+ name: object.name,
31
+ parent
32
+ });
33
+ childrenActor.threeObject.position.set(object.x / this.width, object.y / this.height, this.zIndex);
34
+ if (object.rotation !== 0) {
35
+ const rotationRadians = (object.rotation * Math.PI) / 180;
36
+ childrenActor.threeObject.rotation.z = -rotationRadians;
37
+ }
38
+ if (object.width > 0 && object.height > 0) {
39
+ const visualBox = this.#createObjectVisualization(object);
40
+ childrenActor.threeObject.add(visualBox);
41
+ }
42
+ }
43
+ }
44
+ #createObjectVisualization(object) {
45
+ const width = object.width / this.width;
46
+ const height = object.height / this.height;
47
+ const geometry = new THREE.BoxGeometry(width, height, 0.1);
48
+ const material = new THREE.MeshBasicMaterial({
49
+ color: 0x00ff00,
50
+ transparent: true,
51
+ opacity: 1,
52
+ wireframe: true
53
+ });
54
+ const box = new THREE.Mesh(geometry, material);
55
+ box.position.set(width / 2, height / 2, 0);
56
+ return box;
57
+ }
58
+ }
59
+ //# sourceMappingURL=TileObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TileObject.js","sourceRoot":"","sources":["../../../../src/components/renderers/tiled/TileObject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import * as THREE from "three";
2
+ import type { TiledMapTileset } from "./types.ts";
3
+ export interface TileProps {
4
+ coords: THREE.Vector2Like;
5
+ uv: {
6
+ size: THREE.Vector2Like;
7
+ offset: THREE.Vector2Like;
8
+ };
9
+ flippedX: boolean;
10
+ flippedY: boolean;
11
+ flippedAD: boolean;
12
+ }
13
+ export declare class TileSet {
14
+ #private;
15
+ static find(tilesets: TileSet[], tileId: number): TileSet | null;
16
+ constructor(tiledset: TiledMapTileset, texture: THREE.Texture<HTMLImageElement>);
17
+ get firstgid(): number;
18
+ get lastgid(): number;
19
+ get tilewidth(): number;
20
+ get tileheight(): number;
21
+ containsGid(gid: number): boolean;
22
+ containsLocalId(index: number): boolean;
23
+ getTileLocalId(gid: number): number;
24
+ getTileProperties(gid: number): TileProps | null;
25
+ getTileTexture(gid: number): THREE.Texture | null;
26
+ }
27
+ //# sourceMappingURL=TileSet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TileSet.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/tiled/TileSet.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAWlD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC;IAC1B,EAAE,EAAE;QACF,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC;QACxB,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC;KAC3B,CAAC;IACF,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,OAAO;;IAClB,MAAM,CAAC,IAAI,CACT,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,GAAG,IAAI;gBAUf,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;IAM1C,IAAI,QAAQ,WAEX;IAED,IAAI,OAAO,WAEV;IAED,IAAI,SAAS,WAEZ;IAED,IAAI,UAAU,WAEb;IAED,WAAW,CACT,GAAG,EAAE,MAAM,GACV,OAAO;IAIV,eAAe,CACb,KAAK,EAAE,MAAM;IAKf,cAAc,CACZ,GAAG,EAAE,MAAM;IAKb,iBAAiB,CACf,GAAG,EAAE,MAAM,GACV,SAAS,GAAG,IAAI;IAgCnB,cAAc,CACZ,GAAG,EAAE,MAAM,GACV,KAAK,CAAC,OAAO,GAAG,IAAI;CAoBxB"}