@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.
- package/README.md +209 -0
- package/dist/actor/Actor.d.ts +39 -0
- package/dist/actor/Actor.d.ts.map +1 -0
- package/dist/actor/Actor.js +171 -0
- package/dist/actor/Actor.js.map +1 -0
- package/dist/actor/ActorComponent.d.ts +19 -0
- package/dist/actor/ActorComponent.d.ts.map +1 -0
- package/dist/actor/ActorComponent.js +30 -0
- package/dist/actor/ActorComponent.js.map +1 -0
- package/dist/actor/ActorTree.d.ts +31 -0
- package/dist/actor/ActorTree.d.ts.map +1 -0
- package/dist/actor/ActorTree.js +167 -0
- package/dist/actor/ActorTree.js.map +1 -0
- package/dist/actor/Signal.d.ts +14 -0
- package/dist/actor/Signal.d.ts.map +1 -0
- package/dist/actor/Signal.js +38 -0
- package/dist/actor/Signal.js.map +1 -0
- package/dist/actor/Transform.d.ts +37 -0
- package/dist/actor/Transform.d.ts.map +1 -0
- package/dist/actor/Transform.js +148 -0
- package/dist/actor/Transform.js.map +1 -0
- package/dist/actor/index.d.ts +5 -0
- package/dist/actor/index.d.ts.map +1 -0
- package/dist/actor/index.js +5 -0
- package/dist/actor/index.js.map +1 -0
- package/dist/adapters/canvas.d.ts +7 -0
- package/dist/adapters/canvas.d.ts.map +1 -0
- package/dist/adapters/canvas.js +2 -0
- package/dist/adapters/canvas.js.map +1 -0
- package/dist/adapters/console.d.ts +6 -0
- package/dist/adapters/console.d.ts.map +1 -0
- package/dist/adapters/console.js +2 -0
- package/dist/adapters/console.js.map +1 -0
- package/dist/adapters/document.d.ts +14 -0
- package/dist/adapters/document.d.ts.map +1 -0
- package/dist/adapters/document.js +19 -0
- package/dist/adapters/document.js.map +1 -0
- package/dist/adapters/eventTarget.d.ts +6 -0
- package/dist/adapters/eventTarget.d.ts.map +1 -0
- package/dist/adapters/eventTarget.js +2 -0
- package/dist/adapters/eventTarget.js.map +1 -0
- package/dist/adapters/global.d.ts +8 -0
- package/dist/adapters/global.d.ts.map +1 -0
- package/dist/adapters/global.js +8 -0
- package/dist/adapters/global.js.map +1 -0
- package/dist/adapters/index.d.ts +6 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +6 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/navigator.d.ts +9 -0
- package/dist/adapters/navigator.d.ts.map +1 -0
- package/dist/adapters/navigator.js +9 -0
- package/dist/adapters/navigator.js.map +1 -0
- package/dist/adapters/window.d.ts +12 -0
- package/dist/adapters/window.d.ts.map +1 -0
- package/dist/adapters/window.js +11 -0
- package/dist/adapters/window.js.map +1 -0
- package/dist/audio/AudioBackground.d.ts +48 -0
- package/dist/audio/AudioBackground.d.ts.map +1 -0
- package/dist/audio/AudioBackground.js +151 -0
- package/dist/audio/AudioBackground.js.map +1 -0
- package/dist/audio/AudioLibrary.d.ts +6 -0
- package/dist/audio/AudioLibrary.d.ts.map +1 -0
- package/dist/audio/AudioLibrary.js +6 -0
- package/dist/audio/AudioLibrary.js.map +1 -0
- package/dist/audio/AudioManager.d.ts +33 -0
- package/dist/audio/AudioManager.d.ts.map +1 -0
- package/dist/audio/AudioManager.js +47 -0
- package/dist/audio/AudioManager.js.map +1 -0
- package/dist/audio/GlobalAudio.d.ts +20 -0
- package/dist/audio/GlobalAudio.d.ts.map +1 -0
- package/dist/audio/GlobalAudio.js +41 -0
- package/dist/audio/GlobalAudio.js.map +1 -0
- package/dist/audio/internals/AudioBuffer.d.ts +23 -0
- package/dist/audio/internals/AudioBuffer.d.ts.map +1 -0
- package/dist/audio/internals/AudioBuffer.js +28 -0
- package/dist/audio/internals/AudioBuffer.js.map +1 -0
- package/dist/audio/internals/AudioListener.d.ts +5 -0
- package/dist/audio/internals/AudioListener.d.ts.map +1 -0
- package/dist/audio/internals/AudioListener.js +2 -0
- package/dist/audio/internals/AudioListener.js.map +1 -0
- package/dist/audio/internals/AudioService.d.ts +19 -0
- package/dist/audio/internals/AudioService.d.ts.map +1 -0
- package/dist/audio/internals/AudioService.js +36 -0
- package/dist/audio/internals/AudioService.js.map +1 -0
- package/dist/components/camera/Camera3DControls.d.ts +31 -0
- package/dist/components/camera/Camera3DControls.d.ts.map +1 -0
- package/dist/components/camera/Camera3DControls.js +79 -0
- package/dist/components/camera/Camera3DControls.js.map +1 -0
- package/dist/components/index.d.ts +5 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +5 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/renderers/index.d.ts +14 -0
- package/dist/components/renderers/index.d.ts.map +1 -0
- package/dist/components/renderers/index.js +14 -0
- package/dist/components/renderers/index.js.map +1 -0
- package/dist/components/renderers/model/ModelAnimation.d.ts +21 -0
- package/dist/components/renderers/model/ModelAnimation.d.ts.map +1 -0
- package/dist/components/renderers/model/ModelAnimation.js +84 -0
- package/dist/components/renderers/model/ModelAnimation.js.map +1 -0
- package/dist/components/renderers/model/ModelRenderer.d.ts +24 -0
- package/dist/components/renderers/model/ModelRenderer.d.ts.map +1 -0
- package/dist/components/renderers/model/ModelRenderer.js +49 -0
- package/dist/components/renderers/model/ModelRenderer.js.map +1 -0
- package/dist/components/renderers/model/loader.d.ts +8 -0
- package/dist/components/renderers/model/loader.d.ts.map +1 -0
- package/dist/components/renderers/model/loader.js +112 -0
- package/dist/components/renderers/model/loader.js.map +1 -0
- package/dist/components/renderers/sprite/SpriteAnimation.class.d.ts +33 -0
- package/dist/components/renderers/sprite/SpriteAnimation.class.d.ts.map +1 -0
- package/dist/components/renderers/sprite/SpriteAnimation.class.js +78 -0
- package/dist/components/renderers/sprite/SpriteAnimation.class.js.map +1 -0
- package/dist/components/renderers/sprite/SpriteRenderer.class.d.ts +35 -0
- package/dist/components/renderers/sprite/SpriteRenderer.class.d.ts.map +1 -0
- package/dist/components/renderers/sprite/SpriteRenderer.class.js +76 -0
- package/dist/components/renderers/sprite/SpriteRenderer.class.js.map +1 -0
- package/dist/components/renderers/text/Text3D.class.d.ts +26 -0
- package/dist/components/renderers/text/Text3D.class.d.ts.map +1 -0
- package/dist/components/renderers/text/Text3D.class.js +104 -0
- package/dist/components/renderers/text/Text3D.class.js.map +1 -0
- package/dist/components/renderers/text/TextRenderer.class.d.ts +15 -0
- package/dist/components/renderers/text/TextRenderer.class.d.ts.map +1 -0
- package/dist/components/renderers/text/TextRenderer.class.js +47 -0
- package/dist/components/renderers/text/TextRenderer.class.js.map +1 -0
- package/dist/components/renderers/text/loader.d.ts +4 -0
- package/dist/components/renderers/text/loader.d.ts.map +1 -0
- package/dist/components/renderers/text/loader.js +14 -0
- package/dist/components/renderers/text/loader.js.map +1 -0
- package/dist/components/renderers/tiled/TileLayer.d.ts +13 -0
- package/dist/components/renderers/tiled/TileLayer.d.ts.map +1 -0
- package/dist/components/renderers/tiled/TileLayer.js +34 -0
- package/dist/components/renderers/tiled/TileLayer.js.map +1 -0
- package/dist/components/renderers/tiled/TileMapRenderer.d.ts +15 -0
- package/dist/components/renderers/tiled/TileMapRenderer.d.ts.map +1 -0
- package/dist/components/renderers/tiled/TileMapRenderer.js +59 -0
- package/dist/components/renderers/tiled/TileMapRenderer.js.map +1 -0
- package/dist/components/renderers/tiled/TileObject.d.ts +18 -0
- package/dist/components/renderers/tiled/TileObject.d.ts.map +1 -0
- package/dist/components/renderers/tiled/TileObject.js +59 -0
- package/dist/components/renderers/tiled/TileObject.js.map +1 -0
- package/dist/components/renderers/tiled/TileSet.d.ts +27 -0
- package/dist/components/renderers/tiled/TileSet.d.ts.map +1 -0
- package/dist/components/renderers/tiled/TileSet.js +116 -0
- package/dist/components/renderers/tiled/TileSet.js.map +1 -0
- package/dist/components/renderers/tiled/loader.d.ts +13 -0
- package/dist/components/renderers/tiled/loader.d.ts.map +1 -0
- package/dist/components/renderers/tiled/loader.js +39 -0
- package/dist/components/renderers/tiled/loader.js.map +1 -0
- package/dist/components/renderers/tiled/types.d.ts +325 -0
- package/dist/components/renderers/tiled/types.d.ts.map +1 -0
- package/dist/components/renderers/tiled/types.js +18 -0
- package/dist/components/renderers/tiled/types.js.map +1 -0
- package/dist/components/script/Behavior.d.ts +16 -0
- package/dist/components/script/Behavior.d.ts.map +1 -0
- package/dist/components/script/Behavior.js +52 -0
- package/dist/components/script/Behavior.js.map +1 -0
- package/dist/components/script/BehaviorDecorators.d.ts +29 -0
- package/dist/components/script/BehaviorDecorators.d.ts.map +1 -0
- package/dist/components/script/BehaviorDecorators.js +47 -0
- package/dist/components/script/BehaviorDecorators.js.map +1 -0
- package/dist/components/script/BehaviorInitializer.d.ts +15 -0
- package/dist/components/script/BehaviorInitializer.d.ts.map +1 -0
- package/dist/components/script/BehaviorInitializer.js +103 -0
- package/dist/components/script/BehaviorInitializer.js.map +1 -0
- package/dist/components/types.d.ts +12 -0
- package/dist/components/types.d.ts.map +1 -0
- package/dist/components/types.js +3 -0
- package/dist/components/types.js.map +1 -0
- package/dist/controls/AtomicInput.d.ts +17 -0
- package/dist/controls/AtomicInput.d.ts.map +1 -0
- package/dist/controls/AtomicInput.js +69 -0
- package/dist/controls/AtomicInput.js.map +1 -0
- package/dist/controls/CombinedInput.d.ts +54 -0
- package/dist/controls/CombinedInput.d.ts.map +1 -0
- package/dist/controls/CombinedInput.js +119 -0
- package/dist/controls/CombinedInput.js.map +1 -0
- package/dist/controls/Input.class.d.ts +93 -0
- package/dist/controls/Input.class.d.ts.map +1 -0
- package/dist/controls/Input.class.js +334 -0
- package/dist/controls/Input.class.js.map +1 -0
- package/dist/controls/devices/Gamepad.class.d.ts +98 -0
- package/dist/controls/devices/Gamepad.class.d.ts.map +1 -0
- package/dist/controls/devices/Gamepad.class.js +275 -0
- package/dist/controls/devices/Gamepad.class.js.map +1 -0
- package/dist/controls/devices/Mouse.class.d.ts +80 -0
- package/dist/controls/devices/Mouse.class.d.ts.map +1 -0
- package/dist/controls/devices/Mouse.class.js +260 -0
- package/dist/controls/devices/Mouse.class.js.map +1 -0
- package/dist/controls/devices/Screen.d.ts +27 -0
- package/dist/controls/devices/Screen.d.ts.map +1 -0
- package/dist/controls/devices/Screen.js +61 -0
- package/dist/controls/devices/Screen.js.map +1 -0
- package/dist/controls/devices/Touchpad.class.d.ts +61 -0
- package/dist/controls/devices/Touchpad.class.d.ts.map +1 -0
- package/dist/controls/devices/Touchpad.class.js +149 -0
- package/dist/controls/devices/Touchpad.class.js.map +1 -0
- package/dist/controls/devices/index.d.ts +6 -0
- package/dist/controls/devices/index.d.ts.map +1 -0
- package/dist/controls/devices/index.js +6 -0
- package/dist/controls/devices/index.js.map +1 -0
- package/dist/controls/devices/keyboard/Keyboard.class.d.ts +37 -0
- package/dist/controls/devices/keyboard/Keyboard.class.d.ts.map +1 -0
- package/dist/controls/devices/keyboard/Keyboard.class.js +135 -0
- package/dist/controls/devices/keyboard/Keyboard.class.js.map +1 -0
- package/dist/controls/devices/keyboard/code.d.ts +9 -0
- package/dist/controls/devices/keyboard/code.d.ts.map +1 -0
- package/dist/controls/devices/keyboard/code.js +13 -0
- package/dist/controls/devices/keyboard/code.js.map +1 -0
- package/dist/controls/devices/keyboard/transformers/alphabet.d.ts +31 -0
- package/dist/controls/devices/keyboard/transformers/alphabet.d.ts.map +1 -0
- package/dist/controls/devices/keyboard/transformers/alphabet.js +34 -0
- package/dist/controls/devices/keyboard/transformers/alphabet.js.map +1 -0
- package/dist/controls/devices/keyboard/transformers/numeric.d.ts +15 -0
- package/dist/controls/devices/keyboard/transformers/numeric.d.ts.map +1 -0
- package/dist/controls/devices/keyboard/transformers/numeric.js +18 -0
- package/dist/controls/devices/keyboard/transformers/numeric.js.map +1 -0
- package/dist/controls/types.d.ts +23 -0
- package/dist/controls/types.d.ts.map +1 -0
- package/dist/controls/types.js +2 -0
- package/dist/controls/types.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/systems/FixedTimeStep.d.ts +16 -0
- package/dist/systems/FixedTimeStep.d.ts.map +1 -0
- package/dist/systems/FixedTimeStep.js +41 -0
- package/dist/systems/FixedTimeStep.js.map +1 -0
- package/dist/systems/GameInstance.d.ts +30 -0
- package/dist/systems/GameInstance.d.ts.map +1 -0
- package/dist/systems/GameInstance.js +54 -0
- package/dist/systems/GameInstance.js.map +1 -0
- package/dist/systems/Scene.d.ts +30 -0
- package/dist/systems/Scene.d.ts.map +1 -0
- package/dist/systems/Scene.js +91 -0
- package/dist/systems/Scene.js.map +1 -0
- package/dist/systems/asset/Base.d.ts +18 -0
- package/dist/systems/asset/Base.d.ts.map +1 -0
- package/dist/systems/asset/Base.js +36 -0
- package/dist/systems/asset/Base.js.map +1 -0
- package/dist/systems/asset/Manager.d.ts +21 -0
- package/dist/systems/asset/Manager.d.ts.map +1 -0
- package/dist/systems/asset/Manager.js +68 -0
- package/dist/systems/asset/Manager.js.map +1 -0
- package/dist/systems/asset/Queue.d.ts +8 -0
- package/dist/systems/asset/Queue.d.ts.map +1 -0
- package/dist/systems/asset/Queue.js +17 -0
- package/dist/systems/asset/Queue.js.map +1 -0
- package/dist/systems/asset/Registry.d.ts +17 -0
- package/dist/systems/asset/Registry.d.ts.map +1 -0
- package/dist/systems/asset/Registry.js +23 -0
- package/dist/systems/asset/Registry.js.map +1 -0
- package/dist/systems/index.d.ts +9 -0
- package/dist/systems/index.d.ts.map +1 -0
- package/dist/systems/index.js +8 -0
- package/dist/systems/index.js.map +1 -0
- package/dist/systems/rendering/GameRenderer.d.ts +18 -0
- package/dist/systems/rendering/GameRenderer.d.ts.map +1 -0
- package/dist/systems/rendering/GameRenderer.js +3 -0
- package/dist/systems/rendering/GameRenderer.js.map +1 -0
- package/dist/systems/rendering/RenderStrategy.d.ts +24 -0
- package/dist/systems/rendering/RenderStrategy.d.ts.map +1 -0
- package/dist/systems/rendering/RenderStrategy.js +38 -0
- package/dist/systems/rendering/RenderStrategy.js.map +1 -0
- package/dist/systems/rendering/ThreeRenderer.d.ts +48 -0
- package/dist/systems/rendering/ThreeRenderer.d.ts.map +1 -0
- package/dist/systems/rendering/ThreeRenderer.js +149 -0
- package/dist/systems/rendering/ThreeRenderer.js.map +1 -0
- package/dist/systems/rendering/index.d.ts +4 -0
- package/dist/systems/rendering/index.d.ts.map +1 -0
- package/dist/systems/rendering/index.js +3 -0
- package/dist/systems/rendering/index.js.map +1 -0
- package/dist/utils/createViewHelper.d.ts +5 -0
- package/dist/utils/createViewHelper.d.ts.map +1 -0
- package/dist/utils/createViewHelper.js +11 -0
- package/dist/utils/createViewHelper.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/loadJSON.d.ts +2 -0
- package/dist/utils/loadJSON.d.ts.map +1 -0
- package/dist/utils/loadJSON.js +15 -0
- package/dist/utils/loadJSON.js.map +1 -0
- package/dist/utils/path.d.ts +9 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +18 -0
- package/dist/utils/path.js.map +1 -0
- 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"}
|