mani-game-engine 1.0.0-pre.82 → 1.0.0-pre.83

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/lib/entity.js CHANGED
@@ -66,24 +66,34 @@ class Entity {
66
66
  return this._dynamicComponents.has(componentClass);
67
67
  }
68
68
  removeDynamicComponentClass(componentClass) {
69
- var _a;
70
- const systemContexts = (_a = this.gameEngine) === null || _a === void 0 ? void 0 : _a['entitySystemMap'].get(this);
71
- systemContexts === null || systemContexts === void 0 ? void 0 : systemContexts.forEach(systemContext => {
72
- var _a, _b, _c;
73
- const systemToDependencies = (_a = this.gameEngine) === null || _a === void 0 ? void 0 : _a.injector['dynamicComponentDependencyMap'];
74
- const dependencies = systemToDependencies === null || systemToDependencies === void 0 ? void 0 : systemToDependencies.get(systemContext.system.constructor);
75
- if (!dependencies)
76
- return;
77
- if (dependencies.some(dependency => dependency.type === componentClass)) {
78
- (_c = (_b = this.gameEngine) === null || _b === void 0 ? void 0 : _b['disposeContext']) === null || _c === void 0 ? void 0 : _c.call(_b, systemContext);
79
- systemContexts === null || systemContexts === void 0 ? void 0 : systemContexts.delete(systemContext);
69
+ if (!this.gameEngine) {
70
+ if (!this._dynamicComponents.has(componentClass)) {
71
+ throw new Error('component not found: ' + JSON.stringify(componentClass));
80
72
  }
81
- });
82
- const component = this._dynamicComponents.get(componentClass);
83
- if (!this._dynamicComponents.delete(componentClass)) {
84
- throw new Error('component not found: ' + JSON.stringify(componentClass));
73
+ this._dynamicComponents.delete(componentClass);
74
+ this.dynamicComponentRemoved.dispatch(this._dynamicComponents.get(componentClass));
75
+ return;
85
76
  }
86
- this.dynamicComponentRemoved.dispatch(component);
77
+ this.gameEngine.maybeDefer(() => {
78
+ var _a;
79
+ const systemContexts = (_a = this.gameEngine) === null || _a === void 0 ? void 0 : _a['entitySystemMap'].get(this);
80
+ systemContexts === null || systemContexts === void 0 ? void 0 : systemContexts.forEach(systemContext => {
81
+ var _a, _b, _c;
82
+ const systemToDependencies = (_a = this.gameEngine) === null || _a === void 0 ? void 0 : _a.injector['dynamicComponentDependencyMap'];
83
+ const dependencies = systemToDependencies === null || systemToDependencies === void 0 ? void 0 : systemToDependencies.get(systemContext.system.constructor);
84
+ if (!dependencies)
85
+ return;
86
+ if (dependencies.some(dependency => dependency.type === componentClass)) {
87
+ (_c = (_b = this.gameEngine) === null || _b === void 0 ? void 0 : _b['disposeContext']) === null || _c === void 0 ? void 0 : _c.call(_b, systemContext);
88
+ systemContexts === null || systemContexts === void 0 ? void 0 : systemContexts.delete(systemContext);
89
+ }
90
+ });
91
+ const component = this._dynamicComponents.get(componentClass);
92
+ if (!this._dynamicComponents.delete(componentClass)) {
93
+ throw new Error('component not found: ' + JSON.stringify(componentClass));
94
+ }
95
+ this.dynamicComponentRemoved.dispatch(component);
96
+ });
87
97
  }
88
98
  removeDynamicComponent(component) {
89
99
  this.removeDynamicComponentClass(component.constructor);
package/lib/entity.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mani-game-engine",
3
3
  "author": "Jan Mankopf",
4
- "version": "1.0.0-pre.82",
4
+ "version": "1.0.0-pre.83",
5
5
  "description": "entity component system game engine for typescript",
6
6
  "private": false,
7
7
  "scripts": {
package/src/entity.ts CHANGED
@@ -85,22 +85,33 @@ export class Entity {
85
85
 
86
86
  // TODO: move the logic to gameEngine?
87
87
  removeDynamicComponentClass<T extends Class>(componentClass: T) {
88
- const systemContexts = this.gameEngine?.['entitySystemMap'].get(this);
89
- systemContexts?.forEach(systemContext => {
90
- const systemToDependencies = this.gameEngine?.injector['dynamicComponentDependencyMap'];
91
- const dependencies = systemToDependencies?.get((systemContext.system as any).constructor);
92
- if (!dependencies) return;
93
- if (dependencies.some(dependency => dependency.type === componentClass)) {
94
- this.gameEngine?.['disposeContext']?.(systemContext);
95
- systemContexts?.delete(systemContext);
88
+ if (!this.gameEngine) {
89
+ if (!this._dynamicComponents.has(componentClass)) {
90
+ throw new Error('component not found: ' + JSON.stringify(componentClass));
96
91
  }
97
- });
98
- const component = this._dynamicComponents.get(componentClass);
99
- if (!this._dynamicComponents.delete(componentClass)) {
100
- throw new Error('component not found: ' + JSON.stringify(componentClass));
92
+ this._dynamicComponents.delete(componentClass);
93
+ this.dynamicComponentRemoved.dispatch(this._dynamicComponents.get(componentClass)!);
94
+ return;
101
95
  }
102
- this.dynamicComponentRemoved.dispatch(component);
103
- }
96
+
97
+ this.gameEngine.maybeDefer(() => {
98
+ const systemContexts = this.gameEngine?.['entitySystemMap'].get(this);
99
+ systemContexts?.forEach(systemContext => {
100
+ const systemToDependencies = this.gameEngine?.injector['dynamicComponentDependencyMap'];
101
+ const dependencies = systemToDependencies?.get((systemContext.system as any).constructor);
102
+ if (!dependencies) return;
103
+ if (dependencies.some(dependency => dependency.type === componentClass)) {
104
+ this.gameEngine?.['disposeContext']?.(systemContext);
105
+ systemContexts?.delete(systemContext);
106
+ }
107
+ });
108
+ const component = this._dynamicComponents.get(componentClass);
109
+ if (!this._dynamicComponents.delete(componentClass)) {
110
+ throw new Error('component not found: ' + JSON.stringify(componentClass));
111
+ }
112
+ this.dynamicComponentRemoved.dispatch(component);
113
+ },
114
+ );}
104
115
 
105
116
  removeDynamicComponent<T extends Class>(component: InstanceType<T>) {
106
117
  this.removeDynamicComponentClass(component.constructor as T);