@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.
- package/build/bundle-worker-image-decoder.js +1 -1
- package/build/bundle-worker-terrain.js +1 -1
- package/package.json +1 -1
- package/src/core/assert.d.ts +6 -3
- package/src/core/assert.d.ts.map +1 -1
- package/src/core/assert.js +10 -3
- package/src/engine/ecs/Entity.d.ts.map +1 -1
- package/src/engine/ecs/Entity.js +8 -9
- package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
- package/src/engine/ecs/EntityComponentDataset.js +27 -4
- package/src/engine/ecs/dynamic_actions/DynamicActorSystem.js +1 -1
- package/src/engine/graphics/ecs/mesh-v2/render/optimization/RuntimeDrawMethodOptimizer.js +2 -2
- package/src/engine/intelligence/behavior/behavior_to_dot.js +1 -1
- package/src/engine/intelligence/behavior/composite/CompositeBehavior.d.ts +9 -4
- package/src/engine/intelligence/behavior/composite/CompositeBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/composite/CompositeBehavior.js +21 -15
- package/src/engine/intelligence/behavior/composite/ParallelBehavior.d.ts +14 -6
- package/src/engine/intelligence/behavior/composite/ParallelBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/composite/ParallelBehavior.js +23 -12
- package/src/engine/intelligence/behavior/composite/ParallelBehaviorSerializationAdapter.js +1 -1
- package/src/engine/intelligence/behavior/composite/SequenceBehavior.d.ts +2 -2
- package/src/engine/intelligence/behavior/composite/SequenceBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/composite/SequenceBehavior.js +3 -3
- package/src/engine/intelligence/behavior/composite/SequenceBehaviorSerializationAdapter.js +1 -1
- package/src/engine/intelligence/behavior/decorator/RepeatBehavior.d.ts +15 -20
- package/src/engine/intelligence/behavior/decorator/RepeatBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/decorator/RepeatBehavior.js +19 -26
- package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts +4 -3
- package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/ecs/BehaviorComponent.js +4 -3
- package/src/engine/intelligence/behavior/ecs/BehaviorSystem.d.ts +5 -2
- package/src/engine/intelligence/behavior/ecs/BehaviorSystem.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/ecs/BehaviorSystem.js +6 -3
- package/src/engine/intelligence/behavior/ecs/DieBehavior.d.ts +4 -0
- package/src/engine/intelligence/behavior/ecs/DieBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/ecs/DieBehavior.js +4 -1
- package/src/engine/intelligence/behavior/ecs/SendEventBehavior.d.ts +25 -6
- package/src/engine/intelligence/behavior/ecs/SendEventBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/ecs/SendEventBehavior.js +24 -2
- package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.d.ts +2 -1
- package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.js +2 -1
- package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts +9 -1
- package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/primitive/ActionBehavior.js +13 -1
- package/src/engine/intelligence/behavior/primitive/FailingBehavior.d.ts +12 -3
- package/src/engine/intelligence/behavior/primitive/FailingBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/primitive/FailingBehavior.js +21 -9
- package/src/engine/intelligence/behavior/primitive/SucceedingBehavior.d.ts +0 -5
- package/src/engine/intelligence/behavior/primitive/SucceedingBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/primitive/SucceedingBehavior.js +1 -16
- package/src/engine/intelligence/behavior/selector/WeightedElement.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/selector/WeightedElement.js +5 -0
- package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts +13 -1
- package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.js +29 -3
- 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
|
-
*
|
|
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} [
|
|
18
|
+
* @param {number} [limit=Infinity]
|
|
14
19
|
*/
|
|
15
|
-
constructor(source,
|
|
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 =
|
|
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
|
|
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;
|
|
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
|
-
|
|
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;
|
|
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
|
|
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
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DieBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/ecs/DieBehavior.js"],"names":[],"mappings":"AAGA;;GAEG;AACH;
|
|
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"}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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;
|
|
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
|
-
|
|
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(
|
|
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
|
|
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
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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;
|
|
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
|
-
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* @param [delayTicks] deprecated, do not use
|
|
9
|
+
*/
|
|
10
|
+
constructor(delayTicks) {
|
|
6
11
|
super();
|
|
7
12
|
|
|
8
|
-
|
|
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
|
-
|
|
24
|
+
return BehaviorStatus.Failed;
|
|
25
|
+
}
|
|
13
26
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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;
|
|
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,
|
|
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;
|
|
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"}
|