dino-ge 1.3.0 → 1.3.3
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 -8
- package/dist/GameObject.js +0 -14
- 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 -23
- package/src/RenderingSystem.ts +5 -1
package/dist/GameObject.d.ts
CHANGED
|
@@ -9,10 +9,8 @@ export default abstract class GameObject {
|
|
|
9
9
|
/** Collection of components attached to this entity. */
|
|
10
10
|
private _components;
|
|
11
11
|
/** Internal components for backward compatibility and core logic. */
|
|
12
|
-
private _physics;
|
|
13
12
|
private _transform;
|
|
14
13
|
private _tag;
|
|
15
|
-
private _visibility;
|
|
16
14
|
private _eventBus;
|
|
17
15
|
constructor(tag: string, zIndex: number);
|
|
18
16
|
/**
|
|
@@ -45,12 +43,6 @@ export default abstract class GameObject {
|
|
|
45
43
|
*/
|
|
46
44
|
get zIndex(): number;
|
|
47
45
|
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
46
|
/**
|
|
55
47
|
* The world-space position of the object.
|
|
56
48
|
* Getter returns world position, setter sets local position.
|
package/dist/GameObject.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Engine from './Engine.js';
|
|
2
|
-
import PhysicsComponent from './PhysicsComponent.js';
|
|
3
2
|
import TransformComponent from './TransformComponent.js';
|
|
4
3
|
import TagComponent from './TagComponent.js';
|
|
5
|
-
import VisibilityComponent from './VisibilityComponent.js';
|
|
6
4
|
import EventBusComponent from './EventBusComponent.js';
|
|
7
5
|
/**
|
|
8
6
|
* Base class for all entities in the game world.
|
|
@@ -13,14 +11,8 @@ export default class GameObject {
|
|
|
13
11
|
constructor(tag, zIndex) {
|
|
14
12
|
/** Collection of components attached to this entity. */
|
|
15
13
|
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
14
|
this._tag = new TagComponent(tag, zIndex);
|
|
19
15
|
this.addComponent(this._tag);
|
|
20
|
-
this._visibility = new VisibilityComponent();
|
|
21
|
-
this.addComponent(this._visibility);
|
|
22
|
-
this._physics = new PhysicsComponent();
|
|
23
|
-
this.addComponent(this._physics);
|
|
24
16
|
this._transform = new TransformComponent();
|
|
25
17
|
this.addComponent(this._transform);
|
|
26
18
|
this._eventBus = new EventBusComponent();
|
|
@@ -62,12 +54,6 @@ export default class GameObject {
|
|
|
62
54
|
*/
|
|
63
55
|
get zIndex() { return this._tag.zIndex; }
|
|
64
56
|
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
57
|
/**
|
|
72
58
|
* The world-space position of the object.
|
|
73
59
|
* 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,
|
|
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
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import Engine from './Engine.js';
|
|
2
2
|
import Vector2 from './Vector2.js';
|
|
3
3
|
import Component from './Component.js';
|
|
4
|
-
import PhysicsComponent from './PhysicsComponent.js';
|
|
5
4
|
import TransformComponent from './TransformComponent.js';
|
|
6
5
|
import TagComponent from './TagComponent.js';
|
|
7
|
-
import VisibilityComponent from './VisibilityComponent.js';
|
|
8
6
|
import EventBusComponent from './EventBusComponent.js';
|
|
9
7
|
|
|
10
8
|
/**
|
|
@@ -17,24 +15,14 @@ export default abstract class GameObject {
|
|
|
17
15
|
private _components: Map<string, Component> = new Map();
|
|
18
16
|
|
|
19
17
|
/** Internal components for backward compatibility and core logic. */
|
|
20
|
-
private _physics: PhysicsComponent;
|
|
21
18
|
private _transform: TransformComponent;
|
|
22
19
|
private _tag: TagComponent;
|
|
23
|
-
private _visibility: VisibilityComponent;
|
|
24
20
|
private _eventBus: EventBusComponent;
|
|
25
21
|
|
|
26
22
|
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
23
|
this._tag = new TagComponent(tag, zIndex);
|
|
30
24
|
this.addComponent(this._tag);
|
|
31
25
|
|
|
32
|
-
this._visibility = new VisibilityComponent();
|
|
33
|
-
this.addComponent(this._visibility);
|
|
34
|
-
|
|
35
|
-
this._physics = new PhysicsComponent();
|
|
36
|
-
this.addComponent(this._physics);
|
|
37
|
-
|
|
38
26
|
this._transform = new TransformComponent();
|
|
39
27
|
this.addComponent(this._transform);
|
|
40
28
|
|
|
@@ -83,13 +71,6 @@ export default abstract class GameObject {
|
|
|
83
71
|
get zIndex(): number { return this._tag.zIndex; }
|
|
84
72
|
set zIndex(val: number) { this._tag.zIndex = val; }
|
|
85
73
|
|
|
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
74
|
/**
|
|
94
75
|
* The world-space position of the object.
|
|
95
76
|
* Getter returns world position, setter sets local position.
|
|
@@ -165,7 +146,7 @@ export default abstract class GameObject {
|
|
|
165
146
|
|
|
166
147
|
// Also index by RenderComponent if it is one, to allow abstract querying.
|
|
167
148
|
// Use flag instead of instanceof to work across potential module duplications.
|
|
168
|
-
if ((component as unknown as { isRenderComponent: boolean }).isRenderComponent) {
|
|
149
|
+
if ((component as unknown as { isRenderComponent: boolean; }).isRenderComponent) {
|
|
169
150
|
this._components.set('RenderComponent', component);
|
|
170
151
|
}
|
|
171
152
|
|
|
@@ -176,7 +157,7 @@ export default abstract class GameObject {
|
|
|
176
157
|
* Removes a component from this entity by its class.
|
|
177
158
|
* @param componentClass The class of the component to remove.
|
|
178
159
|
*/
|
|
179
|
-
removeComponent<T extends Component>(componentClass: { new
|
|
160
|
+
removeComponent<T extends Component>(componentClass: { new(...args: unknown[]): T; }) {
|
|
180
161
|
this._components.delete(componentClass.name);
|
|
181
162
|
}
|
|
182
163
|
|
|
@@ -185,7 +166,7 @@ export default abstract class GameObject {
|
|
|
185
166
|
* @param componentClass The class of the component to check for.
|
|
186
167
|
*/
|
|
187
168
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
188
|
-
hasComponent<T extends Component>(componentClass: Function & { prototype: T }): boolean {
|
|
169
|
+
hasComponent<T extends Component>(componentClass: Function & { prototype: T; }): boolean {
|
|
189
170
|
return this._components.has(componentClass.name);
|
|
190
171
|
}
|
|
191
172
|
|
|
@@ -193,7 +174,7 @@ export default abstract class GameObject {
|
|
|
193
174
|
* @param componentClass The class of the component to retrieve.
|
|
194
175
|
*/
|
|
195
176
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
196
|
-
getComponent<T extends Component>(componentClass: Function & { prototype: T }): T | undefined {
|
|
177
|
+
getComponent<T extends Component>(componentClass: Function & { prototype: T; }): T | undefined {
|
|
197
178
|
return this._components.get(componentClass.name) as T;
|
|
198
179
|
}
|
|
199
180
|
|
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
|
|