@woosh/meep-engine 2.123.8 → 2.124.0

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 (44) hide show
  1. package/build/bundle-worker-image-decoder.js +1 -1
  2. package/build/bundle-worker-terrain.js +1 -1
  3. package/package.json +1 -1
  4. package/src/core/assert.d.ts +6 -3
  5. package/src/core/assert.d.ts.map +1 -1
  6. package/src/core/assert.js +10 -3
  7. package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
  8. package/src/engine/ecs/EntityComponentDataset.js +22 -3
  9. package/src/engine/ecs/dynamic_actions/DynamicActorSystem.js +1 -1
  10. package/src/engine/intelligence/behavior/composite/ParallelBehavior.d.ts +10 -2
  11. package/src/engine/intelligence/behavior/composite/ParallelBehavior.d.ts.map +1 -1
  12. package/src/engine/intelligence/behavior/composite/ParallelBehavior.js +11 -2
  13. package/src/engine/intelligence/behavior/decorator/RepeatBehavior.d.ts +3 -3
  14. package/src/engine/intelligence/behavior/decorator/RepeatBehavior.d.ts.map +1 -1
  15. package/src/engine/intelligence/behavior/decorator/RepeatBehavior.js +6 -4
  16. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts +4 -3
  17. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts.map +1 -1
  18. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.js +4 -3
  19. package/src/engine/intelligence/behavior/ecs/BehaviorSystem.d.ts +5 -2
  20. package/src/engine/intelligence/behavior/ecs/BehaviorSystem.d.ts.map +1 -1
  21. package/src/engine/intelligence/behavior/ecs/BehaviorSystem.js +6 -3
  22. package/src/engine/intelligence/behavior/ecs/DieBehavior.d.ts +4 -0
  23. package/src/engine/intelligence/behavior/ecs/DieBehavior.d.ts.map +1 -1
  24. package/src/engine/intelligence/behavior/ecs/DieBehavior.js +4 -1
  25. package/src/engine/intelligence/behavior/ecs/SendEventBehavior.d.ts +25 -6
  26. package/src/engine/intelligence/behavior/ecs/SendEventBehavior.d.ts.map +1 -1
  27. package/src/engine/intelligence/behavior/ecs/SendEventBehavior.js +24 -2
  28. package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.d.ts +2 -1
  29. package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.d.ts.map +1 -1
  30. package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.js +2 -1
  31. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts +1 -1
  32. package/src/engine/intelligence/behavior/primitive/ActionBehavior.js +1 -1
  33. package/src/engine/intelligence/behavior/primitive/FailingBehavior.d.ts +12 -3
  34. package/src/engine/intelligence/behavior/primitive/FailingBehavior.d.ts.map +1 -1
  35. package/src/engine/intelligence/behavior/primitive/FailingBehavior.js +21 -9
  36. package/src/engine/intelligence/behavior/primitive/SucceedingBehavior.d.ts +0 -5
  37. package/src/engine/intelligence/behavior/primitive/SucceedingBehavior.d.ts.map +1 -1
  38. package/src/engine/intelligence/behavior/primitive/SucceedingBehavior.js +1 -16
  39. package/src/engine/intelligence/behavior/selector/WeightedElement.d.ts +2 -2
  40. package/src/engine/intelligence/behavior/selector/WeightedElement.d.ts.map +1 -1
  41. package/src/engine/intelligence/behavior/selector/WeightedElement.js +7 -2
  42. package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts +13 -1
  43. package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts.map +1 -1
  44. package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.js +29 -3
@@ -8,26 +8,10 @@ import { BehaviorStatus } from "../BehaviorStatus.js";
8
8
  */
