@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.
- 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/EntityComponentDataset.d.ts.map +1 -1
- package/src/engine/ecs/EntityComponentDataset.js +22 -3
- package/src/engine/ecs/dynamic_actions/DynamicActorSystem.js +1 -1
- package/src/engine/intelligence/behavior/composite/ParallelBehavior.d.ts +10 -2
- package/src/engine/intelligence/behavior/composite/ParallelBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/composite/ParallelBehavior.js +11 -2
- package/src/engine/intelligence/behavior/decorator/RepeatBehavior.d.ts +3 -3
- package/src/engine/intelligence/behavior/decorator/RepeatBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/decorator/RepeatBehavior.js +6 -4
- 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 +1 -1
- package/src/engine/intelligence/behavior/primitive/ActionBehavior.js +1 -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 +2 -2
- package/src/engine/intelligence/behavior/selector/WeightedElement.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/selector/WeightedElement.js +7 -2
- 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
|
@@ -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
|
|
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,
|
|
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;
|
|
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.
|
|
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
|
-
|
|
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) {
|