@jolly-pixel/engine 1.0.0 → 1.1.1

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 (60) hide show
  1. package/README.md +221 -209
  2. package/dist/actor/Actor.d.ts.map +1 -1
  3. package/dist/actor/Actor.js +3 -15
  4. package/dist/actor/Actor.js.map +1 -1
  5. package/dist/actor/ActorComponent.d.ts +5 -0
  6. package/dist/actor/ActorComponent.d.ts.map +1 -1
  7. package/dist/actor/ActorComponent.js +22 -0
  8. package/dist/actor/ActorComponent.js.map +1 -1
  9. package/dist/actor/Signal.d.ts +2 -0
  10. package/dist/actor/Signal.d.ts.map +1 -1
  11. package/dist/actor/Signal.js +13 -5
  12. package/dist/actor/Signal.js.map +1 -1
  13. package/dist/components/script/Behavior.js +0 -1
  14. package/dist/components/script/Behavior.js.map +1 -1
  15. package/dist/components/script/BehaviorDecorators.d.ts +0 -1
  16. package/dist/components/script/BehaviorDecorators.d.ts.map +1 -1
  17. package/dist/components/script/BehaviorDecorators.js +1 -2
  18. package/dist/components/script/BehaviorDecorators.js.map +1 -1
  19. package/dist/components/script/BehaviorInitializer.d.ts.map +1 -1
  20. package/dist/components/script/BehaviorInitializer.js +0 -8
  21. package/dist/components/script/BehaviorInitializer.js.map +1 -1
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +1 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/systems/FixedTimeStep.d.ts +1 -0
  27. package/dist/systems/FixedTimeStep.d.ts.map +1 -1
  28. package/dist/systems/FixedTimeStep.js +4 -2
  29. package/dist/systems/FixedTimeStep.js.map +1 -1
  30. package/dist/systems/GameInstance.js.map +1 -1
  31. package/dist/systems/rendering/GameRenderer.d.ts +18 -1
  32. package/dist/systems/rendering/GameRenderer.d.ts.map +1 -1
  33. package/dist/systems/rendering/ThreeRenderer.d.ts +2 -14
  34. package/dist/systems/rendering/ThreeRenderer.d.ts.map +1 -1
  35. package/dist/systems/rendering/ThreeRenderer.js.map +1 -1
  36. package/dist/ui/UINode.d.ts +46 -0
  37. package/dist/ui/UINode.d.ts.map +1 -0
  38. package/dist/ui/UINode.js +86 -0
  39. package/dist/ui/UINode.js.map +1 -0
  40. package/dist/ui/UIRenderer.d.ts +19 -0
  41. package/dist/ui/UIRenderer.d.ts.map +1 -0
  42. package/dist/ui/UIRenderer.js +78 -0
  43. package/dist/ui/UIRenderer.js.map +1 -0
  44. package/dist/ui/UISprite.d.ts +32 -0
  45. package/dist/ui/UISprite.d.ts.map +1 -0
  46. package/dist/ui/UISprite.js +109 -0
  47. package/dist/ui/UISprite.js.map +1 -0
  48. package/dist/ui/UIText.d.ts +37 -0
  49. package/dist/ui/UIText.d.ts.map +1 -0
  50. package/dist/ui/UIText.js +53 -0
  51. package/dist/ui/UIText.js.map +1 -0
  52. package/dist/ui/index.d.ts +5 -0
  53. package/dist/ui/index.d.ts.map +1 -0
  54. package/dist/ui/index.js +5 -0
  55. package/dist/ui/index.js.map +1 -0
  56. package/dist/utils/types.d.ts +4 -0
  57. package/dist/utils/types.d.ts.map +1 -0
  58. package/dist/utils/types.js +2 -0
  59. package/dist/utils/types.js.map +1 -0
  60. package/package.json +4 -2
