@woosh/meep-engine 2.123.7 → 2.123.11

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 (57) 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/Entity.d.ts.map +1 -1
  8. package/src/engine/ecs/Entity.js +8 -9
  9. package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
  10. package/src/engine/ecs/EntityComponentDataset.js +27 -4
  11. package/src/engine/ecs/dynamic_actions/DynamicActorSystem.js +1 -1
  12. package/src/engine/graphics/ecs/mesh-v2/render/optimization/RuntimeDrawMethodOptimizer.js +2 -2
  13. package/src/engine/intelligence/behavior/behavior_to_dot.js +1 -1
  14. package/src/engine/intelligence/behavior/composite/CompositeBehavior.d.ts +9 -4
  15. package/src/engine/intelligence/behavior/composite/CompositeBehavior.d.ts.map +1 -1
  16. package/src/engine/intelligence/behavior/composite/CompositeBehavior.js +21 -15
  17. package/src/engine/intelligence/behavior/composite/ParallelBehavior.d.ts +14 -6
  18. package/src/engine/intelligence/behavior/composite/ParallelBehavior.d.ts.map +1 -1
  19. package/src/engine/intelligence/behavior/composite/ParallelBehavior.js +23 -12
  20. package/src/engine/intelligence/behavior/composite/ParallelBehaviorSerializationAdapter.js +1 -1
  21. package/src/engine/intelligence/behavior/composite/SequenceBehavior.d.ts +2 -2
  22. package/src/engine/intelligence/behavior/composite/SequenceBehavior.d.ts.map +1 -1
  23. package/src/engine/intelligence/behavior/composite/SequenceBehavior.js +3 -3
  24. package/src/engine/intelligence/behavior/composite/SequenceBehaviorSerializationAdapter.js +1 -1
  25. package/src/engine/intelligence/behavior/decorator/RepeatBehavior.d.ts +15 -20
  26. package/src/engine/intelligence/behavior/decorator/RepeatBehavior.d.ts.map +1 -1
  27. package/src/engine/intelligence/behavior/decorator/RepeatBehavior.js +19 -26
  28. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts +4 -3
  29. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts.map +1 -1
  30. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.js +4 -3
  31. package/src/engine/intelligence/behavior/ecs/BehaviorSystem.d.ts +5 -2
  32. package/src/engine/intelligence/behavior/ecs/BehaviorSystem.d.ts.map +1 -1
  33. package/src/engine/intelligence/behavior/ecs/BehaviorSystem.js +6 -3
  34. package/src/engine/intelligence/behavior/ecs/DieBehavior.d.ts +4 -0
  35. package/src/engine/intelligence/behavior/ecs/DieBehavior.d.ts.map +1 -1
  36. package/src/engine/intelligence/behavior/ecs/DieBehavior.js +4 -1
  37. package/src/engine/intelligence/behavior/ecs/SendEventBehavior.d.ts +25 -6
  38. package/src/engine/intelligence/behavior/ecs/SendEventBehavior.d.ts.map +1 -1
  39. package/src/engine/intelligence/behavior/ecs/SendEventBehavior.js +24 -2
  40. package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.d.ts +2 -1
  41. package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.d.ts.map +1 -1
  42. package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.js +2 -1
  43. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts +9 -1
  44. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts.map +1 -1
  45. package/src/engine/intelligence/behavior/primitive/ActionBehavior.js +13 -1
  46. package/src/engine/intelligence/behavior/primitive/FailingBehavior.d.ts +12 -3
  47. package/src/engine/intelligence/behavior/primitive/FailingBehavior.d.ts.map +1 -1
  48. package/src/engine/intelligence/behavior/primitive/FailingBehavior.js +21 -9
  49. package/src/engine/intelligence/behavior/primitive/SucceedingBehavior.d.ts +0 -5
  50. package/src/engine/intelligence/behavior/primitive/SucceedingBehavior.d.ts.map +1 -1
  51. package/src/engine/intelligence/behavior/primitive/SucceedingBehavior.js +1 -16
  52. package/src/engine/intelligence/behavior/selector/WeightedElement.d.ts.map +1 -1
  53. package/src/engine/intelligence/behavior/selector/WeightedElement.js +5 -0
  54. package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts +13 -1
  55. package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts.map +1 -1
  56. package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.js +29 -3
  57. package/src/engine/intelligence/behavior/util/behavior_traverse_tree.js +1 -1
