@woosh/meep-engine 2.120.2 → 2.120.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.
Files changed (66) hide show
  1. package/README.md +1 -1
  2. package/editor/process/symbolic/makeGridPositionSymbolDisplay.js +2 -1
  3. package/editor/view/ecs/EntityEditor.js +2 -1
  4. package/editor/view/makeEntityDecorators.js +5 -5
  5. package/package.json +1 -1
  6. package/src/core/binary/BitSet.d.ts +59 -38
  7. package/src/core/binary/BitSet.d.ts.map +1 -1
  8. package/src/core/binary/BitSet.js +76 -55
  9. package/src/core/function/noop.d.ts +4 -1
  10. package/src/core/function/noop.d.ts.map +1 -1
  11. package/src/core/function/noop.js +4 -1
  12. package/src/core/geom/Vector4.d.ts.map +1 -1
  13. package/src/core/geom/Vector4.js +27 -5
  14. package/src/core/math/gaussian.d.ts +5 -4
  15. package/src/core/math/gaussian.d.ts.map +1 -1
  16. package/src/core/math/gaussian.js +5 -4
  17. package/src/core/math/matrix/SquareMatrix.d.ts +55 -32
  18. package/src/core/math/matrix/SquareMatrix.d.ts.map +1 -1
  19. package/src/core/math/matrix/SquareMatrix.js +59 -33
  20. package/src/core/math/spline/spline_hermite3_to_bezier.d.ts +6 -5
  21. package/src/core/math/spline/spline_hermite3_to_bezier.d.ts.map +1 -1
  22. package/src/core/math/spline/spline_hermite3_to_bezier.js +15 -11
  23. package/src/core/model/ModuleRegistry.d.ts.map +1 -1
  24. package/src/core/model/ModuleRegistry.js +2 -2
  25. package/src/engine/EngineConfiguration.js +1 -1
  26. package/src/engine/ecs/Entity.d.ts.map +1 -1
  27. package/src/engine/ecs/Entity.js +42 -2
  28. package/src/engine/ecs/EntityBuilderUtils.js +1 -1
  29. package/src/engine/ecs/EntityComponentDataset.d.ts +1 -1
  30. package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
  31. package/src/engine/ecs/EntityComponentDataset.js +25 -4
  32. package/src/engine/ecs/EntityManager.d.ts.map +1 -1
  33. package/src/engine/ecs/EntityManager.js +6 -12
  34. package/src/engine/ecs/EntityReference.d.ts +14 -0
  35. package/src/engine/ecs/EntityReference.d.ts.map +1 -1
  36. package/src/engine/ecs/EntityReference.js +18 -0
  37. package/src/engine/ecs/EventType.d.ts +10 -0
  38. package/src/engine/ecs/EventType.d.ts.map +1 -0
  39. package/src/engine/ecs/EventType.js +10 -0
  40. package/src/engine/ecs/System.d.ts.map +1 -1
  41. package/src/engine/ecs/System.js +1 -12
  42. package/src/engine/ecs/computeSystemName.d.ts +8 -0
  43. package/src/engine/ecs/computeSystemName.d.ts.map +1 -0
  44. package/src/engine/ecs/computeSystemName.js +10 -0
  45. package/src/engine/ecs/parent/ParentEntitySystem.js +1 -1
  46. package/src/engine/ecs/terrain/TerrainClouds.d.ts +43 -10
  47. package/src/engine/ecs/terrain/TerrainClouds.d.ts.map +1 -1
  48. package/src/engine/ecs/terrain/TerrainClouds.js +38 -2
  49. package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
  50. package/src/engine/ecs/terrain/ecs/Terrain.js +6 -0
  51. package/src/engine/ecs/terrain/ecs/makeTerrainWorkerProxy.d.ts.map +1 -1
  52. package/src/engine/ecs/terrain/ecs/makeTerrainWorkerProxy.js +3 -1
  53. package/src/engine/graphics/ecs/path/ribbon/RibbonPathBuilder.d.ts.map +1 -1
  54. package/src/engine/graphics/ecs/path/ribbon/RibbonPathBuilder.js +7 -7
  55. package/src/engine/input/devices/InputDeviceSwitch.d.ts +4 -0
  56. package/src/engine/input/devices/InputDeviceSwitch.d.ts.map +1 -1
  57. package/src/engine/input/devices/InputDeviceSwitch.js +4 -2
  58. package/src/engine/input/devices/KeyCodes.d.ts.map +1 -1
  59. package/src/engine/input/devices/KeyCodes.js +1 -0
  60. package/src/engine/input/devices/KeyboardDevice.d.ts.map +1 -1
  61. package/src/engine/input/devices/KeyboardDevice.js +28 -3
  62. package/src/engine/knowledge/database/StaticKnowledgeDataTable.d.ts.map +1 -1
  63. package/src/engine/knowledge/database/StaticKnowledgeDataTable.js +3 -0
  64. package/src/engine/ui/notification/NotificationManager.d.ts.map +1 -1
  65. package/src/engine/ui/notification/NotificationManager.js +2 -1
  66. package/src/engine/ecs/transform/Transform.editor.schema.json +0 -16
