dino-ge 1.3.0 → 1.3.2
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/dist/GameObject.d.ts +0 -7
- package/dist/GameObject.js +0 -11
- package/dist/GameObject.js.map +1 -1
- package/dist/RenderingSystem.js +4 -1
- package/dist/RenderingSystem.js.map +1 -1
- package/package.json +1 -1
- package/src/GameObject.ts +4 -18
- package/src/RenderingSystem.ts +5 -1
package/dist/GameObject.d.ts
CHANGED
|
@@ -12,7 +12,6 @@ export default abstract class GameObject {
|
|
|
12
12
|
private _physics;
|
|
13
13
|
private _transform;
|
|
14
14
|
private _tag;
|
|
15
|
-
private _visibility;
|
|
16
15
|
private _eventBus;
|
|
17
16
|
constructor(tag: string, zIndex: number);
|
|
18
17
|
/**
|
|
@@ -45,12 +44,6 @@ export default abstract class GameObject {
|
|
|
45
44
|
*/
|
|
46
45
|
get zIndex(): number;
|
|
47
46
|
set zIndex(val: number);
|
|
48
|
-
/**
|
|
49
|
-
* Whether the object should be rendered.
|
|
50
|
-
* @deprecated Use getComponent(VisibilityComponent).visible
|
|
51
|
-
*/
|
|
52
|
-
get visible(): boolean;
|
|
53
|
-
set visible(val: boolean);
|
|
54
47
|
/**
|
|
55
48
|
* The world-space position of the object.
|
|
56
49
|
* Getter returns world position, setter sets local position.
|
package/dist/GameObject.js
CHANGED
|
@@ -2,7 +2,6 @@ import Engine from './Engine.js';
|
|
|
2
2
|
import PhysicsComponent from './PhysicsComponent.js';
|
|
3
3
|
import TransformComponent from './TransformComponent.js';
|
|
4
4
|
import TagComponent from './TagComponent.js';
|
|
5
|
-
import VisibilityComponent from './VisibilityComponent.js';
|
|
6
5
|
import EventBusComponent from './EventBusComponent.js';
|
|
7
6
|
/**
|
|
8
7
|
* Base class for all entities in the game world.
|
|
@@ -13,12 +12,8 @@ export default class GameObject {
|
|
|
13
12
|
constructor(tag, zIndex) {
|
|
14
13
|
/** Collection of components attached to this entity. */
|
|
15
14
|
this._components = new Map();
|
|
16
|
-
// Initialize with core components for now to maintain backward compatibility.
|
|
17
|
-
// In a pure ECS, components would be added as needed.
|
|
18
15
|
this._tag = new TagComponent(tag, zIndex);
|
|
19
16
|
this.addComponent(this._tag);
|
|
20
|
-
this._visibility = new VisibilityComponent();
|
|
21
|
-
this.addComponent(this._visibility);
|
|
22
17
|
this._physics = new PhysicsComponent();
|
|
23
18
|
this.addComponent(this._physics);
|
|
24
19
|
this._transform = new TransformComponent();
|
|
@@ -62,12 +57,6 @@ export default class GameObject {
|
|
|
62
57
|
*/
|
|
63
58
|
get zIndex() { return this._tag.zIndex; }
|
|
64
59
|
set zIndex(val) { this._tag.zIndex = val; }
|
|
65
|
-
/**
|
|
66
|
-
* Whether the object should be rendered.
|
|
67
|
-
* @deprecated Use getComponent(VisibilityComponent).visible
|
|
68
|
-
*/
|
|
69
|
-
get visible() { return this._visibility.visible; }
|
|
70
|
-
set visible(val) { this._visibility.visible = val; }
|
|
71
60
|
/**
|
|
72
61
|
* The world-space position of the object.
|
|
73
62
|
* Getter returns world position, setter sets local position.
|
package/dist/GameObject.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GameObject.js","sourceRoot":"","sources":["../src/GameObject.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AACrD,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"GameObject.js","sourceRoot":"","sources":["../src/GameObject.ts"],"names":[],"mappings":"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"}
|
package/dist/RenderingSystem.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import System from './System.js';
|
|
2
2
|
import RenderComponent from './RenderComponent.js';
|
|
3
|
+
import VisibilityComponent from './VisibilityComponent.js';
|
|
3
4
|
import Engine from './Engine.js';
|
|
4
5
|
/**
|
|
5
6
|
* A system that processes entities with RenderComponents.
|
|
@@ -39,7 +40,9 @@ export default class RenderingSystem extends System {
|
|
|
39
40
|
object.position.y + object.height > bounds.y) {
|
|
40
41
|
// Find any RenderComponent on the entity
|
|
41
42
|
const renderable = object.getComponent(RenderComponent);
|
|
42
|
-
|
|
43
|
+
const visibility = object.getComponent(VisibilityComponent);
|
|
44
|
+
const isVisible = visibility ? visibility.visible : true;
|
|
45
|
+
if (renderable && isVisible) {
|
|
43
46
|
renderable.draw(this.ctx);
|
|
44
47
|
}
|
|
45
48
|
// Backward compatibility: call draw() if it exists on the object itself
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderingSystem.js","sourceRoot":"","sources":["../src/RenderingSystem.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,eAAe,MAAM,sBAAsB,CAAC;AACnD,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,MAAM;IAGjD,YAAY,GAA6B;QACvC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED;;;OAGG;IACI,UAAU,CAAC,GAA6B;QAC7C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACa,MAAM,CAAC,QAAyB,EAAE,SAAkB,EAAE,QAAiB,KAAK;QAC1F,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAC3C,IAAI,CAAC,GAAG,CAAC,MAA4B,CAAC,KAAK,EAC3C,IAAI,CAAC,GAAG,CAAC,MAA4B,CAAC,MAAM,CAC9C,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAEhB,yBAAyB;QACzB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEzE,iDAAiD;QACjD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnF,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACxB,kBAAkB;YAClB,IACE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK;gBAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;gBAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM;gBAC5C,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,EAC5C,CAAC;gBACD,yCAAyC;gBACzC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;gBACxD,
|
|
1
|
+
{"version":3,"file":"RenderingSystem.js","sourceRoot":"","sources":["../src/RenderingSystem.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/GameObject.ts
CHANGED
|
@@ -4,7 +4,6 @@ import Component from './Component.js';
|
|
|
4
4
|
import PhysicsComponent from './PhysicsComponent.js';
|
|
5
5
|
import TransformComponent from './TransformComponent.js';
|
|
6
6
|
import TagComponent from './TagComponent.js';
|
|
7
|
-
import VisibilityComponent from './VisibilityComponent.js';
|
|
8
7
|
import EventBusComponent from './EventBusComponent.js';
|
|
9
8
|
|
|
10
9
|
/**
|
|
@@ -20,18 +19,12 @@ export default abstract class GameObject {
|
|
|
20
19
|
private _physics: PhysicsComponent;
|
|
21
20
|
private _transform: TransformComponent;
|
|
22
21
|
private _tag: TagComponent;
|
|
23
|
-
private _visibility: VisibilityComponent;
|
|
24
22
|
private _eventBus: EventBusComponent;
|
|
25
23
|
|
|
26
24
|
constructor(tag: string, zIndex: number) {
|
|
27
|
-
// Initialize with core components for now to maintain backward compatibility.
|
|
28
|
-
// In a pure ECS, components would be added as needed.
|
|
29
25
|
this._tag = new TagComponent(tag, zIndex);
|
|
30
26
|
this.addComponent(this._tag);
|
|
31
27
|
|
|
32
|
-
this._visibility = new VisibilityComponent();
|
|
33
|
-
this.addComponent(this._visibility);
|
|
34
|
-
|
|
35
28
|
this._physics = new PhysicsComponent();
|
|
36
29
|
this.addComponent(this._physics);
|
|
37
30
|
|
|
@@ -83,13 +76,6 @@ export default abstract class GameObject {
|
|
|
83
76
|
get zIndex(): number { return this._tag.zIndex; }
|
|
84
77
|
set zIndex(val: number) { this._tag.zIndex = val; }
|
|
85
78
|
|
|
86
|
-
/**
|
|
87
|
-
* Whether the object should be rendered.
|
|
88
|
-
* @deprecated Use getComponent(VisibilityComponent).visible
|
|
89
|
-
*/
|
|
90
|
-
get visible(): boolean { return this._visibility.visible; }
|
|
91
|
-
set visible(val: boolean) { this._visibility.visible = val; }
|
|
92
|
-
|
|
93
79
|
/**
|
|
94
80
|
* The world-space position of the object.
|
|
95
81
|
* Getter returns world position, setter sets local position.
|
|
@@ -165,7 +151,7 @@ export default abstract class GameObject {
|
|
|
165
151
|
|
|
166
152
|
// Also index by RenderComponent if it is one, to allow abstract querying.
|
|
167
153
|
// Use flag instead of instanceof to work across potential module duplications.
|
|
168
|
-
if ((component as unknown as { isRenderComponent: boolean }).isRenderComponent) {
|
|
154
|
+
if ((component as unknown as { isRenderComponent: boolean; }).isRenderComponent) {
|
|
169
155
|
this._components.set('RenderComponent', component);
|
|
170
156
|
}
|
|
171
157
|
|
|
@@ -176,7 +162,7 @@ export default abstract class GameObject {
|
|
|
176
162
|
* Removes a component from this entity by its class.
|
|
177
163
|
* @param componentClass The class of the component to remove.
|
|
178
164
|
*/
|
|
179
|
-
removeComponent<T extends Component>(componentClass: { new
|
|
165
|
+
removeComponent<T extends Component>(componentClass: { new(...args: unknown[]): T; }) {
|
|
180
166
|
this._components.delete(componentClass.name);
|
|
181
167
|
}
|
|
182
168
|
|
|
@@ -185,7 +171,7 @@ export default abstract class GameObject {
|
|
|
185
171
|
* @param componentClass The class of the component to check for.
|
|
186
172
|
*/
|
|
187
173
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
188
|
-
hasComponent<T extends Component>(componentClass: Function & { prototype: T }): boolean {
|
|
174
|
+
hasComponent<T extends Component>(componentClass: Function & { prototype: T; }): boolean {
|
|
189
175
|
return this._components.has(componentClass.name);
|
|
190
176
|
}
|
|
191
177
|
|
|
@@ -193,7 +179,7 @@ export default abstract class GameObject {
|
|
|
193
179
|
* @param componentClass The class of the component to retrieve.
|
|
194
180
|
*/
|
|
195
181
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
196
|
-
getComponent<T extends Component>(componentClass: Function & { prototype: T }): T | undefined {
|
|
182
|
+
getComponent<T extends Component>(componentClass: Function & { prototype: T; }): T | undefined {
|
|
197
183
|
return this._components.get(componentClass.name) as T;
|
|
198
184
|
}
|
|
199
185
|
|
package/src/RenderingSystem.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import System from './System.js';
|
|
2
2
|
import type GameObject from './GameObject.js';
|
|
3
3
|
import RenderComponent from './RenderComponent.js';
|
|
4
|
+
import VisibilityComponent from './VisibilityComponent.js';
|
|
4
5
|
import Engine from './Engine.js';
|
|
5
6
|
|
|
6
7
|
/**
|
|
@@ -54,7 +55,10 @@ export default class RenderingSystem extends System {
|
|
|
54
55
|
) {
|
|
55
56
|
// Find any RenderComponent on the entity
|
|
56
57
|
const renderable = object.getComponent(RenderComponent);
|
|
57
|
-
|
|
58
|
+
const visibility = object.getComponent(VisibilityComponent);
|
|
59
|
+
const isVisible = visibility ? visibility.visible : true;
|
|
60
|
+
|
|
61
|
+
if (renderable && isVisible) {
|
|
58
62
|
renderable.draw(this.ctx);
|
|
59
63
|
}
|
|
60
64
|
|