@@ -1,29 +1,36 @@
1
+ import { assert } from "../../../../core/assert.js";
1
2
  import { Behavior } from "../Behavior.js";
2
3
  import { BehaviorStatus } from "../BehaviorStatus.js";
3
4
  import { AbstractDecoratorBehavior } from "./AbstractDecoratorBehavior.js";
4
- import { assert } from "../../../../core/assert.js";
5
5
 
6
6
  /**
7
- * @extends {Behavior}
7
+ * Loop decorator. Behavior equivalent of `for(i=0; i<limit; i++)`
8
+ * @example
9
+ * RepeatBehavior.from(
10
+ * ActionBehavior.from( () => console.log('A') ),
11
+ * 3
12
+ * ); // will print A three times when executed
8
13
  */
9
14
  export class RepeatBehavior extends AbstractDecoratorBehavior {
10
15
  /**
11
16
  *
12
17
  * @param {Behavior} source
13
- * @param {number} [count=Infinity]
18
+ * @param {number} [limit=Infinity]
14
19
  */
15
- constructor(source, count = Infinity) {
20
+ constructor(source, limit = Infinity) {
16
21
  super();
17
22
 
23
+ assert.isNumber(limit, 'count');
24
+ assert.greaterThanOrEqual(limit, 0, 'count');
25
+
18
26
  /**
19
- *
27
+ * How many times to loop
20
28
  * @type {number}
21
- * @private
22
29
  */
23
- this.limit = count;
30
+ this.limit = limit;
24
31
 
25
32
  /**
26
- *
33
+ * Current loop iteration index
27
34
  * @type {number}
28
35
  * @private
29
36
  */
@@ -32,22 +39,6 @@ export class RepeatBehavior extends AbstractDecoratorBehavior {
32
39
  this.setSource(source);
33
40
  }
34
41
 
35
- /**
36
- * @deprecated use .limit directly instead
37
- * @param {number} v
38
- */
39
- setCount(v) {
40
- this.limit = v;
41
- }
42
-
43
- /**
44
- * @deprecated use .limit directly instead
45
- * @return {number}
46
- */
47
- getCount() {
48
- return this.limit;
49
- }
50
-
51
42
  /**
52
43
  *
53
44
  * @param {Behavior} source
@@ -72,21 +63,23 @@ export class RepeatBehavior extends AbstractDecoratorBehavior {
72
63
 
73
64
  assert.enum(s, BehaviorStatus, 'status');
74
65
 
75
- if (s !== BehaviorStatus.Succeeded && s !== BehaviorStatus.Failed) {
66
+ if (s !== BehaviorStatus.Succeeded || s === BehaviorStatus.Failed) {
76
67
  return s;
77
68
  }
78
69
 
79
-
80
70
  this.__iterator++;
81
71
 
82
72
  if (this.__iterator >= this.limit) {
83
73
 
84
74
  return BehaviorStatus.Succeeded;
75
+
85
76
  } else {
77
+
86
78
  //re-initialize the source behavior
87
79
  source.initialize(this.context);
88
80
 
89
81
  return BehaviorStatus.Running;
82
+
90
83
  }
91
84
  }
92
85
  }
@@ -4,7 +4,7 @@
4
4
  export class BehaviorComponent {
5
5
  /**
6
6
  * Executes input function every update cycle.
7
- * Will run forever.
7
+ * Will run forever, or until function throws.
8
8
  * @param {function(time_delta_seconds:number)} action function to loop over
9
9
  * @param {*} [thisArg]
10
10
  * @returns {BehaviorComponent}
@@ -17,7 +17,8 @@ export class BehaviorComponent {
17
17
  */
18
18
  static from(b: Behavior): BehaviorComponent;
19
19
  /**
20
- * What clock should be used for ticking associated behavior
20
+ * What clock should be used for ticking associated behavior.
21
+ * Some behaviors need to run at world's simulated time, while others will need to be executed in real-world time.
21
22
  * @type {ClockChannelType|number}
22
23
  */
23
24
  clock: ClockChannelType | number;
@@ -57,7 +58,7 @@ export class BehaviorComponent {
57
58
  */
58
59
  getFlag(flag: number | BehaviorComponentFlag): boolean;
59
60
  /**
60
- *
61
+ * Note that swapping behaviors during simulation may have unintended consequences
61
62
  * @param {Behavior} v
62
63
  */
63
64
  set behavior(v: Behavior);
@@ -1 +1 @@
1
- {"version":3,"file":"BehaviorComponent.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/ecs/BehaviorComponent.js"],"names":[],"mappings":"AAKA;;GAEG;AACH;IA6EI;;;;;;OAMG;IACH,mCAHW,GAAC,GACC,iBAAiB,CAQ7B;IAED;;;;OAIG;IACH,eAHW,QAAQ,GACN,iBAAiB,CAa7B;IA1GD;;;OAGG;IACH,OAFU,gBAAgB,GAAC,MAAM,CAEG;IAEpC;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;;OAIG;IACH,mBAAkB;IAElB;;;;OAIG;IACH,cAHW,MAAM,GAAC,qBAAqB,GAC1B,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,qBAAqB,GAC1B,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,qBAAqB,SAC5B,OAAO,QAQjB;IAED;;;;OAIG;IACH,cAHW,MAAM,GAAC,qBAAqB,GAC1B,OAAO,CAInB;IAUD;;;OAGG;IACH,gBAFW,QAAQ,EAIlB;IAdD;;;OAGG;IACH,gBAFa,QAAQ,GAAC,IAAI,CAIzB;CA0CJ;;;;;;6BAcS,OAAO;yBAMP,MAAM;;iCAtIiB,uBAAuB"}
1
+ {"version":3,"file":"BehaviorComponent.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/ecs/BehaviorComponent.js"],"names":[],"mappings":"AAKA;;GAEG;AACH;IA8EI;;;;;;OAMG;IACH,mCAHW,GAAC,GACC,iBAAiB,CAQ7B;IAED;;;;OAIG;IACH,eAHW,QAAQ,GACN,iBAAiB,CAa7B;IA3GD;;;;OAIG;IACH,OAFU,gBAAgB,GAAC,MAAM,CAEG;IAEpC;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;;OAIG;IACH,mBAAkB;IAElB;;;;OAIG;IACH,cAHW,MAAM,GAAC,qBAAqB,GAC1B,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,qBAAqB,GAC1B,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,qBAAqB,SAC5B,OAAO,QAQjB;IAED;;;;OAIG;IACH,cAHW,MAAM,GAAC,qBAAqB,GAC1B,OAAO,CAInB;IAUD;;;OAGG;IACH,gBAFW,QAAQ,EAIlB;IAdD;;;OAGG;IACH,gBAFa,QAAQ,GAAC,IAAI,CAIzB;CA0CJ;;;;;;6BAcS,OAAO;yBAMP,MAAM;;iCAvIiB,uBAAuB"}
@@ -9,7 +9,8 @@ import { ClockChannelType } from "./ClockChannelType.js";
9
9
  export class BehaviorComponent {
10
10
 
11
11
  /**
12
- * What clock should be used for ticking associated behavior
12
+ * What clock should be used for ticking associated behavior.
13
+ * Some behaviors need to run at world's simulated time, while others will need to be executed in real-world time.
13
14
  * @type {ClockChannelType|number}
14
15
  */
15
16
  clock = ClockChannelType.Simulation;
@@ -76,7 +77,7 @@ export class BehaviorComponent {
76
77
  }
77
78
 
78
79
  /**
79
- *
80
+ * Note that swapping behaviors during simulation may have unintended consequences
80
81
  * @param {Behavior} v
81
82
  */
82
83
  set behavior(v) {
@@ -85,7 +86,7 @@ export class BehaviorComponent {
85
86
 
86
87
  /**
87
88
  * Executes input function every update cycle.
88
- * Will run forever.
89
+ * Will run forever, or until function throws.
89
90
  * @param {function(time_delta_seconds:number)} action function to loop over
90
91
  * @param {*} [thisArg]
91
92
  * @returns {BehaviorComponent}
@@ -1,4 +1,7 @@
1
- export class BehaviorSystem extends System<any, any, any, any, any> {
1
+ /**
2
+ * @extends System<BehaviorComponent>
3
+ */
4
+ export class BehaviorSystem extends System<BehaviorComponent, any, any, any, any> {
2
5
  /**
3
6
  *
4
7
  * @param {Engine} engine
@@ -27,7 +30,7 @@ export class BehaviorSystem extends System<any, any, any, any, any> {
27
30
  unlink(component: BehaviorComponent, entity: number): void;
28
31
  update(timeDelta: any): void;
29
32
  }
30
- import { System } from "../../../ecs/System.js";
31
33
  import { BehaviorComponent } from "./BehaviorComponent.js";
34
+ import { System } from "../../../ecs/System.js";
32
35
  import Clock from "../../../Clock.js";
33
36
  //# sourceMappingURL=BehaviorSystem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BehaviorSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/ecs/BehaviorSystem.js"],"names":[],"mappings":"AAyBA;IACI;;;OAGG;IACH,oBAFW,MAAM,EAehB;IATG,2CAAuC;IAEvC,mBAA8B;IAE9B;;;OAGG;IACH,QAFU,MAAM,CAEI;IAGxB,0EAIC;IAED,2EAIC;IAED;;;;OAIG;IACH,gBAHW,iBAAiB,UACjB,MAAM,QAiBhB;IAED;;;;OAIG;IACH,kBAHW,iBAAiB,UACjB,MAAM,QAUhB;IAED,6BA2CC;CACJ;uBA1IsB,wBAAwB;kCACb,wBAAwB;kBAExC,mBAAmB"}
1
+ {"version":3,"file":"BehaviorSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/ecs/BehaviorSystem.js"],"names":[],"mappings":"AAyBA;;GAEG;AACH;IACI;;;OAGG;IACH,oBAFW,MAAM,EAehB;IATG,2CAAuC;IAEvC,mBAA8B;IAE9B;;;OAGG;IACH,QAFU,MAAM,CAEI;IAGxB,0EAIC;IAED,2EAIC;IAED;;;;OAIG;IACH,gBAHW,iBAAiB,UACjB,MAAM,QAiBhB;IAED;;;;OAIG;IACH,kBAHW,iBAAiB,UACjB,MAAM,QAUhB;IAED,6BA2CC;CACJ;kCA1IiC,wBAAwB;uBAFnC,wBAAwB;kBAD7B,mBAAmB"}
@@ -1,9 +1,9 @@
1
+ import Clock from "../../../Clock.js";
1
2
  import { System } from "../../../ecs/System.js";
2
- import { BehaviorComponent } from "./BehaviorComponent.js";
3
3
  import { BehaviorStatus } from "../BehaviorStatus.js";
4
- import Clock from "../../../Clock.js";
5
- import { ClockChannelType } from "./ClockChannelType.js";
4
+ import { BehaviorComponent } from "./BehaviorComponent.js";
6
5
  import { BehaviorComponentFlag } from "./BehaviorComponentFlag.js";
6
+ import { ClockChannelType } from "./ClockChannelType.js";
7
7
 
8
8
  /**
9
9
  *
@@ -23,6 +23,9 @@ function updateBehavior(behavior, timeDelta) {
23
23
  }
24
24
  }
25
25
 
26
+ /**
27
+ * @extends System<BehaviorComponent>
28
+ */
26
29
  export class BehaviorSystem extends System {
27
30
  /**
28
31
  *
@@ -2,6 +2,10 @@
2
2
  * Makes the entity destroy itself
3
3
  */
4
4
  export class DieBehavior extends EntityBehavior {
5
+ /**
6
+ * Constructor alias
7
+ * @return {DieBehavior}
8
+ */
5
9
  static create(): DieBehavior;
6
10
  tick(timeDelta: any): BehaviorStatus;
7
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DieBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/ecs/DieBehavior.js"],"names":[],"mappings":"AAGA;;GAEG;AACH;IAGI,6BAEC;IAED,qCASC;CACJ;+BAtB8B,qBAAqB;+BADrB,sBAAsB"}
1
+ {"version":3,"file":"DieBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/ecs/DieBehavior.js"],"names":[],"mappings":"AAGA;;GAEG;AACH;IAEI;;;OAGG;IACH,iBAFY,WAAW,CAItB;IAED,qCASC;CACJ;+BAzB8B,qBAAqB;+BADrB,sBAAsB"}
@@ -6,7 +6,10 @@ import { EntityBehavior } from "./EntityBehavior.js";
6
6
  */
7
7
  export class DieBehavior extends EntityBehavior {
8
8
 
9
-
9
+ /**
10
+ * Constructor alias
11
+ * @return {DieBehavior}
12
+ */
10
13
  static create() {
11
14
  return new DieBehavior();
12
15
  }
@@ -1,17 +1,36 @@
1
+ /**
2
+ * Dispatch an event to an entity via {@link EntityComponentDataset#sendEvent}
3
+ * @see WaitForEventBehavior
4
+ */
1
5
  export class SendEventBehavior extends EntityBehavior {
2
- static fromJSON(j: any): SendEventBehavior;
6
+ /**
7
+ *
8
+ * @param {{event:string, data?:Object, target?:number}} json
9
+ * @return {SendEventBehavior}
10
+ */
11
+ static fromJSON(json: {
12
+ event: string;
13
+ data?: any;
14
+ target?: number;
15
+ }): SendEventBehavior;
3
16
  /**
4
17
  * ID of the event
5
18
  * @type {string}
6
19
  */
7
20
  event: string;
8
21
  data: {};
22
+ /**
23
+ *
24
+ * @type {number}
25
+ */
9
26
  target: number;
10
- fromJSON({ event, data, target }: {
11
- event: any;
12
- data?: {};
13
- target?: number;
14
- }): void;
27
+ /**
28
+ *
29
+ * @param {string} event
30
+ * @param {Object} [data]
31
+ * @param {number} [target]
32
+ */
33
+ fromJSON({ event, data, target }: string): void;
15
34
  tick(timeDelta: any): BehaviorStatus;
16
35
  }
17
36
  import { EntityBehavior } from "./EntityBehavior.js";
@@ -1 +1 @@
1
- {"version":3,"file":"SendEventBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/ecs/SendEventBehavior.js"],"names":[],"mappings":"AAIA;IAkBI,2CAMC;IAtBD;;;OAGG;IACH,OAFU,MAAM,CAEL;IACX,SAAU;IACV,eAAY;IAEZ;;;;aAMC;IAcD,qCAQC;CACJ;+BAzC8B,qBAAqB;+BADrB,sBAAsB"}
1
+ {"version":3,"file":"SendEventBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/ecs/SendEventBehavior.js"],"names":[],"mappings":"AAIA;;;GAGG;AACH;IA+BI;;;;OAIG;IACH,sBAHW;QAAC,KAAK,EAAC,MAAM,CAAC;QAAC,IAAI,CAAC,MAAQ;QAAC,MAAM,CAAC,EAAC,MAAM,CAAA;KAAC,GAC3C,iBAAiB,CAQ5B;IAxCD;;;OAGG;IACH,OAFU,MAAM,CAEL;IAEX,SAAU;IAEV;;;OAGG;IACH,QAFU,MAAM,CAEJ;IAEZ;;;;;OAKG;IACH,kCAJW,MAAM,QAWhB;IAmBD,qCAQC;CACJ;+BA/D8B,qBAAqB;+BADrB,sBAAsB"}
@@ -2,6 +2,10 @@ import { assert } from "../../../../core/assert.js";
2
2
  import { BehaviorStatus } from "../BehaviorStatus.js";
3
3
  import { EntityBehavior } from "./EntityBehavior.js";
4
4
 
5
+ /**
6
+ * Dispatch an event to an entity via {@link EntityComponentDataset#sendEvent}
7
+ * @see WaitForEventBehavior
8
+ */
5
9
  export class SendEventBehavior extends EntityBehavior {
6
10
 
7
11
  /**
@@ -9,21 +13,39 @@ export class SendEventBehavior extends EntityBehavior {
9
13
  * @type {string}
10
14
  */
11
15
  event = "";
16
+
12
17
  data = {};
18
+
19
+ /**
20
+ *
21
+ * @type {number}
22
+ */
13
23
  target = -1;
14
24
 
25
+ /**
26
+ *
27
+ * @param {string} event
28
+ * @param {Object} [data]
29
+ * @param {number} [target]
30
+ */
15
31
  fromJSON({ event, data = {}, target = -1 }) {
16
32
  assert.isString(event, 'event');
33
+ assert.isInteger(target, 'target');
17
34
 
18
35
  this.event = event;
19
36
  this.data = data;
20
37
  this.target = target;
21
38
  }
22
39
 
23
- static fromJSON(j) {
40
+ /**
41
+ *
42
+ * @param {{event:string, data?:Object, target?:number}} json
43
+ * @return {SendEventBehavior}
44
+ */
45
+ static fromJSON(json) {
24
46
  const r = new SendEventBehavior();
25
47
 
26
- r.fromJSON(j);
48
+ r.fromJSON(json);
27
49
 
28
50
  return r;
29
51
  }
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Wait for a given entity event via {@link EntityComponentDataset#addEntityEventListener}
3
- * No failure condition, will wait forever until the event is detected
3
+ * No failure condition, will wait forever until the event is detected.
4
+ * @see SendEventBehavior
4
5
  */
5
6
  export class WaitForEventBehavior extends EntityBehavior {
6
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"WaitForEventBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/ecs/WaitForEventBehavior.js"],"names":[],"mappings":"AAIA;;;GAGG;AACH;IA6BI;;;;OAIG;IACH,4BAFY,oBAAoB,CAQ/B;IAtCD;;;OAGG;IACH,OAFU,MAAM,CAEL;IAEX;;;OAGG;IACH,UAFU,OAAO,CAEA;IAEjB;;;;OAIG;IACH,QAFU,MAAM,CAEJ;IAEZ;;;aAMC;IAeD,wEAMC;;CA0BJ;;kBAIS,MAAM;;+BApFe,qBAAqB;+BADrB,sBAAsB"}
1
+ {"version":3,"file":"WaitForEventBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/ecs/WaitForEventBehavior.js"],"names":[],"mappings":"AAIA;;;;GAIG;AACH;IA6BI;;;;OAIG;IACH,4BAFY,oBAAoB,CAQ/B;IAtCD;;;OAGG;IACH,OAFU,MAAM,CAEL;IAEX;;;OAGG;IACH,UAFU,OAAO,CAEA;IAEjB;;;;OAIG;IACH,QAFU,MAAM,CAEJ;IAEZ;;;aAMC;IAeD,wEAMC;;CA0BJ;;kBAIS,MAAM;;+BArFe,qBAAqB;+BADrB,sBAAsB"}
@@ -4,7 +4,8 @@ import { EntityBehavior } from "./EntityBehavior.js";
4
4
 
5
5
  /**
6
6
  * Wait for a given entity event via {@link EntityComponentDataset#addEntityEventListener}
7
- * No failure condition, will wait forever until the event is detected
7
+ * No failure condition, will wait forever until the event is detected.
8
+ * @see SendEventBehavior
8
9
  */
9
10
  export class WaitForEventBehavior extends EntityBehavior {
10
11
 
@@ -2,12 +2,20 @@
2
2
  * Single-shot behavior that executes the given function and resolves {@link BehaviorStatus.SUCCESS}
3
3
  * @template CTX
4
4
  * @extends {Behavior<CTX>}
5
+ * @example
6
+ * // will print 'Hello World' in console when executed
7
+ * ActionBehavior.from( () => console.log('Hello World') );
5
8
  */
6
9
  export class ActionBehavior<CTX> extends Behavior<CTX> {
10
+ /**
11
+ * Constructor alias
12
+ * @returns {ActionBehavior}
13
+ */
14
+ static from(func: any, thisArg: any): ActionBehavior<any>;
7
15
  /**
8
16
  *
9
17
  * @param {function(timeDelta:number, context:CTX)} action
10
- * @param {*} [thisArg] defaults to behavior itself if not specified
18
+ * @param {*} [thisArg=this] defaults to behavior itself if not specified
11
19
  */
12
20
  constructor(action: any, thisArg?: any);
13
21
  __action: any;
@@ -1 +1 @@
1
- {"version":3,"file":"ActionBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/primitive/ActionBehavior.js"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,4BAHa,GAAG;IAIZ;;;;OAIG;IACH,mCAFW,GAAC,EAeX;IARG,cAAsB;IAIlB,eAAqB;IAM7B,uEAcC;CACJ;yBA5CwB,gBAAgB;+BACV,sBAAsB"}
1
+ {"version":3,"file":"ActionBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/primitive/ActionBehavior.js"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,4BANa,GAAG;IA2BZ;;;OAGG;IACH,0DAEC;IA1BD;;;;OAIG;IACH,mCAFW,GAAC,EAeX;IARG,cAAsB;IAIlB,eAAqB;IAc7B,uEAeC;CACJ;yBAxDwB,gBAAgB;+BACV,sBAAsB"}
@@ -6,12 +6,15 @@ import { BehaviorStatus } from "../BehaviorStatus.js";
6
6
  * Single-shot behavior that executes the given function and resolves {@link BehaviorStatus.SUCCESS}
7
7
  * @template CTX
8
8
  * @extends {Behavior<CTX>}
9
+ * @example
10
+ * // will print 'Hello World' in console when executed
11
+ * ActionBehavior.from( () => console.log('Hello World') );
9
12
  */
10
13
  export class ActionBehavior extends Behavior {
11
14
  /**
12
15
  *
13
16
  * @param {function(timeDelta:number, context:CTX)} action
14
- * @param {*} [thisArg] defaults to behavior itself if not specified
17
+ * @param {*} [thisArg=this] defaults to behavior itself if not specified
15
18
  */
16
19
  constructor(action, thisArg) {
17
20
  super();
@@ -28,9 +31,18 @@ export class ActionBehavior extends Behavior {
28
31
  }
29
32
  }
30
33
 
34
+ /**
35
+ * Constructor alias
36
+ * @returns {ActionBehavior}
37
+ */
38
+ static from(func, thisArg) {
39
+ return new ActionBehavior(func, thisArg);
40
+ }
41
+
31
42
  tick(timeDelta) {
32
43
 
33
44
  try {
45
+
34
46
  this.__action.call(this.__context, timeDelta, this.context);
35
47
 
36
48
  return BehaviorStatus.Succeeded;
@@ -1,7 +1,16 @@
1
1
  export class FailingBehavior extends Behavior<any> {
2
- constructor(delayTicks?: number);
3
- delayTicks: number;
4
- tick(td: any): BehaviorStatus.Running | BehaviorStatus.Failed;
2
+ /**
3
+ * @readonly
4
+ * @type {FailingBehavior}
5
+ */
6
+ static readonly INSTANCE: FailingBehavior;
7
+ /**
8
+ *
9
+ * @param [delayTicks] deprecated, do not use
10
+ */
11
+ constructor(delayTicks?: any);
12
+ initialize(context: any): void;
13
+ tick(td: any): BehaviorStatus;
5
14
  }
6
15
  export namespace FailingBehavior {
7
16
  let typeName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"FailingBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/primitive/FailingBehavior.js"],"names":[],"mappings":"AAGA;IACI,iCAIC;IADG,mBAA4B;IAGhC,8DASC;CACJ;;;;yBApBwB,gBAAgB;+BACV,sBAAsB"}
1
+ {"version":3,"file":"FailingBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/primitive/FailingBehavior.js"],"names":[],"mappings":"AAGA;IAuBI;;;OAGG;IACH,0BAFU,eAAe,CAE8B;IAzBvD;;;OAGG;IACH,8BAOC;IAED,+BAEC;IAED,8BAEC;CAQJ;;;;yBAhCwB,gBAAgB;+BACV,sBAAsB"}
@@ -2,22 +2,34 @@ import { Behavior } from "../Behavior.js";
2
2
  import { BehaviorStatus } from "../BehaviorStatus.js";
3
3
 
4
4
  export class FailingBehavior extends Behavior {
5
- constructor(delayTicks = 0) {
5
+
6
+ /**
7
+ *
8
+ * @param [delayTicks] deprecated, do not use
9
+ */
10
+ constructor(delayTicks) {
6
11
  super();
7
12
 
8
- this.delayTicks = delayTicks;
13
+ if (delayTicks !== undefined) {
14
+ throw new Error(`parameters deprecated, use SequenceBehavior to delay the failure instead`)
15
+ }
16
+
17
+ }
18
+
19
+ initialize(context) {
20
+ this.onInitialized.send2(this, context);
9
21
  }
10
22
 
11
23
  tick(td) {
12
- if (this.delayTicks === 0) {
24
+ return BehaviorStatus.Failed;
25
+ }
13
26
 
14
- return BehaviorStatus.Failed;
15
- } else {
16
- this.delayTicks--;
27
+ /**
28
+ * @readonly
29
+ * @type {FailingBehavior}
30
+ */
31
+ static INSTANCE = Object.freeze(new FailingBehavior());
17
32
 
18
- return BehaviorStatus.Running;
19
- }
20
- }
21
33
  }
22
34
 
23
35
  FailingBehavior.typeName = "FailingBehavior";
@@ -4,11 +4,6 @@
4
4
  * You usually want to use {@link INSTANCE} singleton
5
5
  */
6
6
  export class SucceedingBehavior extends Behavior<any> {
7
- /**
8
- * @deprecated use static INSTANCE instead
9
- * @return {SucceedingBehavior}
10
- */
11
- static from(): SucceedingBehavior;
12
7
  /**
13
8
  * @readonly
14
9
  * @type {SucceedingBehavior}
@@ -1 +1 @@
1
- {"version":3,"file":"SucceedingBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/primitive/SucceedingBehavior.js"],"names":[],"mappings":"AAGA;;;;GAIG;AACH;IAcI;;;OAGG;IACH,eAFY,kBAAkB,CAI7B;IAMD;;;OAGG;IACH,0BAFU,kBAAkB,CAE8B;IA5B1D,cAEC;IAED,+BAEC;IAcD,qCAEC;CAOJ;;;;yBAvCwB,gBAAgB;+BACV,sBAAsB"}
1
+ {"version":3,"file":"SucceedingBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/primitive/SucceedingBehavior.js"],"names":[],"mappings":"AAGA;;;;GAIG;AACH;IAUI;;;OAGG;IACH,0BAFU,kBAAkB,CAE8B;;IAZ1D,+BAEC;IAED,qCAEC;CAQJ;;;;yBAxBwB,gBAAgB;+BACV,sBAAsB"}
@@ -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";
@@ -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,UACD,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"}
@@ -25,7 +25,12 @@ export class WeightedElement {
25
25
  * @returns {WeightedElement<T>}
26
26
  */
27
27
  static from(element, weight) {
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"}