@@ -9,7 +9,8 @@ import {
9
9
  import Signal from "../../core/events/signal/Signal.js";
10
10
  import { SignalHandler } from "../../core/events/signal/SignalHandler.js";
11
11
  import { max3 } from "../../core/math/max3.js";
12
- import { EventType } from "./EntityManager.js";
12
+
13
+ import { EventType } from "./EventType.js";
13
14
 
14
15
  /**
15
16
  *
@@ -110,6 +111,18 @@ const scratch_array_1 = [];
110
111
  * Entities are just integer IDs and components are stored in a virtual table, where each component type has a separate column and each entity is a row in that table
111
112
  * It is valid for entities to have no components or to have every possible component
112
113
  * Generally the entity IDs are compacted, meaning that when an entity is removed - it's ID will be later reused
114
+ * Typically you would use {@link Entity} helper class instead of working directly with the dataset as it offers a higher-level API
115
+ *
116
+ * @example
117
+ * const ecd = new EntityComponentDataset();
118
+ * // create an entity
119
+ * const entityId = ecd.createEntity();
120
+ *
121
+ * // add a component to your entity
122
+ * ecd.addComponentToEntity(entityId, myComponentInstance);
123
+ *
124
+ * // destroy the entity
125
+ * ecd.removeEntity(entityId);
113
126
  */
114
127
  export class EntityComponentDataset {
115
128
 
@@ -769,6 +782,8 @@ export class EntityComponentDataset {
769
782
  * @returns {number}
770
783
  */
771
784
  getEntityGeneration(entity_id) {
785
+ assert.isNonNegativeInteger(entity_id, 'entity_id');
786
+
772
787
  return this.entityGeneration[entity_id];
773
788
  }
774
789
 
@@ -843,9 +858,9 @@ export class EntityComponentDataset {
843
858
  }
844
859
 
845
860
  /**
846
- *
861
+ * Remove entity from the dataset, effectively destroying it from the world
847
862
  * @param {number} entity_id
848
- * @returns {boolean}
863
+ * @returns {boolean} true if entity was removed, false if it doesn't exist
849
864
  */
850
865
  removeEntity(entity_id) {
851
866
  if (!this.entityExists(entity_id)) {
@@ -1166,7 +1181,13 @@ export class EntityComponentDataset {
1166
1181
 
1167
1182
  /**
1168
1183
  * Performs traversal on a subset of entities which have specified components.
1169
- * @example traverseEntities([Transform,Renderable,Tag],function(transform, renderable, tag, entity){ ... }, this);
1184
+ * @example
1185
+ * ecd.traverseEntities(
1186
+ * [Transform, Renderable, Tag], // Component classes to match
1187
+ * (transform, renderable, tag, entity ) => { // actual component instances along with entity ID
1188
+ * // do something
1189
+ * }
1190
+ * );
1170
1191
  * @param {Array} classes
1171
1192
  * @param {function(...args):boolean} visitor Visitor can return optional "false" to terminate traversal earlier
1172
1193
  * @param {object} [thisArg] specifies context object on which callbacks are to be called, optional
@@ -1 +1 @@
1
- {"version":3,"file":"EntityManager.d.ts","sourceRoot":"","sources":["../../../../src/engine/ecs/EntityManager.js"],"names":[],"mappings":";;;wBAcU,MAAM;;;;;;iCAWN,MAAM;;;;;;;;;AAWhB;;;GAGG;AACH;IAEI;;;OAGG;IACH,kBAFU,iCAAQ,CAEL;IAEb;;;;OAIG;IACH,uCAA2B;IAE3B;;;;OAIG;IACH,iCAAqB;IAErB;;OAEG;IACH;;;QAGI;;WAEG;qBADO,MAAM,iCAAQ;;MAI1B;IAEF;;;OAGG;IACH,OAFU,kBAAkB,CAEO;IAEnC;;;;;;OAMG;IACH,gDAA2C;IAE3C;;;;OAIG;IACH,qBAFU,MAAM,CAEY;IAE5B;;;;;OAKG;IACH,wCAFU,MAAM,CAE4B;IAE5C;;;OAGG;IACH,SAFU,sBAAsB,CAEjB;IAEf;;;;;OAKG;IACH,uCAAsC;IAEtC;;;OAGG;IACH,6BA8EC;IAED,sBAcC;IAED;;;OAGG;IACH,uBAFa,KAAK,EAAE,CAuBnB;IAED;;;;;OAKG;IACH,uBAJW,sBAAsB,QA0BhC;IAED;;;;OAIG;IACH,UAJa,CAAC,eACH,KAAK,CAAC,CAAC,CAAC,GACN,OAAO,CAInB;IAED;;;;OAIG;IACH,UAJa,CAAC,eACH,KAAK,CAAC,CAAC,CAAC,GACN,CAAC,GAAC,IAAI,CAgBlB;IAED;;;;;OAKG;IACH,wBAJa,CAAC,aACH,MAAM,GACJ,IAAI,GAAC,KAAK,CAAC,CAAC,CAAC,CAezB;IAGD;;;OAGG;IACH,oBAFW,MAAM,QAkEhB;IAED;;;;;OAKG;IACH,iEA0EC;IAED;;;;OAIG;IACH,uDAFa,OAAO,CAAC,OAAO,CAAC,CAyC5B;IAED;;;;;OAKG;IACH,mBA6BC;IAED;;;;;OAKG;IACH,oBAwCC;IAED;;;;OAIG;IACH,gEAwEC;IAED;;;;OAIG;IACH,2BAHW,KAAK,GACH,OAAO,iCAAS,CA0B5B;IAED;;;;;OAKG;IACH,kCAJW,KAAK,SACL,WAAW,GACT,OAAO,iCAAS,CAsB5B;IAED;;;;OAIG;IACH,iEAkEC;CACJ;uBA7yBsD,aAAa;mBANjD,oCAAoC"}
1
+ {"version":3,"file":"EntityManager.d.ts","sourceRoot":"","sources":["../../../../src/engine/ecs/EntityManager.js"],"names":[],"mappings":"iCAeU,MAAM;;;;;;;;;AAWhB;;;GAGG;AACH;IAEI;;;OAGG;IACH,kBAFU,iCAAQ,CAEL;IAEb;;;;OAIG;IACH,uCAA2B;IAE3B;;;;OAIG;IACH,iCAAqB;IAErB;;OAEG;IACH;;;QAGI;;WAEG;qBADO,MAAM,iCAAQ;;MAI1B;IAEF;;;OAGG;IACH,OAFU,kBAAkB,CAEO;IAEnC;;;;;;OAMG;IACH,gDAA2C;IAE3C;;;;OAIG;IACH,qBAFU,MAAM,CAEY;IAE5B;;;;;OAKG;IACH,wCAFU,MAAM,CAE4B;IAE5C;;;OAGG;IACH,SAFU,sBAAsB,CAEjB;IAEf;;;;;OAKG;IACH,uCAAsC;IAEtC;;;OAGG;IACH,6BA8EC;IAED,sBAcC;IAED;;;OAGG;IACH,uBAFa,KAAK,EAAE,CAuBnB;IAED;;;;;OAKG;IACH,uBAJW,sBAAsB,QA0BhC;IAED;;;;OAIG;IACH,UAJa,CAAC,eACH,KAAK,CAAC,CAAC,CAAC,GACN,OAAO,CAInB;IAED;;;;OAIG;IACH,UAJa,CAAC,eACH,KAAK,CAAC,CAAC,CAAC,GACN,CAAC,GAAC,IAAI,CAgBlB;IAED;;;;;OAKG;IACH,wBAJa,CAAC,aACH,MAAM,GACJ,IAAI,GAAC,KAAK,CAAC,CAAC,CAAC,CAezB;IAGD;;;OAGG;IACH,oBAFW,MAAM,QAkEhB;IAED;;;;;OAKG;IACH,iEA0EC;IAED;;;;OAIG;IACH,uDAFa,OAAO,CAAC,OAAO,CAAC,CAyC5B;IAED;;;;;OAKG;IACH,mBA6BC;IAED;;;;;OAKG;IACH,oBAwCC;IAED;;;;OAIG;IACH,gEAwEC;IAED;;;;OAIG;IACH,2BAHW,KAAK,GACH,OAAO,iCAAS,CA0B5B;IAED;;;;;OAKG;IACH,kCAJW,KAAK,SACL,WAAW,GACT,OAAO,iCAAS,CAsB5B;IAED;;;;OAIG;IACH,iEAsEC;CACJ;uBAtyBmC,aAAa;mBAP9B,oCAAoC"}
@@ -5,22 +5,12 @@ import { IllegalStateException } from "../../core/fsm/exceptions/IllegalStateExc
5
5
 
6
6
  import { noop } from "../../core/function/noop.js";
7
7
  import { ResourceAccessKind } from "../../core/model/ResourceAccessKind.js";
8
+ import { computeSystemName } from "./computeSystemName.js";
8
9
  import { EntityObserver } from "./EntityObserver.js";
9
- import { computeSystemName, System, SystemState } from "./System.js";
10
+ import { System, SystemState } from "./System.js";
10
11
  import { computeSystemComponentDependencyGraph } from "./system/computeSystemComponentDependencyGraph.js";
11
12
  import { validateSystem } from "./validateSystem.js";
12
13
 
13
- /**
14
- *
15
- * @enum {string}
16
- * @readonly
17
- */
18
- export const EventType = {
19
- EntityRemoved: "entityRemoved",
20
- ComponentAdded: "componentAdded",
21
- ComponentRemoved: "componentRemoved"
22
- };
23
-
24
14
  /**
25
15
  * @readonly
26
16
  * @enum {number}
@@ -753,6 +743,10 @@ export class EntityManager {
753
743
  * @param {function} errorCallback
754
744
  */
755
745
  shutdown(readyCallback, errorCallback) {
746
+ if(this.state !== EntityManagerState.Running){
747
+ throw new IllegalStateException(`System is wrong state, expected '${EntityManagerState.Running}'`);
748
+ }
749
+
756
750
  this.state = EntityManagerState.Stopping;
757
751
 
758
752
  if (this.dataset !== null) {
@@ -1,6 +1,20 @@
1
1
  /**
2
2
  * Uniquely identifies an entity by both its ID and generation.
3
3
  * Lets us distinguish between two entities with the same ID that were created at different times
4
+ *
5
+ * @example
6
+ * // 1. Get your EntityComponentDataset to where you manager entities.
7
+ * const ecd = ... ; //EntityComponentDataset
8
+ *
9
+ * // 2. Create an entity (we'll get an ID). Or use an existing one.
10
+ * const entityId = ecd.createEntity(); // Let's say this returns ID 1, generation 0
11
+ *
12
+ * // 3. Create an EntityReference and bind it to the entity.
13
+ * const entityRef = EntityReference.bind(ecd, entityId);
14
+ *
15
+ * // 4. After you no longer need the entity - destroy the entity via reference.
16
+ * entityRef.destroy(ecd);
17
+ *
4
18
  */
5
19
  export class EntityReference {
6
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"EntityReference.d.ts","sourceRoot":"","sources":["../../../../src/engine/ecs/EntityReference.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH;IAiHI;;;;;OAKG;IACH,gBAJW,MAAM,cACN,MAAM,GACL,eAAe,CAQ1B;IAED;;;;;OAKG;IACH,iBAJW,sBAAsB,MACtB,MAAM,GACJ,eAAe,CAQ3B;IAzID;;;;OAIG;IACH,IAFU,MAAM,CAET;IAEP;;;;OAIG;IACH,YAFU,MAAM,CAED;IAEf;;;OAGG;IACH,YAFW,eAAe,QAKzB;IAED;;;OAGG;IACH,SAFa,eAAe,CAQ3B;IAED;;;OAGG;IACH,QAFY,MAAM,CAIjB;IAED;;;;OAIG;IACH,cAHW,eAAe,GACd,OAAO,CAMlB;IAED;;;;OAIG;IACH,YAHW,sBAAsB,GACpB,OAAO,CAQnB;IAED;;;;;OAKG;IACH,aAHW,sBAAsB,GACpB,OAAO,CASnB;IAED;;;;OAIG;IACH,UAHW,sBAAsB,UACtB,MAAM,QAShB;IAED;;;;OAIG;IACH,SAHW,MAAM,cACN,MAAM,QAUhB;IA+BL;;;OAGG;IACH,4BAFU,OAAO,CAE0B;CAN1C;;cAWS,eAAe"}
1
+ {"version":3,"file":"EntityReference.d.ts","sourceRoot":"","sources":["../../../../src/engine/ecs/EntityReference.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH;IAqHI;;;;;OAKG;IACH,gBAJW,MAAM,cACN,MAAM,GACL,eAAe,CAQ1B;IAED;;;;;OAKG;IACH,iBAJW,sBAAsB,MACtB,MAAM,GACJ,eAAe,CAQ3B;IA7ID;;;;OAIG;IACH,IAFU,MAAM,CAET;IAEP;;;;OAIG;IACH,YAFU,MAAM,CAED;IAEf;;;OAGG;IACH,YAFW,eAAe,QAKzB;IAED;;;OAGG;IACH,SAFa,eAAe,CAQ3B;IAED;;;OAGG;IACH,QAFY,MAAM,CAIjB;IAED;;;;OAIG;IACH,cAHW,eAAe,GACd,OAAO,CAMlB;IAED;;;;OAIG;IACH,YAHW,sBAAsB,GACpB,OAAO,CAYnB;IAED;;;;;OAKG;IACH,aAHW,sBAAsB,GACpB,OAAO,CASnB;IAED;;;;OAIG;IACH,UAHW,sBAAsB,UACtB,MAAM,QAShB;IAED;;;;OAIG;IACH,SAHW,MAAM,cACN,MAAM,QAUhB;IA+BL;;;OAGG;IACH,4BAFU,OAAO,CAE0B;CAN1C;;cAWS,eAAe"}
@@ -3,6 +3,20 @@ import { assert } from "../../core/assert.js";
3
3
  /**
4
4
  * Uniquely identifies an entity by both its ID and generation.
5
5
  * Lets us distinguish between two entities with the same ID that were created at different times
6
+ *
7
+ * @example
8
+ * // 1. Get your EntityComponentDataset to where you manager entities.
9
+ * const ecd = ... ; //EntityComponentDataset
10
+ *
11
+ * // 2. Create an entity (we'll get an ID). Or use an existing one.
12
+ * const entityId = ecd.createEntity(); // Let's say this returns ID 1, generation 0
13
+ *
14
+ * // 3. Create an EntityReference and bind it to the entity.
15
+ * const entityRef = EntityReference.bind(ecd, entityId);
16
+ *
17
+ * // 4. After you no longer need the entity - destroy the entity via reference.
18
+ * entityRef.destroy(ecd);
19
+ *
6
20
  */
7
21
  export class EntityReference {
8
22
 
@@ -66,6 +80,10 @@ export class EntityReference {
66
80
  * @returns {boolean}
67
81
  */
68
82
  verify(ecd) {
83
+ if (this.id < 0) {
84
+ // special case
85
+ return false;
86
+ }
69
87
 
70
88
  return ecd.entityExists(this.id)
71
89
  && this.generation === ecd.getEntityGeneration(this.id)
@@ -0,0 +1,10 @@
1
+ /**
2
+ * *
3
+ */
4
+ export type EventType = string;
5
+ export namespace EventType {
6
+ let EntityRemoved: string;
7
+ let ComponentAdded: string;
8
+ let ComponentRemoved: string;
9
+ }
10
+ //# sourceMappingURL=EventType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventType.d.ts","sourceRoot":"","sources":["../../../../src/engine/ecs/EventType.js"],"names":[],"mappings":";;;wBAEU,MAAM"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Special set of ECD events
3
+ * @enum {string}
4
+ * @readonly
5
+ */
6
+ export const EventType = {
7
+ EntityRemoved: "entityRemoved",
8
+ ComponentAdded: "componentAdded",
9
+ ComponentRemoved: "componentRemoved"
10
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"System.d.ts","sourceRoot":"","sources":["../../../../src/engine/ecs/System.js"],"names":[],"mappings":"0BA4JU,MAAM;;;;;;;;AAtJhB;;;GAGG;AACH,oBAFa,CAAC;IAIV;;;OAGG;IACH,yBAFU,aAAa,CAEF;IAErB;;;OAGG;IACH,gBAFU,aAAa,CAAE,WAAW,CAAC,CAEU;IAE/C;;;OAGG;IACH,oBAAkB;IAElB;;;;;;;;OAQG;IACH,iBAFU,2BAA2B,EAAE,CAElB;IAGrB;;OAEG;IACH,mCAcC;IAED;;;;OAIG;IACH,sBAJa,CAAC,SACH,CAAC,GACA,MAAM,CA8BjB;IAED,0EAGC;IAED,2EAEC;IAED,wCAEC;IAED,0CAEC;IAIL;;;OAGG;IACH,mBAFU,OAAO,CAEQ;IAEzB;;;;OAIG;IACH,yBAA4B;IAG5B;;;OAGG;IACH,oBAAuB;CApBtB;;;;AA2DD;;;;GAIG;AACH,wDAFa,MAAM,CAKlB;0BAjLyB,mCAAmC;qBADxC,6BAA6B"}
1
+ {"version":3,"file":"System.d.ts","sourceRoot":"","sources":["../../../../src/engine/ecs/System.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,oBAFa,CAAC;IAIV;;;OAGG;IACH,yBAFU,aAAa,CAEF;IAErB;;;OAGG;IACH,gBAFU,aAAa,CAAE,WAAW,CAAC,CAEU;IAE/C;;;OAGG;IACH,oBAAkB;IAElB;;;;;;;;OAQG;IACH,iBAFU,2BAA2B,EAAE,CAElB;IAGrB;;OAEG;IACH,mCAcC;IAED;;;;OAIG;IACH,sBAJa,CAAC,SACH,CAAC,GACA,MAAM,CA8BjB;IAED,0EAGC;IAED,2EAEC;IAED,wCAEC;IAED,0CAEC;IAIL;;;OAGG;IACH,mBAFU,OAAO,CAEQ;IAEzB;;;;OAIG;IACH,yBAA4B;IAG5B;;;OAGG;IACH,oBAAuB;CApBtB;;;;0BA2CS,MAAM;;;;;;;;0BAzJU,mCAAmC;qBADxC,6BAA6B"}
@@ -8,7 +8,7 @@ import { ResourceAccessKind } from "../../core/model/ResourceAccessKind.js";
8
8
  *
9
9
  * @template C
10
10
  */
11
- class System {
11
+ export class System {
12
12
 
13
13
  /**
14
14
  * @protected
@@ -170,14 +170,3 @@ export const SystemState = {
170
170
  */
171
171
  System.State = SystemState;
172
172
 
173
- /**
174
- *
175
- * @param {System} system
176
- * @returns {string}
177
- */
178
- function computeSystemName(system) {
179
-
180
- return system.constructor.name;
181
- }
182
-
183
- export { System, computeSystemName };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Compute name of a system.
3
+ * Mostly used for UI and debug
4
+ * @param {System} system
5
+ * @returns {string}
6
+ */
7
+ export function computeSystemName(system: System): string;
8
+ //# sourceMappingURL=computeSystemName.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeSystemName.d.ts","sourceRoot":"","sources":["../../../../src/engine/ecs/computeSystemName.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,0CAHW,MAAM,GACJ,MAAM,CAKlB"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Compute name of a system.
3
+ * Mostly used for UI and debug
4
+ * @param {System} system
5
+ * @returns {string}
6
+ */
7
+ export function computeSystemName(system) {
8
+
9
+ return system.constructor.name;
10
+ }
@@ -1,4 +1,4 @@
1
- import { EventType } from "../EntityManager.js";
1
+ import { EventType } from "../EventType.js";
2
2
  import { AbstractContextSystem } from "../system/AbstractContextSystem.js";
3
3
  import { SystemEntityContext } from "../system/SystemEntityContext.js";
4
4
  import { ParentEntity } from "./ParentEntity.js";
@@ -27,21 +27,54 @@ declare class Clouds {
27
27
  * @returns {boolean}
28
28
  */
29
29
  get enabled(): boolean;
30
- setSpeed(x: any, y: any): void;
31
- writeOneCloudSpeed(mat: any): void;
32
- writeOneEnabled(mat: any): void;
33
- writeOneTime(mat: any): void;
30
+ /**
31
+ *
32
+ * @param {number} x
33
+ * @param {number} y
34
+ */
35
+ setSpeed(x: number, y: number): void;
36
+ /**
37
+ *
38
+ * @param {THREE.Material} mat
39
+ */
40
+ writeOneCloudSpeed(mat: THREE.Material): void;
41
+ /**
42
+ *
43
+ * @param {THREE.Material} mat
44
+ */
45
+ writeOneEnabled(mat: THREE.Material): void;
46
+ /**
47
+ *
48
+ * @param {THREE.Material} mat
49
+ */
50
+ writeOneTime(mat: THREE.Material): void;
34
51
  writeAllTime(): void;
35
- update(timeDelta: any): void;
36
- writeOneCloudTextures(mat: any): void;
37
- writeOneCloudUniforms(mat: any): void;
38
52
  /**
39
53
  *
40
- * @param {Material} material
54
+ * @param {number} timeDelta
55
+ */
56
+ update(timeDelta: number): void;
57
+ /**
58
+ *
59
+ * @param {THREE.Material} mat
60
+ */
61
+ writeOneCloudTextures(mat: THREE.Material): void;
62
+ /**
63
+ *
64
+ * @param {THREE.Material} mat
65
+ */
66
+ writeOneCloudUniforms(mat: THREE.Material): void;
67
+ /**
68
+ *
69
+ * @param {THREE.Material} material
41
70
  * @returns {boolean}
42
71
  */
43
- removeMaterial(material: Material): boolean;
44
- addMaterial(material: any): void;
72
+ removeMaterial(material: THREE.Material): boolean;
73
+ /**
74
+ *
75
+ * @param {THREE.Material} material
76
+ */
77
+ addMaterial(material: THREE.Material): void;
45
78
  }
46
79
  import Vector2 from '../../../core/geom/Vector2.js';
47
80
  //# sourceMappingURL=TerrainClouds.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TerrainClouds.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/terrain/TerrainClouds.js"],"names":[],"mappings":";AA6BA;IACI;;;;OAIG;IACH,kBAAkB;IAClB;;;;OAIG;IACH,kBAAe;IACf,aAAS;IAGT,kBAAyB;IACzB,kBAAyB;IACzB,kBAAyB;IAGzB,oBAAmB;IAMnB;;;OAGG;IACH,iBAFW,OAAO,EASjB;IAED;;;OAGG;IACH,eAFa,OAAO,CAInB;IAED,+BAMC;IAED,mCAMC;IAED,gCAGC;IAED,6BAGC;IAGD,qBAQC;IAED,6BAGC;IAED,sCAKC;IAED,sCAWC;IAED;;;;OAIG;IACH,yBAHW,QAAQ,GACN,OAAO,CAWnB;IAED,iCAWC;CACJ;oBAtKmB,+BAA+B"}
1
+ {"version":3,"file":"TerrainClouds.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/terrain/TerrainClouds.js"],"names":[],"mappings":";AA6BA;IACI;;;;OAIG;IACH,kBAAkB;IAClB;;;;OAIG;IACH,kBAAe;IACf,aAAS;IAGT,kBAAyB;IACzB,kBAAyB;IACzB,kBAAyB;IAGzB,oBAAmB;IAMnB;;;OAGG;IACH,iBAFW,OAAO,EASjB;IAED;;;OAGG;IACH,eAFa,OAAO,CAInB;IAED;;;;OAIG;IACH,YAHW,MAAM,KACN,MAAM,QAQhB;IAED;;;OAGG;IACH,wBAFW,KAAK,CAAC,QAAQ,QAQxB;IAED;;;OAGG;IACH,qBAFW,KAAK,CAAC,QAAQ,QAKxB;IAED;;;OAGG;IACH,kBAFW,KAAK,CAAC,QAAQ,QAKxB;IAGD,qBAQC;IAED;;;OAGG;IACH,kBAFW,MAAM,QAKhB;IAED;;;OAGG;IACH,2BAFW,KAAK,CAAC,QAAQ,QAOxB;IAED;;;OAGG;IACH,2BAFW,KAAK,CAAC,QAAQ,QAaxB;IAED;;;;OAIG;IACH,yBAHW,KAAK,CAAC,QAAQ,GACZ,OAAO,CAWnB;IAED;;;OAGG;IACH,sBAFW,KAAK,CAAC,QAAQ,QAgBxB;CACJ;oBA1MmB,+BAA+B"}
@@ -75,6 +75,11 @@ class Clouds {
75
75
  return this.__enabled;
76
76
  }
77
77
 
78
+ /**
79
+ *
80
+ * @param {number} x
81
+ * @param {number} y
82
+ */
78
83
  setSpeed(x, y) {
79
84
  const variability = this.variability;
80
85
 
@@ -83,6 +88,10 @@ class Clouds {
83
88
  this.__speed2.set(x * (1 + variability), y * (1 - variability));
84
89
  }
85
90
 
91
+ /**
92
+ *
93
+ * @param {THREE.Material} mat
94
+ */
86
95
  writeOneCloudSpeed(mat) {
87
96
  const uniforms = mat.uniforms;
88
97
 
@@ -91,11 +100,19 @@ class Clouds {
91
100
  uniforms.v_CloudsSpeed_2.value.copy(this.__speed2);
92
101
  }
93
102
 
103
+ /**
104
+ *
105
+ * @param {THREE.Material} mat
106
+ */
94
107
  writeOneEnabled(mat) {
95
108
  mat.defines.SHADOWMAP_CLOUDS = this.__enabled;
96
109
  mat.needsUpdate = true;
97
110
  }
98
111
 
112
+ /**
113
+ *
114
+ * @param {THREE.Material} mat
115
+ */
99
116
  writeOneTime(mat) {
100
117
  const uniforms = mat.uniforms;
101
118
  uniforms.f_CloudsTime.value = this.time;
@@ -112,11 +129,19 @@ class Clouds {
112
129
  }
113
130
  }
114
131
 
132
+ /**
133
+ *
134
+ * @param {number} timeDelta
135
+ */
115
136
  update(timeDelta) {
116
137
  this.time += timeDelta;
117
138
  this.writeAllTime();
118
139
  }
119
140
 
141
+ /**
142
+ *
143
+ * @param {THREE.Material} mat
144
+ */
120
145
  writeOneCloudTextures(mat) {
121
146
  const uniforms = mat.uniforms;
122
147
  uniforms.t_Clouds_0.value = loadCloudTexture("data/textures/noise/tile_256.png");
@@ -124,6 +149,10 @@ class Clouds {
124
149
  uniforms.t_Clouds_2.value = loadCloudTexture("data/textures/noise/tile_256.png");
125
150
  }
126
151
 
152
+ /**
153
+ *
154
+ * @param {THREE.Material} mat
155
+ */
127
156
  writeOneCloudUniforms(mat) {
128
157
 
129
158
  const uniforms = mat.uniforms;
@@ -139,7 +168,7 @@ class Clouds {
139
168
 
140
169
  /**
141
170
  *
142
- * @param {Material} material
171
+ * @param {THREE.Material} material
143
172
  * @returns {boolean}
144
173
  */
145
174
  removeMaterial(material) {
@@ -153,8 +182,15 @@ class Clouds {
153
182
  return true;
154
183
  }
155
184
 
185
+ /**
186
+ *
187
+ * @param {THREE.Material} material
188
+ */
156
189
  addMaterial(material) {
157
- if (typeof material.defines === "object" && material.defines.hasOwnProperty("SHADOWMAP_CLOUDS")) {
190
+ if (
191
+ typeof material.defines === "object"
192
+ && material.defines.hasOwnProperty("SHADOWMAP_CLOUDS")
193
+ ) {
158
194
  this.writeOneTime(material);
159
195
  this.writeOneEnabled(material);
160
196
  this.writeOneCloudTextures(material);
@@ -1 +1 @@
1
- {"version":3,"file":"Terrain.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/terrain/ecs/Terrain.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Terrain.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/terrain/ecs/Terrain.js"],"names":[],"mappings":"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"}
@@ -34,6 +34,12 @@ import { TerrainFlags } from "./TerrainFlags.js";
34
34
 
35
35
  let idCounter = 0;
36
36
 
37
+ /**
38
+ * Terrain is split into equal sized square patches
39
+ * Dimensions of single patch in width and height
40
+ * NOTE: edges of the terrain will typically result in patches smaller than this, so this is upper bound
41
+ * @type {number}
42
+ */
37
43
  const TILE_SIZE = 7;
38
44
 
39
45
  class Terrain {
@@ -1 +1 @@
1
- {"version":3,"file":"makeTerrainWorkerProxy.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/terrain/ecs/makeTerrainWorkerProxy.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,0CAFY,WAAW,CAgFtB"}
1
+ {"version":3,"file":"makeTerrainWorkerProxy.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/terrain/ecs/makeTerrainWorkerProxy.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,0CAFY,WAAW,CAkFtB"}
@@ -8,7 +8,9 @@ export function makeTerrainWorkerProxy() {
8
8
  const workerBuilder = new WorkerBuilder();
9
9
  workerBuilder.importScript('bundle-worker-terrain.js');
10
10
 
11
- workerBuilder.addCode(`
11
+ workerBuilder.addCode(
12
+ //language=JavaScript
13
+ `
12
14
  function useSampler(callback) {
13
15
  if (globalScope.samplerHeight !== undefined) {
14
16
  callback(globalScope.samplerHeight);
@@ -1 +1 @@
1
- {"version":3,"file":"RibbonPathBuilder.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/ecs/path/ribbon/RibbonPathBuilder.js"],"names":[],"mappings":"AAaA;IAEQ;;;OAGG;IACH,OAFU,eAAe,GAAC,IAAI,CAEb;IAEjB;;;OAGG;IACH,MAFU,IAAI,GAAC,IAAI,CAEH;IAEhB;;;OAGG;IACH,QAFU,aAAa,GAAC,IAAI,CAEV;IAGtB;;;OAGG;IACH,gBAFW,eAAe,QAIzB;IAED;;;OAGG;IACH,cAFW,IAAI,QAId;IAED;;;OAGG;IACH,kBAFW,aAAa,QAIvB;IAED;;;OAGG;IACH,mBAFW,MAAM,EAAE,QAsFlB;CAEJ;mBA3IkB,2BAA2B"}
1
+ {"version":3,"file":"RibbonPathBuilder.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/ecs/path/ribbon/RibbonPathBuilder.js"],"names":[],"mappings":"AAaA;IAEQ;;;OAGG;IACH,OAFU,eAAe,GAAC,IAAI,CAEb;IAEjB;;;OAGG;IACH,MAFU,IAAI,GAAC,IAAI,CAEH;IAEhB;;;OAGG;IACH,QAFU,aAAa,GAAC,IAAI,CAEV;IAGtB;;;OAGG;IACH,gBAFW,eAAe,QAIzB;IAED;;;OAGG;IACH,cAFW,IAAI,QAId;IAED;;;OAGG;IACH,kBAFW,aAAa,QAIvB;IAED;;;OAGG;IACH,mBAFW,MAAM,EAAE,QAsFlB;CAEJ;mBAnJkB,2BAA2B"}
@@ -1,15 +1,15 @@
1
- import { RibbonX } from "../../../trail/x/RibbonX.js";
2
- import {
3
- RIBBON_ATTRIBUTE_ADDRESS_AGE,
4
- RIBBON_ATTRIBUTE_ADDRESS_UV_OFFSET
5
- } from "../../../trail/x/ribbon_attributes_spec.js";
6
1
  import Vector3 from "../../../../../core/geom/Vector3.js";
2
+ import Entity from "../../../../ecs/Entity.js";
3
+ import { EventType } from "../../../../ecs/EventType.js";
7
4
  import Renderable from "../../../../ecs/renderable/Renderable.js";
8
5
  import { RenderableFlags } from "../../../../ecs/renderable/RenderableFlags.js";
9
6
  import { Transform } from "../../../../ecs/transform/Transform.js";
10
- import Entity from "../../../../ecs/Entity.js";
11
7
  import ThreeFactory from "../../../three/ThreeFactory.js";
12
- import { EventType } from "../../../../ecs/EntityManager.js";
8
+ import {
9
+ RIBBON_ATTRIBUTE_ADDRESS_AGE,
10
+ RIBBON_ATTRIBUTE_ADDRESS_UV_OFFSET
11
+ } from "../../../trail/x/ribbon_attributes_spec.js";
12
+ import { RibbonX } from "../../../trail/x/RibbonX.js";
13
13
 
14
14
  export class RibbonPathBuilder {
15
15
  constructor() {
@@ -4,4 +4,8 @@ export class InputDeviceSwitch {
4
4
  readonly up: Signal
5
5
  readonly down: Signal
6
6
  readonly is_down: boolean
7
+ readonly is_up: boolean
8
+
9
+ press():void
10
+ release():void
7
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"InputDeviceSwitch.d.ts","sourceRoot":"","sources":["../../../../../src/engine/input/devices/InputDeviceSwitch.js"],"names":[],"mappings":"AAEA;;GAEG;AACH;IAEI;;;;OAIG;IACH,eAFU,MAAM,CAEG;IAEnB;;;;OAIG;IACH,aAFU,MAAM,CAEC;IAEjB;;;OAGG;IACH,SAFU,OAAO,CAEF;IAEf;;;OAGG;IACH,aAFa,OAAO,CAInB;IAED;;;OAGG;IACH,cAOC;IAED;;;OAGG;IACH,gBAOC;CACJ;mBA5DkB,uCAAuC"}
1
+ {"version":3,"file":"InputDeviceSwitch.d.ts","sourceRoot":"","sources":["../../../../../src/engine/input/devices/InputDeviceSwitch.js"],"names":[],"mappings":"AAEA;;GAEG;AACH;IAEI;;;;OAIG;IACH,eAFU,MAAQ,CAEC;IAEnB;;;;OAIG;IACH,aAFU,MAAQ,CAED;IAEjB;;;OAGG;IACH,SAFU,OAAO,CAEF;IAEf;;;OAGG;IACH,aAFa,OAAO,CAInB;IAED;;;;OAIG;IACH,cAOC;IAED;;;;OAIG;IACH,gBAOC;CACJ;mBA9DkB,uCAAuC"}
@@ -8,14 +8,14 @@ export class InputDeviceSwitch {
8
8
  /**
9
9
  * Switch press
10
10
  * @readonly
11
- * @type {Signal}
11
+ * @type {Signal<>}
12
12
  */
13
13
  down = new Signal()
14
14
 
15
15
  /**
16
16
  * Switch release
17
17
  * @readonly
18
- * @type {Signal}
18
+ * @type {Signal<>}
19
19
  */
20
20
  up = new Signal()
21
21
 
@@ -36,6 +36,7 @@ export class InputDeviceSwitch {
36
36
  /**
37
37
  * Execute press, will trigger {@link down} signal if previous state was up
38
38
  * Idempotent
39
+ * NOTE: make sure you understand the implications of using this
39
40
  */
40
41
  press() {
41
42
  if (this.is_down) {
@@ -49,6 +50,7 @@ export class InputDeviceSwitch {
49
50
  /**
50
51
  * Execute release, will trigger {@link up} signal if previous state was down
51
52
  * Idempotent
53
+ * NOTE: make sure you understand the implications of using this
52
54
  */
53
55
  release() {
54
56
  if (!this.is_down) {
@@ -1 +1 @@
1
- {"version":3,"file":"KeyCodes.d.ts","sourceRoot":"","sources":["../../../../../src/engine/input/devices/KeyCodes.js"],"names":[],"mappings":"uBAEU,MAAM;AAFhB;;;GAGG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqGE"}
1
+ {"version":3,"file":"KeyCodes.d.ts","sourceRoot":"","sources":["../../../../../src/engine/input/devices/KeyCodes.js"],"names":[],"mappings":";;;uBAGU,MAAM;AAHhB;;;;GAIG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqGE"}
@@ -1,4 +1,5 @@
1
1
  /**
2
+ * Valid keyboard keys
2
3
  * @readonly
3
4
  * @enum {number}
4
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"KeyboardDevice.d.ts","sourceRoot":"","sources":["../../../../../src/engine/input/devices/KeyboardDevice.js"],"names":[],"mappings":";AAYA;IAgBI;;;OAGG;IACH,wBAFW,WAAW,GAAC,OAAO,EA+B7B;IA/CD;;OAEG;IACH;;;MAGE;IAEF;;;OAGG;IACH,mBAAU;IAkBN;;;OAGG;IACH,YAFU,WAAW,CAEO;IAkFhC,cAGC;IAED,aAGC;;CACJ;mBA3IkB,uCAAuC"}
1
+ {"version":3,"file":"KeyboardDevice.d.ts","sourceRoot":"","sources":["../../../../../src/engine/input/devices/KeyboardDevice.js"],"names":[],"mappings":";AAYA;;;GAGG;AACH;IA4BI;;;OAGG;IACH,wBAHW,WAAW,GAAC,OAAO,EAgC7B;IA3DD;;OAEG;IACH;QACI;;;WAGG;cADO,MAAM,CAAC,aAAa,CAAC;QAG/B;;;WAGG;YADO,MAAM,CAAC,aAAa,CAAC;MAGjC;IAEF;;;;;;;OAOG;IACH,mBAAU;IAkBN;;;OAGG;IACH,YAFU,WAAW,CAEO;IAkFhC;;;OAGG;IACH,SAFa,IAAI,CAKhB;IAED;;;OAGG;IACH,QAFa,IAAI,CAKhB;;CAEJ;mBApKkB,uCAAuC"}
@@ -10,25 +10,41 @@ import { KeyCodes } from './KeyCodes.js';
10
10
  */
11
11
  const codeToKeyNameMap = [];
12
12
 
13
+ /**
14
+ * Provides keyboard input.
15
+ * Listens for key events on a DOM element and provides signals and state for key presses.
16
+ */
13
17
  class KeyboardDevice {
14
18
 
15
19
  /**
16
20
  * @readonly
17
21
  */
18
22
  on = {
23
+ /**
24
+ * Fires when any key is pressed
25
+ * @type {Signal<KeyboardEvent>}
26
+ */
19
27
  down: new Signal(),
28
+ /**
29
+ * Fires when any key is released
30
+ * @type {Signal<KeyboardEvent>}
31
+ */
20
32
  up: new Signal()
21
33
  };
22
34
 
23
35
  /**
36
+ * See {@link KeyCodes} for valid IDs
24
37
  * @readonly
25
38
  * @type {Object<InputDeviceSwitch>}
39
+ *
40
+ * @example
41
+ * const is_enter_pressed = keyboard.keys[KeyCodes.enter].is_down;
26
42
  */
27
43
  keys = {};
28
44
 
29
45
  /**
30
- *
31
- * @param {EventTarget|Element} domElement
46
+ * @param {EventTarget|Element} domElement The DOM element to listen for keyboard events on. This element *must* be focusable (e.g., have a `tabindex` attribute).
47
+ * @throws {TypeError} If the provided `domElement` is not focusable and doesn't have a `tabindex` attribute.
32
48
  */
33
49
  constructor(domElement) {
34
50
 
@@ -43,7 +59,7 @@ class KeyboardDevice {
43
59
  }
44
60
 
45
61
  /**
46
- *
62
+ * The DOM element being listened to.
47
63
  * @type {EventTarget}
48
64
  */
49
65
  this.domElement = domElement;
@@ -128,15 +144,24 @@ class KeyboardDevice {
128
144
 
129
145
  }
130
146
 
147
+ /**
148
+ * Starts listening for keyboard events on the associated DOM element.
149
+ * @returns {void}
150
+ */
131
151
  start() {
132
152
  this.domElement.addEventListener(KeyboardEvents.KeyDown, this.#handlerKeyDown);
133
153
  this.domElement.addEventListener(KeyboardEvents.KeyUp, this.#handlerKeyUp);
134
154
  }
135
155
 
156
+ /**
157
+ * Stops listening for keyboard events.
158
+ * @returns {void}
159
+ */
136
160
  stop() {
137
161
  this.domElement.removeEventListener(KeyboardEvents.KeyDown, this.#handlerKeyDown);
138
162
  this.domElement.removeEventListener(KeyboardEvents.KeyUp, this.#handlerKeyUp);
139
163
  }
164
+
140
165
  }
141
166
 
142
167
  export default KeyboardDevice;