@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,116 @@
1
+ // Import Third-party Dependencies
2
+ import * as THREE from "three";
3
+ // CONSTANTS
4
+ const kFlippedAntiDiagonal = 0x20000000;
5
+ const kFlippedVertical = 0x40000000;
6
+ const kFlippedHorizontal = 0x80000000;
7
+ const kTiledFlippedFlags = kFlippedHorizontal |
8
+ kFlippedVertical |
9
+ kFlippedAntiDiagonal;
10
+ export class TileSet {
11
+ static find(tilesets, tileId) {
12
+ return tilesets
13
+ .sort((a, b) => a.firstgid - b.firstgid)
14
+ .find((tileSet) => tileSet.containsGid(tileId)) ?? null;
15
+ }
16
+ #metadata;
17
+ #texture;
18
+ constructor(tiledset, texture) {
19
+ this.#metadata = tiledset;
20
+ this.#texture = texture;
21
+ }
22
+ get firstgid() {
23
+ return this.#metadata.firstgid;
24
+ }
25
+ get lastgid() {
26
+ return this.#metadata.firstgid + this.#metadata.tilecount - 1;
27
+ }
28
+ get tilewidth() {
29
+ return this.#metadata.tilewidth;
30
+ }
31
+ get tileheight() {
32
+ return this.#metadata.tileheight;
33
+ }
34
+ containsGid(gid) {
35
+ return this.containsLocalId(this.getTileLocalId(gid));
36
+ }
37
+ containsLocalId(index) {
38
+ return index >= 0 && index < this.#metadata.tilecount;
39
+ }
40
+ getTileLocalId(gid) {
41
+ return (gid & ~kTiledFlippedFlags) - this.#metadata.firstgid;
42
+ }
43
+ getTileProperties(gid) {
44
+ const localId = this.getTileLocalId(gid);
45
+ if (!this.containsLocalId(localId)) {
46
+ return null;
47
+ }
48
+ const coords = {
49
+ x: localId % this.#metadata.columns,
50
+ y: Math.floor(localId / this.#metadata.columns)
51
+ };
52
+ const uvX = (coords.x * this.tilewidth) / this.#texture.image.width;
53
+ const uvY = 1.0 - (((coords.y + 1) * this.tileheight) / this.#texture.image.height);
54
+ return {
55
+ coords,
56
+ uv: {
57
+ size: {
58
+ x: this.tilewidth / this.#texture.image.width,
59
+ y: this.tileheight / this.#texture.image.height
60
+ },
61
+ offset: {
62
+ x: uvX,
63
+ y: uvY
64
+ }
65
+ },
66
+ flippedX: (gid & kFlippedHorizontal) !== 0,
67
+ flippedY: (gid & kFlippedVertical) !== 0,
68
+ flippedAD: (gid & kFlippedAntiDiagonal) !== 0
69
+ };
70
+ }
71
+ getTileTexture(gid) {
72
+ const properties = this.getTileProperties(gid);
73
+ if (!properties) {
74
+ return null;
75
+ }
76
+ const texture = this.#texture.clone();
77
+ texture.needsUpdate = true;
78
+ texture.colorSpace = THREE.SRGBColorSpace;
79
+ texture.wrapS = THREE.ClampToEdgeWrapping;
80
+ texture.wrapT = THREE.ClampToEdgeWrapping;
81
+ applyTextureTransformations(texture, properties);
82
+ texture.magFilter = THREE.NearestFilter;
83
+ texture.minFilter = THREE.NearestFilter;
84
+ texture.generateMipmaps = false;
85
+ return texture;
86
+ }
87
+ }
88
+ function applyTextureTransformations(texture, tileProperties) {
89
+ let { x: offsetX, y: offsetY } = tileProperties.uv.offset;
90
+ let { x: repeatX, y: repeatY } = tileProperties.uv.size;
91
+ // Gère le flip horizontal
92
+ if (tileProperties.flippedX) {
93
+ repeatX = -repeatX;
94
+ offsetX += tileProperties.uv.size.x;
95
+ }
96
+ // Gère le flip vertical
97
+ if (tileProperties.flippedY) {
98
+ repeatY = -repeatY;
99
+ offsetY += tileProperties.uv.size.y;
100
+ }
101
+ // Gère le flip anti-diagonal (rotation 90° + flip horizontal)
102
+ if (tileProperties.flippedAD) {
103
+ // Pour l'anti-diagonal, on doit échanger les axes et ajuster
104
+ const tempRepeat = repeatX;
105
+ repeatX = repeatY;
106
+ repeatY = tempRepeat;
107
+ const tempOffset = offsetX;
108
+ offsetX = offsetY;
109
+ offsetY = tempOffset;
110
+ // Ajustement supplémentaire pour l'anti-diagonal
111
+ offsetX += tileProperties.uv.size.y;
112
+ }
113
+ texture.offset.set(offsetX, offsetY);
114
+ texture.repeat.set(repeatX, repeatY);
115
+ }
116
+ //# sourceMappingURL=TileSet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TileSet.js","sourceRoot":"","sources":["../../../../src/components/renderers/tiled/TileSet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import * as THREE from "three";
2
+ import { type Asset } from "../../../systems/index.ts";
3
+ import type { TiledMap, TiledMapTileset } from "./types.ts";
4
+ export interface TiledSetAsset {
5
+ tileset: TiledMapTileset;
6
+ texture: THREE.Texture<HTMLImageElement>;
7
+ }
8
+ export interface TiledMapAsset {
9
+ tilemap: TiledMap;
10
+ tilesets: Map<string, TiledSetAsset>;
11
+ }
12
+ export declare const tiledMap: (assetOrPath: Asset | string) => import("../../../systems/index.ts").LazyAsset<TiledMapAsset>;
13
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/tiled/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAEL,KAAK,KAAK,EAEX,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,QAAQ,CAAC;IAClB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACtC;AAgBD,eAAO,MAAM,QAAQ,+FAAmC,CAAC"}
@@ -0,0 +1,39 @@
1
+ // Import Third-party Dependencies
2
+ import * as THREE from "three";
3
+ // Import Internal Dependencies
4
+ import { Assets } from "../../../systems/index.js";
5
+ import { loadJSON, pathUtils } from "../../../utils/index.js";
6
+ Assets.registry.loader({
7
+ extensions: [".tmj"],
8
+ type: "tilemap"
9
+ }, (asset, context) => {
10
+ switch (asset.ext) {
11
+ case ".tmj":
12
+ return tmjLoader(asset, context);
13
+ default:
14
+ throw new Error(`Unsupported model type: ${asset.ext}`);
15
+ }
16
+ });
17
+ export const tiledMap = Assets.lazyLoad();
18
+ async function tmjLoader(asset, context) {
19
+ const tilemap = await loadJSON(asset.path + asset.basename);
20
+ const textureLoader = new THREE.TextureLoader(context.manager);
21
+ const tilesets = new Map();
22
+ for (const tileset of tilemap.tilesets) {
23
+ if (tileset.source) {
24
+ const fileName = pathUtils.parse(tileset.source).name;
25
+ const texture = await textureLoader.loadAsync(asset.path + fileName + ".png");
26
+ texture.magFilter = THREE.NearestFilter;
27
+ texture.minFilter = THREE.NearestFilter;
28
+ tilesets.set(tileset.name ?? fileName, {
29
+ tileset,
30
+ texture
31
+ });
32
+ }
33
+ }
34
+ return {
35
+ tilemap,
36
+ tilesets
37
+ };
38
+ }
39
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../../src/components/renderers/tiled/loader.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,+BAA+B;AAC/B,OAAO,EACL,MAAM,EAGP,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAgB9D,MAAM,CAAC,QAAQ,CAAC,MAAM,CACpB;IACE,UAAU,EAAE,CAAC,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS;CAChB,EACD,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACjB,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACnC;YACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC,CACF,CAAC;AACF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAiB,CAAC;AAEzD,KAAK,UAAU,SAAS,CACtB,KAAY,EACZ,OAA2B;IAE3B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAW,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEtE,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAElD,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YACtD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC;YAC9E,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC;YACxC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC;YAExC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,EAAE;gBACrC,OAAO;gBACP,OAAO;aACR,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO;QACP,QAAQ;KACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,325 @@
1
+ /**
2
+ * TypeScript interfaces for the Tiled JSON Map Format.
3
+ *
4
+ * Source: Tiled docs “JSON Map Format” (1.11.x)
5
+ * - Map, Layer, Chunk, Object, Text, Tileset (+ Grid, TileOffset, Transformations),
6
+ * Tile, Frame, Terrain, WangSet (+ WangColor, WangTile), Object Template, Property, Point.
7
+ *
8
+ * Notes:
9
+ * - Field names mirror the JSON schema from Tiled (snake/lower camel as-is).
10
+ * - Optional fields are marked with `?` exactly as per the documentation.
11
+ * - Some fields are present only on certain layer/element kinds (discriminated unions below).
12
+ * - For compatibility with Tiled 1.9+: several elements have a `class` string (optional).
13
+ * - Since Tiled 1.10: `type` on tile/object (formerly `class` in 1.9) is used again in JSON exports.
14
+ */
15
+ /**
16
+ * A custom property entry.
17
+ *
18
+ * Doc excerpt:
19
+ * - name: string
20
+ * - type: "string" | "int" | "float" | "bool" | "color" | "file" | "object" | "class"
21
+ * - propertytype: string (name of the custom property type) (since 1.8)
22
+ * - value: depends on type (arbitrary object when type === "class")
23
+ */
24
+ export interface TiledPropertyBase {
25
+ name: string;
26
+ /** Property type */
27
+ type?: TiledPropertyType;
28
+ /** Name of the custom property type (since 1.8), when applicable */
29
+ propertytype?: string;
30
+ }
31
+ export type TiledPropertyType = "string" | "int" | "float" | "bool" | "color" | "file" | "object" | "class";
32
+ export type TiledProperty = (TiledPropertyBase & {
33
+ type?: "string";
34
+ value: string;
35
+ }) | (TiledPropertyBase & {
36
+ type: "int";
37
+ value: number;
38
+ }) | (TiledPropertyBase & {
39
+ type: "float";
40
+ value: number;
41
+ }) | (TiledPropertyBase & {
42
+ type: "bool";
43
+ value: boolean;
44
+ }) | (TiledPropertyBase & {
45
+ type: "color";
46
+ value: string;
47
+ }) | (TiledPropertyBase & {
48
+ type: "file";
49
+ value: string;
50
+ }) | (TiledPropertyBase & {
51
+ type: "object";
52
+ value: number;
53
+ }) | (TiledPropertyBase & {
54
+ type: "class";
55
+ value: Record<string, unknown>;
56
+ });
57
+ export type TiledProperties = TiledProperty[];
58
+ export interface TiledMap {
59
+ type?: "map";
60
+ version: string;
61
+ tiledversion?: string;
62
+ /** Number of tile columns / rows */
63
+ width: number;
64
+ height: number;
65
+ /** Map grid tile size */
66
+ tilewidth: number;
67
+ tileheight: number;
68
+ /** Whether the map has infinite dimensions */
69
+ infinite: boolean;
70
+ /** Orientation and render order */
71
+ orientation: "orthogonal" | "isometric" | "staggered" | "hexagonal";
72
+ renderorder?: "right-down" | "right-up" | "left-down" | "left-up";
73
+ /** Hex / stagger specifics */
74
+ hexsidelength?: number;
75
+ staggeraxis?: "x" | "y";
76
+ staggerindex?: "odd" | "even";
77
+ /** Parallax origin (since 1.8) */
78
+ parallaxoriginx?: number;
79
+ parallaxoriginy?: number;
80
+ /** Global counters */
81
+ nextlayerid: number;
82
+ nextobjectid: number;
83
+ /** Visuals */
84
+ backgroundcolor?: string;
85
+ /** Compression level used for tile layer data (defaults -1 = algorithm default) */
86
+ compressionlevel?: number;
87
+ /** Optional class of the map (since 1.9) */
88
+ class?: string;
89
+ /** Composed content */
90
+ layers: TiledAnyLayer[];
91
+ tilesets: TiledMapTileset[];
92
+ /** Custom properties */
93
+ properties?: TiledProperties;
94
+ }
95
+ interface TiledLayerBase {
96
+ id: number;
97
+ name: string;
98
+ opacity: number;
99
+ visible: boolean;
100
+ x: number;
101
+ y: number;
102
+ offsetx?: number;
103
+ offsety?: number;
104
+ /** Parallax factors (since 1.5) */
105
+ parallaxx?: number;
106
+ parallaxy?: number;
107
+ /** Tint color multiplied with drawn graphics (#RRGGBB or #AARRGGBB) */
108
+ tintcolor?: string;
109
+ /** Optional class (since 1.9) */
110
+ class?: string;
111
+ /** Custom properties */
112
+ properties?: TiledProperties;
113
+ /** Infinite maps only */
114
+ startx?: number;
115
+ starty?: number;
116
+ }
117
+ export interface TiledTileLayer extends TiledLayerBase {
118
+ type: "tilelayer";
119
+ /** Data can be an array of unsigned ints (GIDs) or base64-encoded string */
120
+ data: number[] | string;
121
+ encoding?: "csv" | "base64";
122
+ compression?: "zlib" | "gzip" | "zstd" | "";
123
+ height: number;
124
+ width: number;
125
+ /** Present on infinite maps */
126
+ chunks?: TiledChunk[];
127
+ }
128
+ export interface TiledObjectLayer extends TiledLayerBase {
129
+ type: "objectgroup";
130
+ draworder?: "topdown" | "index";
131
+ objects: TiledObject[];
132
+ /** For fixed-size maps, height/width are 0 in examples */
133
+ height?: number;
134
+ width?: number;
135
+ }
136
+ export interface TiledImageLayer extends TiledLayerBase {
137
+ type: "imagelayer";
138
+ image?: string;
139
+ transparentcolor?: string;
140
+ repeatx?: boolean;
141
+ repeaty?: boolean;
142
+ /** since 1.11.1 */
143
+ imageheight?: number;
144
+ imagewidth?: number;
145
+ /** For fixed-size maps, height/width are not stored; keep optional */
146
+ height?: number;
147
+ width?: number;
148
+ }
149
+ export interface TiledGroupLayer extends TiledLayerBase {
150
+ type: "group";
151
+ layers: TiledAnyLayer[];
152
+ }
153
+ export type TiledAnyLayer = TiledTileLayer | TiledObjectLayer | TiledImageLayer | TiledGroupLayer;
154
+ export interface TiledChunk {
155
+ data: number[] | string;
156
+ height: number;
157
+ width: number;
158
+ x: number;
159
+ y: number;
160
+ }
161
+ export interface TiledObject {
162
+ id: number;
163
+ name: string;
164
+ type?: string;
165
+ visible: boolean;
166
+ rotation: number;
167
+ x: number;
168
+ y: number;
169
+ width: number;
170
+ height: number;
171
+ gid?: number;
172
+ ellipse?: boolean;
173
+ point?: boolean;
174
+ polygon?: TiledPoint[];
175
+ polyline?: TiledPoint[];
176
+ text?: TiledText;
177
+ template?: string;
178
+ properties?: TiledProperties;
179
+ }
180
+ export interface TiledText {
181
+ text: string;
182
+ bold?: boolean;
183
+ italic?: boolean;
184
+ underline?: boolean;
185
+ strikeout?: boolean;
186
+ kerning?: boolean;
187
+ wrap?: boolean;
188
+ color?: string;
189
+ fontfamily?: string;
190
+ pixelsize?: number;
191
+ halign?: "center" | "right" | "justify" | "left";
192
+ valign?: "center" | "bottom" | "top";
193
+ }
194
+ export interface TiledPoint {
195
+ x: number;
196
+ y: number;
197
+ }
198
+ /** Tileset as embedded in a map (with firstgid) */
199
+ export interface TiledMapTileset extends TiledTilesetCommon {
200
+ /** Global ID of the first tile in the set */
201
+ firstgid: number;
202
+ /** If this is an external TSX/JSON tileset reference */
203
+ source?: string;
204
+ }
205
+ /** Tileset file (when exported/embedded without firstgid) */
206
+ export interface TiledTileset extends TiledTilesetCommon {
207
+ type?: "tileset";
208
+ version: string;
209
+ }
210
+ export interface TiledTilesetCommon {
211
+ name: string;
212
+ tilewidth: number;
213
+ tileheight: number;
214
+ tilecount: number;
215
+ columns: number;
216
+ /** Optional class (since 1.9) */
217
+ class?: string;
218
+ image?: string;
219
+ imagewidth?: number;
220
+ imageheight?: number;
221
+ margin?: number;
222
+ spacing?: number;
223
+ transparentcolor?: string;
224
+ /** Rendering options (since 1.9) */
225
+ tilerendersize?: "tile" | "grid";
226
+ fillmode?: "stretch" | "preserve-aspect-fit";
227
+ /** Alignment of tile objects (since 1.4) */
228
+ objectalignment?: "unspecified" | "topleft" | "top" | "topright" | "left" | "center" | "right" | "bottomleft" | "bottom" | "bottomright";
229
+ /** Embedded tile definitions */
230
+ tiles?: TiledTile[];
231
+ /** Collisions & grid */
232
+ grid?: TiledGrid;
233
+ tileoffset?: TiledTileOffset;
234
+ transformations?: TiledTransformations;
235
+ /** Terrain & Wang */
236
+ terrains?: TiledTerrain[];
237
+ wangsets?: TiledWangSet[];
238
+ /** Editor version used to save */
239
+ tiledversion?: string;
240
+ /** Custom properties */
241
+ properties?: TiledProperties;
242
+ }
243
+ export interface TiledGrid {
244
+ height: number;
245
+ width: number;
246
+ orientation: "orthogonal" | "isometric";
247
+ }
248
+ export interface TiledTileOffset {
249
+ x: number;
250
+ y: number;
251
+ }
252
+ export interface TiledTransformations {
253
+ hflip: boolean;
254
+ vflip: boolean;
255
+ rotate: boolean;
256
+ /** Whether untransformed tiles remain preferred */
257
+ preferuntransformed: boolean;
258
+ }
259
+ export interface TiledTile {
260
+ id: number;
261
+ type?: string;
262
+ image?: string;
263
+ imagewidth?: number;
264
+ imageheight?: number;
265
+ /** sub-rectangle within the tileset image (since 1.9) */
266
+ x?: number;
267
+ y?: number;
268
+ width?: number;
269
+ height?: number;
270
+ /** Collision/object shapes for this tile (optional) */
271
+ objectgroup?: TiledObjectLayer;
272
+ /** Probability weight (editor) */
273
+ probability?: number;
274
+ /** Custom data */
275
+ properties?: TiledProperties;
276
+ /** Legacy terrain info (replaced by Wang sets since 1.5) */
277
+ terrain?: [number, number, number, number];
278
+ /** Animation frames for animated tiles */
279
+ animation?: TiledFrame[];
280
+ }
281
+ export interface TiledFrame {
282
+ duration: number;
283
+ tileid: number;
284
+ }
285
+ export interface TiledTerrain {
286
+ name: string;
287
+ tile: number;
288
+ properties?: TiledProperties;
289
+ }
290
+ export interface TiledWangSet {
291
+ name: string;
292
+ type: "corner" | "edge" | "mixed";
293
+ tile: number;
294
+ colors: TiledWangColor[];
295
+ properties?: TiledProperties;
296
+ /** Optional class (since 1.9) */
297
+ class?: string;
298
+ /** Wang tiles entries */
299
+ wangtiles?: TiledWangTile[];
300
+ }
301
+ export interface TiledWangColor {
302
+ name: string;
303
+ color: string;
304
+ tile: number;
305
+ probability: number;
306
+ properties?: TiledProperties;
307
+ /** Optional class (since 1.9) */
308
+ class?: string;
309
+ }
310
+ export interface TiledWangTile {
311
+ tileid: number;
312
+ /** Array of Wang color indexes (uchar[8]) */
313
+ wangid: number[];
314
+ }
315
+ export interface TiledObjectTemplate {
316
+ type: "template";
317
+ object: TiledObject;
318
+ tileset?: TiledTileset | TiledMapTileset;
319
+ }
320
+ /** Global Tile ID type alias (unsigned int in JSON) */
321
+ export type TiledGID = number;
322
+ /** A tile layer data cell is a GID or 0 (empty). */
323
+ export type TiledCell = TiledGID;
324
+ export {};
325
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/tiled/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /* eslint-disable no-inline-comments */
2
+ /* eslint-disable @stylistic/line-comment-position */
3
+ /**
4
+ * TypeScript interfaces for the Tiled JSON Map Format.
5
+ *
6
+ * Source: Tiled docs “JSON Map Format” (1.11.x)
7
+ * - Map, Layer, Chunk, Object, Text, Tileset (+ Grid, TileOffset, Transformations),
8
+ * Tile, Frame, Terrain, WangSet (+ WangColor, WangTile), Object Template, Property, Point.
9
+ *
10
+ * Notes:
11
+ * - Field names mirror the JSON schema from Tiled (snake/lower camel as-is).
12
+ * - Optional fields are marked with `?` exactly as per the documentation.
13
+ * - Some fields are present only on certain layer/element kinds (discriminated unions below).
14
+ * - For compatibility with Tiled 1.9+: several elements have a `class` string (optional).
15
+ * - Since Tiled 1.10: `type` on tile/object (formerly `class` in 1.9) is used again in JSON exports.
16
+ */
17
+ export {};
18
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/components/renderers/tiled/types.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,qDAAqD;AACrD;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,16 @@
1
+ import * as THREE from "three";
2
+ import { Actor, ActorComponent } from "../../actor/index.ts";
3
+ export type BehaviorPropertiesValue = string | string[] | number | number[] | boolean | boolean[] | THREE.Vector2 | THREE.Vector3;
4
+ export type BehaviorProperties = Record<string, BehaviorPropertiesValue>;
5
+ export interface BehaviorOptions {
6
+ initializer?: (behavior: Behavior) => void;
7
+ }
8
+ export declare class Behavior<T extends BehaviorProperties = Record<string, BehaviorPropertiesValue>> extends ActorComponent {
9
+ #private;
10
+ constructor(actor: Actor, options?: BehaviorOptions);
11
+ setProperty<K extends keyof T = keyof T>(propertyName: K, value: T[K]): void;
12
+ getProperty<K extends keyof T = keyof T>(propertyName: K, defaultValue: T[K]): T[K];
13
+ mergeProperties(defaultProperties?: Partial<T>): void;
14
+ destroy(): void;
15
+ }
16
+ //# sourceMappingURL=Behavior.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Behavior.d.ts","sourceRoot":"","sources":["../../../src/components/script/Behavior.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EACL,KAAK,EACL,cAAc,EACf,MAAM,sBAAsB,CAAC;AAG9B,MAAM,MAAM,uBAAuB,GAC/B,MAAM,GACN,MAAM,EAAE,GACR,MAAM,GACN,MAAM,EAAE,GACR,OAAO,GACP,OAAO,EAAE,GACT,KAAK,CAAC,OAAO,GACb,KAAK,CAAC,OAAO,CAAC;AAClB,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;AAEzE,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC5C;AAED,qBAAa,QAAQ,CACnB,CAAC,SAAS,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CACtE,SAAQ,cAAc;;gBAIpB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,eAAoB;IAkB/B,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,EACrC,YAAY,EAAE,CAAC,EACf,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GACV,IAAI;IAIP,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,EACrC,YAAY,EAAE,CAAC,EACf,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,GACjB,CAAC,CAAC,CAAC,CAAC;IAIP,eAAe,CACb,iBAAiB,GAAE,OAAO,CAAC,CAAC,CAAuB;IAK5C,OAAO,IAAI,IAAI;CAezB"}
@@ -0,0 +1,52 @@
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 { BehaviorInitializer } from "./BehaviorInitializer.js";
6
+ export class Behavior extends ActorComponent {
7
+ #properties = Object.create(null);
8
+ constructor(actor, options = {}) {
9
+ super({
10
+ actor,
11
+ typeName: "ScriptBehavior"
12
+ });
13
+ const { initializer = initializeBehaviorMetadata } = options;
14
+ if (this.constructor.name in this.actor.behaviors) {
15
+ this.actor.behaviors[this.constructor.name].push(this);
16
+ }
17
+ else {
18
+ this.actor.behaviors[this.constructor.name] = [this];
19
+ }
20
+ initializer(this);
21
+ }
22
+ setProperty(propertyName, value) {
23
+ this.#properties[propertyName] = value;
24
+ }
25
+ getProperty(propertyName, defaultValue) {
26
+ return this.#properties[propertyName] ?? defaultValue;
27
+ }
28
+ mergeProperties(defaultProperties = Object.create(null)) {
29
+ Object.assign(this, defaultProperties, this.#properties);
30
+ }
31
+ destroy() {
32
+ if (this.pendingForDestruction) {
33
+ return;
34
+ }
35
+ if (this.constructor.name in this.actor.behaviors) {
36
+ const behaviorList = this.actor.behaviors[this.constructor.name];
37
+ behaviorList.splice(behaviorList.indexOf(this), 1);
38
+ if (behaviorList.length === 0) {
39
+ delete this.actor.behaviors[this.constructor.name];
40
+ }
41
+ }
42
+ super.destroy();
43
+ }
44
+ }
45
+ function initializeBehaviorMetadata(behavior) {
46
+ // Delay the loading to ensure that all properties are initialized
47
+ setTimeout(() => {
48
+ BehaviorInitializer.for(behavior)?.load();
49
+ behavior.emit("metadataInitialized");
50
+ });
51
+ }
52
+ //# sourceMappingURL=Behavior.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Behavior.js","sourceRoot":"","sources":["../../../src/components/script/Behavior.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,+BAA+B;AAC/B,OAAO,EACL,KAAK,EACL,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAiB/D,MAAM,OAAO,QAEX,SAAQ,cAAc;IACtB,WAAW,GAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAErC,YACE,KAAY,EACZ,UAA2B,EAAE;QAE7B,KAAK,CAAC;YACJ,KAAK;YACL,QAAQ,EAAE,gBAAgB;SAC3B,CAAC,CAAC;QACH,MAAM,EAAE,WAAW,GAAG,0BAA0B,EAAE,GAAG,OAAO,CAAC;QAE7D,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC;aACI,CAAC;YACJ,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,WAAW,CACT,YAAe,EACf,KAAW;QAEX,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;IACzC,CAAC;IAED,WAAW,CACT,YAAe,EACf,YAAkB;QAElB,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC;IACxD,CAAC;IAED,eAAe,CACb,oBAAgC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAEnD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IAEQ,OAAO;QACd,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAClD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACjE,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACnD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;CACF;AAED,SAAS,0BAA0B,CACjC,QAAkB;IAElB,kEAAkE;IAClE,UAAU,CAAC,GAAG,EAAE;QACd,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,29 @@
1
+ import "reflect-metadata";
2
+ import type { ModelRenderer, SpriteRenderer, TextRenderer, TiledMapRenderer } from "../renderers/index.ts";
3
+ import type { ActorComponent } from "../../actor/index.ts";
4
+ export type ScenePropertyType = "string" | "string[]" | "number" | "number[]" | "boolean" | "boolean[]" | "Vector2" | "Vector3" | "Vector4" | "Color";
5
+ export interface ScenePropertyOptions {
6
+ type: ScenePropertyType;
7
+ label?: string;
8
+ description?: string;
9
+ }
10
+ export type BehaviorKey = string | symbol;
11
+ export type BehaviorPropertyMetadata = {
12
+ type: ScenePropertyType;
13
+ label: string;
14
+ description: string;
15
+ };
16
+ export type BehaviorMetadata = {
17
+ properties: Map<BehaviorKey, BehaviorPropertyMetadata>;
18
+ components: Map<BehaviorKey, SceneActorComponentType>;
19
+ signals: Set<string>;
20
+ };
21
+ export declare function SceneProperty(options: ScenePropertyOptions): PropertyDecorator;
22
+ export declare namespace SceneProperty {
23
+ var Metadata: symbol;
24
+ }
25
+ export type SceneActorComponentType = typeof ModelRenderer | typeof SpriteRenderer | typeof TextRenderer | typeof TiledMapRenderer | typeof ActorComponent | any;
26
+ export declare function SceneActorComponent(classObject: SceneActorComponentType): (object: Object, propertyName: BehaviorKey) => void;
27
+ export declare function getBehaviorMetadata(object: Object): BehaviorMetadata | undefined;
28
+ export declare function createBehaviorMetadata(): BehaviorMetadata;
29
+ //# sourceMappingURL=BehaviorDecorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BehaviorDecorators.d.ts","sourceRoot":"","sources":["../../../src/components/script/BehaviorDecorators.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACZ,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,UAAU,GACV,SAAS,GACT,WAAW,GACX,SAAS,GACT,SAAS,GACT,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;IACvD,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IACtD,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACtB,CAAC;AAEF,wBAAgB,aAAa,CAC3B,OAAO,EAAE,oBAAoB,GAC5B,iBAAiB,CA8BnB;yBAhCe,aAAa;;;AAmC7B,MAAM,MAAM,uBAAuB,GAC/B,OAAO,aAAa,GACpB,OAAO,cAAc,GACrB,OAAO,YAAY,GACnB,OAAO,gBAAgB,GACvB,OAAO,cAAc,GACrB,GAAG,CAAC;AAER,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,uBAAuB,IAGlC,QAAQ,MAAM,EACd,cAAc,WAAW,KACxB,IAAI,CAiBR;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,GACb,gBAAgB,GAAG,SAAS,CAE9B;AAED,wBAAgB,sBAAsB,IAAI,gBAAgB,CAMzD"}