9
9
  export class SucceedingBehavior extends Behavior {
10
10
 
11
- constructor() {
12
- super();
13
- }
14
-
15
11
  initialize(context) {
16
12
  this.onInitialized.send2(this, context);
17
13
  }
18
14
 
19
- finalize() {
20
- this.onFinalized.send1(this);
21
- }
22
-
23
- /**
24
- * @deprecated use static INSTANCE instead
25
- * @return {SucceedingBehavior}
26
- */
27
- static from() {
28
- throw new Error(`Deprecated, use INSTANCE instead`)
29
- }
30
-
31
15
  tick(timeDelta) {
32
16
  return BehaviorStatus.Succeeded;
33
17
  }
@@ -37,6 +21,7 @@ export class SucceedingBehavior extends Behavior {
37
21
  * @type {SucceedingBehavior}
38
22
  */
39
23
  static INSTANCE = Object.freeze(new SucceedingBehavior());
24
+
40
25
  }
41
26
 
42
27
  SucceedingBehavior.typeName = "SucceedingBehavior";
@@ -5,10 +5,10 @@ export class WeightedElement<T> {
5
5
  /**
6
6
  * @template T
7
7
  * @param {T} element
8
- * @param {number} weight
8
+ * @param {number} [weight]
9
9
  * @returns {WeightedElement<T>}
10
10
  */
11
- static from<T_1>(element: T_1, weight: number): WeightedElement<T_1>;
11
+ static from<T_1>(element: T_1, weight?: number): WeightedElement<T_1>;
12
12
  /**
13
13
  * @template X
14
14
  * @param {WeightedElement<X>} object
@@ -1 +1 @@
1
- {"version":3,"file":"WeightedElement.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/selector/WeightedElement.js"],"names":[],"mappings":"AAMA;;GAEG;AACH,6BAFa,CAAC;IAaV;;;;;OAKG;IACH,0BAJW,GAAC,UACD,MAAM,GACJ,eAAe,CAAC,GAAC,CAAC,CAW9B;IAED;;;;OAIG;IACH,iBAJa,CAAC,UACH,eAAe,CAAC,CAAC,CAAC,GACjB,MAAM,CAIjB;IAhCD,eAAW;IAEX;;;OAGG;IACH,MAFU,CAAC,CAEC;IA4BZ;;;;OAIG;IACH,cAHW,CAAC,GACA,OAAO,CAKlB;IAED;;;OAGG;IACH,QAFY,MAAM,CAOjB;IAGL;;;OAGG;IACH,4BAFU,OAAO,CAE0B;CAN1C"}
1
+ {"version":3,"file":"WeightedElement.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/selector/WeightedElement.js"],"names":[],"mappings":"AAMA;;GAEG;AACH,6BAFa,CAAC;IAaV;;;;;OAKG;IACH,0BAJW,GAAC,WACD,MAAM,GACJ,eAAe,CAAC,GAAC,CAAC,CAgB9B;IAED;;;;OAIG;IACH,iBAJa,CAAC,UACH,eAAe,CAAC,CAAC,CAAC,GACjB,MAAM,CAIjB;IArCD,eAAW;IAEX;;;OAGG;IACH,MAFU,CAAC,CAEC;IAiCZ;;;;OAIG;IACH,cAHW,CAAC,GACA,OAAO,CAKlB;IAED;;;OAGG;IACH,QAFY,MAAM,CAOjB;IAGL;;;OAGG;IACH,4BAFU,OAAO,CAE0B;CAN1C"}
@@ -21,11 +21,16 @@ export class WeightedElement {
21
21
  /**
22
22
  * @template T
23
23
  * @param {T} element
24
- * @param {number} weight
24
+ * @param {number} [weight]
25
25
  * @returns {WeightedElement<T>}
26
26
  */
27
- static from(element, weight) {
27
+ static from(element, weight = 1) {
28
+ assert.defined(element, 'element');
29
+
28
30
  assert.isNumber(weight, 'weight');
31
+ assert.notNaN(weight, 'weight');
32
+ assert.isFinite(weight, 'weight');
33
+ assert.greaterThanOrEqual(weight, 0, 'weight');
29
34
 
30
35
  const r = new WeightedElement();
31
36
 
@@ -1,3 +1,15 @@
1
+ /**
2
+ * Picks a random behavior to execute.
3
+ * The selection is done during initialization, and that selected behavior will then run to completion.
4
+ * NOTE: Weights are relative, so they don't need to add up to any specific value.
5
+ *
6
+ * @example
7
+ * const behavior = WeightedRandomBehavior.from([
8
+ * WeightedElement.from(A, 1), // A is some behavior
9
+ * WeightedElement.from(B, 70), // B is some behavior
10
+ * ]); // B will be 70 times more likely to be picked than A
11
+ *
12
+ */
1
13
  export class WeightedRandomBehavior extends Behavior<any> {
2
14
  /**
3
15
  *
@@ -31,7 +43,7 @@ export class WeightedRandomBehavior extends Behavior<any> {
31
43
  setRandomSeed(v: number): void;
32
44
  /**
33
45
  *
34
- * @param {WeightedElement<Behavior>[]} elements
46
+ * @param {WeightedElement<Behavior>[]} elements Must not be empty
35
47
  */
36
48
  setElements(elements: WeightedElement<Behavior<any>>[]): void;
37
49
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"WeightedRandomBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/selector/WeightedRandomBehavior.js"],"names":[],"mappings":"AAMA;IA0DI;;;;OAIG;IACH,sBAHW,eAAe,eAAU,EAAE,GACzB,sBAAsB,CAQlC;;IAnED;;;;OAIG;IACH,mBAAgB;IAEhB;;;;OAIG;IACH,iBAA+B;IAE/B;;;;OAIG;IACH,mBAAuB;IAEvB;;;OAGG;IACH,iBAFW,MAAM,QAIhB;IAED;;;OAGG;IACH,sBAFW,eAAe,eAAU,EAAE,QAMrC;IAED;;;OAGG;IACH,cAFW,eAAe,eAAU,QAanC;IAeD,iBAQC;IAED,+BAMC;IAUD,oEAEC;CACJ;yBAvGwB,gBAAgB;gCACT,sBAAsB"}
1
+ {"version":3,"file":"WeightedRandomBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/selector/WeightedRandomBehavior.js"],"names":[],"mappings":"AAMA;;;;;;;;;;;GAWG;AACH;IAkEI;;;;OAIG;IACH,sBAHW,eAAe,eAAU,EAAE,GACzB,sBAAsB,CAUlC;;IA7ED;;;;OAIG;IACH,mBAAgB;IAEhB;;;;OAIG;IACH,iBAA+B;IAE/B;;;;OAIG;IACH,mBAAuB;IAEvB;;;OAGG;IACH,iBAFW,MAAM,QAIhB;IAED;;;OAGG;IACH,sBAFW,eAAe,eAAU,EAAE,QAcrC;IAED;;;OAGG;IACH,cAFW,eAAe,eAAU,QAanC;IAiBD,iBAYC;IAED,+BAMC;IAUD,oEAEC;CACJ;yBAjIwB,gBAAgB;gCACT,sBAAsB"}
@@ -4,6 +4,18 @@ import { seededRandom } from "../../../../core/math/random/seededRandom.js";
4
4
  import { Behavior } from "../Behavior.js";
5
5
  import { WeightedElement } from "./WeightedElement.js";
6
6
 
7
+ /**
8
+ * Picks a random behavior to execute.
9
+ * The selection is done during initialization, and that selected behavior will then run to completion.
10
+ * NOTE: Weights are relative, so they don't need to add up to any specific value.
11
+ *
12
+ * @example
13
+ * const behavior = WeightedRandomBehavior.from([
14
+ * WeightedElement.from(A, 1), // A is some behavior
15
+ * WeightedElement.from(B, 70), // B is some behavior
16
+ * ]); // B will be 70 times more likely to be picked than A
17
+ *
18
+ */
7
19
  export class WeightedRandomBehavior extends Behavior {
8
20
 
9
21
  /**
@@ -37,12 +49,20 @@ export class WeightedRandomBehavior extends Behavior {
37
49
 
38
50
  /**
39
51
  *
40
- * @param {WeightedElement<Behavior>[]} elements
52
+ * @param {WeightedElement<Behavior>[]} elements Must not be empty
41
53
  */
42
54
  setElements(elements) {
55
+ assert.defined(elements, 'elements');
56
+ assert.isArray(elements, 'elements');
57
+ assert.greaterThan(elements.length, 0, 'elements.length === 0');
58
+
43
59
  this.__elements = [];
44
60
 
45
- elements.forEach(this.addElement, this);
61
+ const count = elements.length;
62
+ for (let i = 0; i < count; i++) {
63
+ const element = elements[i];
64
+ this.addElement(element);
65
+ }
46
66
  }
47
67
 
48
68
  /**
@@ -68,6 +88,8 @@ export class WeightedRandomBehavior extends Behavior {
68
88
  * @returns {WeightedRandomBehavior}
69
89
  */
70
90
  static from(elements) {
91
+ assert.defined(elements, 'elements');
92
+
71
93
  const r = new WeightedRandomBehavior();
72
94
 
73
95
  r.setElements(elements);
@@ -82,7 +104,11 @@ export class WeightedRandomBehavior extends Behavior {
82
104
  */
83
105
  const weightedElement = weightedRandomFromArray(this.__elements, this.__random, WeightedElement.getWeight);
84
106
 
85
- this.__selected = weightedElement.data;
107
+ const selected = weightedElement.data;
108
+
109
+ assert.equal(selected.isBehavior, true, 'selected.isBehavior !== true');
110
+
111
+ this.__selected = selected;
86
112
  }
87
113
 
88
114
  initialize(context) {