@@ -0,0 +1,109 @@
1
+ // Import Third-party Dependencies
2
+ import * as THREE from "three";
3
+ // Import Internal Dependencies
4
+ import { Actor, SignalEvent } from "../actor/index.js";
5
+ import { UINode } from "./UINode.js";
6
+ import { UIText } from "./UIText.js";
7
+ // CONSTANTS
8
+ const kDoubleClickThresholdMs = 300;
9
+ export class UISprite extends UINode {
10
+ mesh;
11
+ #isHovered = false;
12
+ #isPressed = false;
13
+ #style;
14
+ #styleOnHover;
15
+ #text;
16
+ #lastClickTime = 0;
17
+ onPointerEnter = new SignalEvent();
18
+ onPointerLeave = new SignalEvent();
19
+ onPointerDown = new SignalEvent();
20
+ onPointerUp = new SignalEvent();
21
+ onClick = new SignalEvent();
22
+ onDoubleClick = new SignalEvent();
23
+ onRightClick = new SignalEvent();
24
+ onHover = new SignalEvent();
25
+ constructor(actor, options = {}) {
26
+ super(actor, options);
27
+ this.#style = options.style ?? {};
28
+ this.#styleOnHover = options.styleOnHover ?? null;
29
+ if (options.text) {
30
+ this.#text = new UIText(this, options.text);
31
+ }
32
+ }
33
+ awake() {
34
+ const { width, height } = this.size;
35
+ const geometry = new THREE.PlaneGeometry(width, height);
36
+ const material = new THREE.MeshBasicMaterial({
37
+ color: this.#style.color ?? 0xffffff,
38
+ map: this.#style.map ?? null,
39
+ opacity: this.#style.opacity ?? 1,
40
+ transparent: true,
41
+ side: THREE.DoubleSide
42
+ });
43
+ this.mesh = new THREE.Mesh(geometry, material);
44
+ this.addChildren(this.mesh);
45
+ }
46
+ #applyStyle(style) {
47
+ const material = this.mesh.material;
48
+ material.color.set(style.color ?? this.#style.color ?? 0xffffff);
49
+ material.map = style.map ?? this.#style.map ?? null;
50
+ material.opacity = style.opacity ?? this.#style.opacity ?? 1;
51
+ material.needsUpdate = true;
52
+ }
53
+ isPointerOver() {
54
+ const mouse = this.actor.gameInstance.input.getMouseWorldPosition();
55
+ const box = new THREE.Box3().setFromObject(this.mesh);
56
+ return box.containsPoint(new THREE.Vector3(mouse.x, mouse.y, 0));
57
+ }
58
+ update() {
59
+ const { input } = this.actor.gameInstance;
60
+ const isOver = this.isPointerOver();
61
+ // --- Pointer Enter / Leave ---
62
+ if (isOver && !this.#isHovered) {
63
+ this.#isHovered = true;
64
+ this.onPointerEnter.emit();
65
+ this.onHover.emit();
66
+ if (this.#styleOnHover) {
67
+ this.#applyStyle(this.#styleOnHover);
68
+ }
69
+ }
70
+ else if (!isOver && this.#isHovered) {
71
+ this.#isHovered = false;
72
+ this.onPointerLeave.emit();
73
+ this.#applyStyle(this.#style);
74
+ }
75
+ // --- Pointer Down ---
76
+ if (isOver && input.wasMouseButtonJustPressed("left")) {
77
+ this.#isPressed = true;
78
+ this.onPointerDown.emit();
79
+ }
80
+ // --- Right Click ---
81
+ if (isOver && input.wasMouseButtonJustReleased("right")) {
82
+ this.onRightClick.emit();
83
+ }
84
+ // --- Pointer Up / Click / Double Click ---
85
+ if (this.#isPressed && input.wasMouseButtonJustReleased("left")) {
86
+ this.#isPressed = false;
87
+ this.onPointerUp.emit();
88
+ if (isOver) {
89
+ this.onClick.emit();
90
+ const now = performance.now();
91
+ if (now - this.#lastClickTime < kDoubleClickThresholdMs) {
92
+ this.onDoubleClick.emit();
93
+ this.#lastClickTime = 0;
94
+ }
95
+ else {
96
+ this.#lastClickTime = now;
97
+ }
98
+ }
99
+ }
100
+ }
101
+ destroy() {
102
+ const material = this.mesh.material;
103
+ material.map?.dispose();
104
+ material.dispose();
105
+ this.mesh.geometry.dispose();
106
+ this.#text?.destroy();
107
+ }
108
+ }
109
+ //# sourceMappingURL=UISprite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UISprite.js","sourceRoot":"","sources":["../../src/ui/UISprite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { UINode } from "./UINode.ts";
2
+ export interface UITextStyle {
3
+ color?: string;
4
+ fontSize?: string;
5
+ fontFamily?: string;
6
+ fontWeight?: string;
7
+ textAlign?: string;
8
+ lineHeight?: string;
9
+ letterSpacing?: string;
10
+ textTransform?: string;
11
+ whiteSpace?: string;
12
+ textShadow?: string;
13
+ padding?: string;
14
+ backgroundColor?: string;
15
+ borderRadius?: string;
16
+ opacity?: string;
17
+ }
18
+ export interface UITextOptions {
19
+ textContent?: string;
20
+ style?: UITextStyle;
21
+ /**
22
+ * Z offset to place the text in front of the UINode.
23
+ * @default 0.1
24
+ */
25
+ zOffset?: number;
26
+ }
27
+ export declare class UIText {
28
+ #private;
29
+ constructor(node: UINode, options?: UITextOptions);
30
+ get node(): UINode;
31
+ get element(): HTMLDivElement;
32
+ get text(): string;
33
+ set text(value: string);
34
+ setStyle(style: Partial<UITextStyle>): void;
35
+ destroy(): void;
36
+ }
37
+ //# sourceMappingURL=UIText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UIText.d.ts","sourceRoot":"","sources":["../../src/ui/UIText.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAWD,qBAAa,MAAM;;gBAOf,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,aAAkB;IAgB7B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,OAAO,IAAI,cAAc,CAE5B;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAErB;IAED,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAa3C,OAAO,IAAI,IAAI;CAGhB"}
@@ -0,0 +1,53 @@
1
+ // Import Third-party Dependencies
2
+ import { CSS2DObject } from "three/addons/renderers/CSS2DRenderer.js";
3
+ // CONSTANTS
4
+ const kDefaultStyle = {
5
+ color: "#ffffff",
6
+ fontSize: "14px",
7
+ fontFamily: "Arial, sans-serif",
8
+ whiteSpace: "nowrap"
9
+ };
10
+ const kDefaultZOffset = 0.1;
11
+ export class UIText {
12
+ #element;
13
+ #cssObject;
14
+ #style;
15
+ #node;
16
+ constructor(node, options = {}) {
17
+ this.#node = node;
18
+ this.#style = { ...kDefaultStyle, ...options.style };
19
+ this.#element = document.createElement("div");
20
+ this.#element.textContent = options.textContent ?? "";
21
+ this.#applyStyle(this.#style);
22
+ this.#cssObject = new CSS2DObject(this.#element);
23
+ this.#cssObject.position.z = options.zOffset ?? kDefaultZOffset;
24
+ this.#node.addChildren(this.#cssObject);
25
+ }
26
+ get node() {
27
+ return this.#node;
28
+ }
29
+ get element() {
30
+ return this.#element;
31
+ }
32
+ get text() {
33
+ return this.#element.textContent ?? "";
34
+ }
35
+ set text(value) {
36
+ this.#element.textContent = value;
37
+ }
38
+ setStyle(style) {
39
+ Object.assign(this.#style, style);
40
+ this.#applyStyle(this.#style);
41
+ }
42
+ #applyStyle(style) {
43
+ for (const [key, value] of Object.entries(style)) {
44
+ if (value !== undefined) {
45
+ this.#element.style[key] = value;
46
+ }
47
+ }
48
+ }
49
+ destroy() {
50
+ this.#element.remove();
51
+ }
52
+ }
53
+ //# sourceMappingURL=UIText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UIText.js","sourceRoot":"","sources":["../../src/ui/UIText.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAgCtE,YAAY;AACZ,MAAM,aAAa,GAAgB;IACjC,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,mBAAmB;IAC/B,UAAU,EAAE,QAAQ;CACrB,CAAC;AACF,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,MAAM,OAAO,MAAM;IACjB,QAAQ,CAAiB;IACzB,UAAU,CAAc;IACxB,MAAM,CAAc;IACpB,KAAK,CAAS;IAEd,YACE,IAAY,EACZ,UAAyB,EAAE;QAE3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAErD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;QAEtD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE9B,IAAI,CAAC,UAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC;QAEhE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,IAAI,CAAC,KAAa;QACpB,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;IACpC,CAAC;IAED,QAAQ,CAAC,KAA2B;QAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,WAAW,CAAC,KAAkB;QAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAA0C,CAAC,GAAG,KAAK,CAAC;YAC1E,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ export * from "./UIRenderer.ts";
2
+ export * from "./UINode.ts";
3
+ export * from "./UISprite.ts";
4
+ export * from "./UIText.ts";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from "./UIRenderer.js";
2
+ export * from "./UINode.js";
3
+ export * from "./UISprite.js";
4
+ export * from "./UIText.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ export type DeepRequired<T> = Required<{
2
+ [K in keyof T]: T[K] extends Required<T[K]> ? T[K] : DeepRequired<T[K]>;
3
+ }>;
4
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,QAAQ,CAAC;KACpC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACxE,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@jolly-pixel/engine",
3
- "version": "1.0.0",
3
+ "description": "Minimal and opiniated ECS framework on top of three.js.",
4
+ "version": "1.1.1",
4
5
  "type": "module",
5
6
  "main": "dist/index.js",
6
7
  "types": "dist/index.d.ts",
@@ -12,7 +13,8 @@
12
13
  },
13
14
  "publishConfig": {
14
15
  "registry": "https://registry.npmjs.org",
15
- "access": "public"
16
+ "access": "public",
17
+ "provenance": true
16
18
  },
17
19
  "repository": {
18
20
  "type": "git",