@woosh/meep-engine 2.120.5 → 2.121.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/editor/view/node-graph/NodeGraphEditorView.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
- package/editor/view/node-graph/NodeView.d.ts.map +1 -1
- package/editor/view/node-graph/PortView.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/core/codegen/LineBuilder.d.ts +2 -2
- package/src/core/codegen/LineBuilder.d.ts.map +1 -1
- package/src/core/codegen/LineBuilder.js +14 -9
- package/src/core/collection/array/array_set_diff_sorting.d.ts +1 -1
- package/src/core/collection/array/array_set_diff_sorting.js +1 -1
- package/src/core/color/oklab/find_cusp.d.ts.map +1 -1
- package/src/core/color/oklab/find_cusp.js +4 -1
- package/src/core/color/oklab/oklab_to_linear_srgb.d.ts.map +1 -1
- package/src/core/color/oklab/oklab_to_linear_srgb.js +1 -0
- package/src/core/color/operations/color_lighten.d.ts +1 -1
- package/src/core/color/operations/color_lighten.d.ts.map +1 -1
- package/src/core/color/operations/color_lighten.js +6 -1
- package/src/core/geom/Vector1.d.ts.map +1 -1
- package/src/core/geom/Vector1.js +15 -2
- package/src/core/process/action/AsynchronousDelayAction.js +1 -1
- package/src/engine/EntityCreator.js +1 -1
- package/src/engine/achievements/AchievementManager.js +1 -1
- package/src/engine/animation/AnimationUtils.js +1 -1
- package/src/engine/animation/async/prototypeAsyncAnimation.js +2 -2
- package/src/engine/animation/behavior/animateProperty.js +1 -1
- package/src/engine/animation/playTrackRealTime.js +1 -1
- package/src/engine/ecs/Entity.d.ts.map +1 -1
- package/src/engine/ecs/Entity.js +12 -7
- package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
- package/src/engine/ecs/EntityComponentDataset.js +14 -7
- package/src/engine/ecs/EntityReference.d.ts +4 -4
- package/src/engine/ecs/EntityReference.js +4 -4
- package/src/engine/ecs/dynamic_actions/DynamicActorSystem.js +1 -1
- package/src/engine/ecs/speaker/VoiceSystem.d.ts +8 -2
- package/src/engine/ecs/speaker/VoiceSystem.d.ts.map +1 -1
- package/src/engine/ecs/speaker/VoiceSystem.js +1 -1
- package/src/engine/ecs/util/hideEntityGracefully.js +3 -3
- package/src/engine/graphics/ecs/camera/filter/setup_filtered_camera_controller.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/filter/setup_filtered_camera_controller.js +6 -6
- package/src/engine/graphics/ecs/decal/v2/prototypeDecalSystem.js +1 -1
- package/src/engine/graphics/ecs/mesh-v2/aggregate/prototypeSGMesh.js +1 -1
- package/src/engine/graphics/ecs/mesh-v2/sample/prototypeShadedGeometry.js +2 -2
- package/src/engine/graphics/ecs/mesh-v2/sample/prototype_sg_raycast.js +1 -1
- package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +1 -1
- package/src/engine/graphics/ecs/trail2d/prototypeTrail2D.js +1 -1
- package/src/engine/graphics/impostors/octahedral/prototypeBaker.js +1 -1
- package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +2 -2
- package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +4 -4
- package/src/engine/graphics/sh3/path_tracer/make_one_vector3.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/make_sky_hosek.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/make_sky_rtiw.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/make_zero_vector3.d.ts.map +1 -1
- package/src/engine/input/devices/PointerDevice.js +1 -1
- package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts +79 -3
- package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/ecs/BehaviorComponent.js +24 -8
- package/src/engine/intelligence/behavior/ecs/BehaviorComponentSerializationAdapter.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/ecs/BehaviorComponentSerializationAdapter.js +2 -2
- package/src/engine/intelligence/behavior/ecs/BehaviorSystem.d.ts +33 -7
- package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts +3 -2
- package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/primitive/ActionBehavior.js +7 -5
- package/src/engine/intelligence/behavior/primitive/SucceedingBehavior.d.ts +10 -9
- package/src/engine/intelligence/behavior/primitive/SucceedingBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/primitive/SucceedingBehavior.js +19 -20
- package/src/engine/physics/fluid/prototype.js +1 -1
- package/src/engine/physics/inverse_kinematics/fabrik/prototype.js +1 -1
|
@@ -423,7 +423,7 @@ export class VoiceSystem extends AbstractContextSystem {
|
|
|
423
423
|
immediate: true
|
|
424
424
|
}))
|
|
425
425
|
.add(SerializationMetadata.Transient)
|
|
426
|
-
.add(BehaviorComponent.
|
|
426
|
+
.add(BehaviorComponent.from(SequenceBehavior.from([
|
|
427
427
|
// play intro animation
|
|
428
428
|
new AnimationBehavior(new AnimationTrackPlayback(SPEECH_BUBBLE_ANIMATION_INTRO, bubble_animation_update_function, view)),
|
|
429
429
|
// wait for a certain amount of time
|
|
@@ -81,7 +81,7 @@ addShutdown(Mesh, (mesh, builder, createEntity, createEntityThisArg) => {
|
|
|
81
81
|
|
|
82
82
|
const eb = createEntity.call(createEntityThisArg);
|
|
83
83
|
|
|
84
|
-
eb.add(BehaviorComponent.
|
|
84
|
+
eb.add(BehaviorComponent.from(SequenceBehavior.from([
|
|
85
85
|
scale,
|
|
86
86
|
DieBehavior.create()
|
|
87
87
|
])));
|
|
@@ -104,7 +104,7 @@ addShutdown(Light, (light, builder, createEntity, createEntityThisArg) => {
|
|
|
104
104
|
|
|
105
105
|
const eb = createEntity.call(createEntityThisArg);
|
|
106
106
|
|
|
107
|
-
eb.add(BehaviorComponent.
|
|
107
|
+
eb.add(BehaviorComponent.from(SequenceBehavior.from([
|
|
108
108
|
TransitionPropertyVectorXBehavior.from({
|
|
109
109
|
component: 'Light',
|
|
110
110
|
path: 'intensity',
|
|
@@ -146,7 +146,7 @@ addShutdown(SoundEmitter, (soundEmitter, builder, createEntity, createEntityThis
|
|
|
146
146
|
|
|
147
147
|
const eb = createEntity.call(createEntityThisArg);
|
|
148
148
|
|
|
149
|
-
eb.add(BehaviorComponent.
|
|
149
|
+
eb.add(BehaviorComponent.from(SequenceBehavior.from([
|
|
150
150
|
DelayBehavior.from(SHUTDOWN_GRACE_PERIOD - setVolume.duration),
|
|
151
151
|
setVolume,
|
|
152
152
|
DieBehavior.create()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup_filtered_camera_controller.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/ecs/camera/filter/setup_filtered_camera_controller.js"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AACH,2FANW,uBAAuB,GAIrB;IAAC,UAAU,EAAC,uBAAuB,CAAC;IAAC,MAAM,EAAC,MAAM,CAAA;CAAC,CA6D/D;
|
|
1
|
+
{"version":3,"file":"setup_filtered_camera_controller.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/ecs/camera/filter/setup_filtered_camera_controller.js"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AACH,2FANW,uBAAuB,GAIrB;IAAC,UAAU,EAAC,uBAAuB,CAAC;IAAC,MAAM,EAAC,MAAM,CAAA;CAAC,CA6D/D;oCArEmC,uCAAuC;mBAJxD,2BAA2B"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { assert } from "../../../../../core/assert.js";
|
|
2
|
-
import
|
|
2
|
+
import { clamp01 } from "../../../../../core/math/clamp01.js";
|
|
3
|
+
import { lerp } from "../../../../../core/math/lerp.js";
|
|
4
|
+
import { SerializationMetadata } from "../../../../ecs/components/SerializationMetadata.js";
|
|
3
5
|
import Entity from "../../../../ecs/Entity.js";
|
|
4
|
-
import { BehaviorComponent } from "../../../../intelligence/behavior/ecs/BehaviorComponent.js";
|
|
5
6
|
import { RepeatBehavior } from "../../../../intelligence/behavior/decorator/RepeatBehavior.js";
|
|
7
|
+
import { BehaviorComponent } from "../../../../intelligence/behavior/ecs/BehaviorComponent.js";
|
|
6
8
|
import { ActionBehavior } from "../../../../intelligence/behavior/primitive/ActionBehavior.js";
|
|
7
|
-
import
|
|
8
|
-
import { clamp01 } from "../../../../../core/math/clamp01.js";
|
|
9
|
-
import { lerp } from "../../../../../core/math/lerp.js";
|
|
9
|
+
import TopDownCameraController from "../topdown/TopDownCameraController.js";
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
*
|
|
@@ -36,7 +36,7 @@ export function setup_filtered_camera_controller({
|
|
|
36
36
|
const entityBuilder = new Entity();
|
|
37
37
|
|
|
38
38
|
entityBuilder
|
|
39
|
-
.add(BehaviorComponent.
|
|
39
|
+
.add(BehaviorComponent.from(
|
|
40
40
|
RepeatBehavior.from(
|
|
41
41
|
new ActionBehavior(time_delta => {
|
|
42
42
|
if (!remembered_value.equals(target)) {
|
|
@@ -372,7 +372,7 @@ function makeNormalTestDecal() {
|
|
|
372
372
|
.add(ShadedGeometry.from(DEBUG_BOX, new LineBasicMaterial(), DrawMode.LineSegments))
|
|
373
373
|
.add(transform)
|
|
374
374
|
.add(decal)
|
|
375
|
-
.add(BehaviorComponent.
|
|
375
|
+
.add(BehaviorComponent.from(RotationBehavior.fromJSON({ speed: 1, axis: Vector3.left })))
|
|
376
376
|
|
|
377
377
|
return entity;
|
|
378
378
|
}
|
|
@@ -43,7 +43,7 @@ function makeMovingShadedGeometry() {
|
|
|
43
43
|
return new Entity()
|
|
44
44
|
.add(new Transform())
|
|
45
45
|
.add(sg)
|
|
46
|
-
.add(BehaviorComponent.
|
|
46
|
+
.add(BehaviorComponent.from(b));
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
/**
|
|
@@ -126,7 +126,7 @@ async function main(engine) {
|
|
|
126
126
|
let iterator = 0;
|
|
127
127
|
|
|
128
128
|
new Entity()
|
|
129
|
-
.add(BehaviorComponent.
|
|
129
|
+
.add(BehaviorComponent.from(
|
|
130
130
|
RepeatBehavior.from(SequenceBehavior.from([
|
|
131
131
|
DelayBehavior.from(0.001),
|
|
132
132
|
RepeatBehavior.from(new ActionBehavior(() => {
|
|
@@ -38,7 +38,7 @@ async function main(engine) {
|
|
|
38
38
|
entity.add(Transform.fromJSON({
|
|
39
39
|
position: { x, y, z }
|
|
40
40
|
}));
|
|
41
|
-
entity.add(BehaviorComponent.
|
|
41
|
+
entity.add(BehaviorComponent.from(OrbitingBehavior.from({
|
|
42
42
|
center: new Vector3(x,y,z),
|
|
43
43
|
radius: 0.1-0.02
|
|
44
44
|
})))
|
package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js
CHANGED
|
@@ -994,7 +994,7 @@ function make_box_editor(engine, transform = new Transform()) {
|
|
|
994
994
|
}
|
|
995
995
|
}
|
|
996
996
|
]))
|
|
997
|
-
.add(BehaviorComponent.
|
|
997
|
+
.add(BehaviorComponent.loop(() => {
|
|
998
998
|
|
|
999
999
|
threeUpdateTransform(controls);
|
|
1000
1000
|
|
|
@@ -1210,7 +1210,7 @@ async function make_demo_volume({
|
|
|
1210
1210
|
v.attributes.color.lookup = lut;
|
|
1211
1211
|
|
|
1212
1212
|
new Entity()
|
|
1213
|
-
.add(BehaviorComponent.
|
|
1213
|
+
.add(BehaviorComponent.from(RepeatBehavior.from(new ActionBehavior((time) => {
|
|
1214
1214
|
time_total += time;
|
|
1215
1215
|
|
|
1216
1216
|
const _t = pingpong(time_total + period_offset, period);
|
|
@@ -338,7 +338,7 @@ function setup_scene_0(engine, ecd) {
|
|
|
338
338
|
b.offset.copy(transform.position);
|
|
339
339
|
|
|
340
340
|
builder
|
|
341
|
-
.add(BehaviorComponent.
|
|
341
|
+
.add(BehaviorComponent.from(b))
|
|
342
342
|
.build(ecd);
|
|
343
343
|
}
|
|
344
344
|
|
|
@@ -647,8 +647,8 @@ function setup_scene_3(engine, ecd) {
|
|
|
647
647
|
|
|
648
648
|
|
|
649
649
|
builder
|
|
650
|
-
.add(BehaviorComponent.
|
|
651
|
-
// .add(BehaviorComponent.
|
|
650
|
+
.add(BehaviorComponent.from(b))
|
|
651
|
+
// .add(BehaviorComponent.loop(()=>{
|
|
652
652
|
//
|
|
653
653
|
// }))
|
|
654
654
|
.build(ecd);
|
|
@@ -953,7 +953,7 @@ function setup_scene_2(engine, ecd) {
|
|
|
953
953
|
b.offset.copy(transform.position);
|
|
954
954
|
|
|
955
955
|
builder
|
|
956
|
-
.add(BehaviorComponent.
|
|
956
|
+
.add(BehaviorComponent.from(b))
|
|
957
957
|
.build(ecd);
|
|
958
958
|
}
|
|
959
959
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make_one_vector3.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/path_tracer/make_one_vector3.js"],"names":[],"mappings":"AAAA,+GAEC;AACD,
|
|
1
|
+
{"version":3,"file":"make_one_vector3.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/path_tracer/make_one_vector3.js"],"names":[],"mappings":"AAAA,+GAEC;AACD,uDACY,QAAG,EAAE,eAAU,EAAE,cAAS,EAAE,qBAAgB,UAKvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make_sky_hosek.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/path_tracer/make_sky_hosek.js"],"names":[],"mappings":"AAQA,
|
|
1
|
+
{"version":3,"file":"make_sky_hosek.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/path_tracer/make_sky_hosek.js"],"names":[],"mappings":"AAQA,2GAaY,WAAM,EAAE,kBAAa,EAAE,cAAS,EAAE,qBAAgB,UAsB7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make_sky_rtiw.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/path_tracer/make_sky_rtiw.js"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"make_sky_rtiw.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/path_tracer/make_sky_rtiw.js"],"names":[],"mappings":"AAEA,kCAGY,QAAG,EAAE,eAAU,EAAE,cAAS,EAAE,qBAAgB,UASvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make_zero_vector3.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/path_tracer/make_zero_vector3.js"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"make_zero_vector3.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/path_tracer/make_zero_vector3.js"],"names":[],"mappings":"AAAA,sCACY,QAAG,EAAE,eAAU,EAAE,cAAS,EAAE,qBAAgB,UAKvD"}
|
|
@@ -1,3 +1,79 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* ECS wrapper around a {@link Behavior} tree
|
|
3
|
+
*/
|
|
4
|
+
export class BehaviorComponent {
|
|
5
|
+
/**
|
|
6
|
+
* Executes input function every update cycle.
|
|
7
|
+
* Will run forever.
|
|
8
|
+
* @param {function(time_delta_seconds:number)} action function to loop over
|
|
9
|
+
* @param {*} [thisArg]
|
|
10
|
+
* @returns {BehaviorComponent}
|
|
11
|
+
*/
|
|
12
|
+
static loop(action: any, thisArg?: any): BehaviorComponent;
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
* @param {Behavior} b
|
|
16
|
+
* @returns {BehaviorComponent}
|
|
17
|
+
*/
|
|
18
|
+
static from(b: Behavior): BehaviorComponent;
|
|
19
|
+
/**
|
|
20
|
+
* What clock should be used for ticking associated behavior
|
|
21
|
+
* @type {ClockChannelType|number}
|
|
22
|
+
*/
|
|
23
|
+
clock: ClockChannelType | number;
|
|
24
|
+
/**
|
|
25
|
+
*
|
|
26
|
+
* @type {number}
|
|
27
|
+
*/
|
|
28
|
+
flags: number;
|
|
29
|
+
/**
|
|
30
|
+
* Associated behavior tree
|
|
31
|
+
* @type {Behavior|null}
|
|
32
|
+
* @private
|
|
33
|
+
*/
|
|
34
|
+
private __behavior;
|
|
35
|
+
/**
|
|
36
|
+
*
|
|
37
|
+
* @param {number|BehaviorComponentFlag} flag
|
|
38
|
+
* @returns {void}
|
|
39
|
+
*/
|
|
40
|
+
setFlag(flag: number | BehaviorComponentFlag): void;
|
|
41
|
+
/**
|
|
42
|
+
*
|
|
43
|
+
* @param {number|BehaviorComponentFlag} flag
|
|
44
|
+
* @returns {void}
|
|
45
|
+
*/
|
|
46
|
+
clearFlag(flag: number | BehaviorComponentFlag): void;
|
|
47
|
+
/**
|
|
48
|
+
*
|
|
49
|
+
* @param {number|BehaviorComponentFlag} flag
|
|
50
|
+
* @param {boolean} value
|
|
51
|
+
*/
|
|
52
|
+
writeFlag(flag: number | BehaviorComponentFlag, value: boolean): void;
|
|
53
|
+
/**
|
|
54
|
+
*
|
|
55
|
+
* @param {number|BehaviorComponentFlag} flag
|
|
56
|
+
* @returns {boolean}
|
|
57
|
+
*/
|
|
58
|
+
getFlag(flag: number | BehaviorComponentFlag): boolean;
|
|
59
|
+
/**
|
|
60
|
+
*
|
|
61
|
+
* @param {Behavior} v
|
|
62
|
+
*/
|
|
63
|
+
set behavior(v: Behavior);
|
|
64
|
+
/**
|
|
65
|
+
*
|
|
66
|
+
* @returns {Behavior|null}
|
|
67
|
+
*/
|
|
68
|
+
get behavior(): Behavior | null;
|
|
69
|
+
}
|
|
70
|
+
export namespace BehaviorComponent {
|
|
71
|
+
import fromOne = BehaviorComponent.from;
|
|
72
|
+
export { fromOne };
|
|
73
|
+
import looping_function = BehaviorComponent.loop;
|
|
74
|
+
export { looping_function };
|
|
75
|
+
export let serializable: boolean;
|
|
76
|
+
export let typeName: string;
|
|
77
|
+
}
|
|
78
|
+
import { ClockChannelType } from "./ClockChannelType.js";
|
|
79
|
+
//# sourceMappingURL=BehaviorComponent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BehaviorComponent.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/ecs/BehaviorComponent.js"],"names":[],"mappings":"AAKA;IA6EI
|
|
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"}
|
|
@@ -3,6 +3,9 @@ import { RepeatBehavior } from "../decorator/RepeatBehavior.js";
|
|
|
3
3
|
import { ActionBehavior } from "../primitive/ActionBehavior.js";
|
|
4
4
|
import { ClockChannelType } from "./ClockChannelType.js";
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* ECS wrapper around a {@link Behavior} tree
|
|
8
|
+
*/
|
|
6
9
|
export class BehaviorComponent {
|
|
7
10
|
|
|
8
11
|
/**
|
|
@@ -18,7 +21,7 @@ export class BehaviorComponent {
|
|
|
18
21
|
flags = 0;
|
|
19
22
|
|
|
20
23
|
/**
|
|
21
|
-
*
|
|
24
|
+
* Associated behavior tree
|
|
22
25
|
* @type {Behavior|null}
|
|
23
26
|
* @private
|
|
24
27
|
*/
|
|
@@ -81,15 +84,18 @@ export class BehaviorComponent {
|
|
|
81
84
|
}
|
|
82
85
|
|
|
83
86
|
/**
|
|
84
|
-
* Executes input function every update cycle
|
|
85
|
-
*
|
|
87
|
+
* Executes input function every update cycle.
|
|
88
|
+
* Will run forever.
|
|
89
|
+
* @param {function(time_delta_seconds:number)} action function to loop over
|
|
86
90
|
* @param {*} [thisArg]
|
|
87
91
|
* @returns {BehaviorComponent}
|
|
88
92
|
*/
|
|
89
|
-
static
|
|
90
|
-
return BehaviorComponent.
|
|
91
|
-
|
|
92
|
-
|
|
93
|
+
static loop(action, thisArg) {
|
|
94
|
+
return BehaviorComponent.from(
|
|
95
|
+
RepeatBehavior.from(
|
|
96
|
+
new ActionBehavior(action, thisArg)
|
|
97
|
+
)
|
|
98
|
+
);
|
|
93
99
|
}
|
|
94
100
|
|
|
95
101
|
/**
|
|
@@ -97,7 +103,7 @@ export class BehaviorComponent {
|
|
|
97
103
|
* @param {Behavior} b
|
|
98
104
|
* @returns {BehaviorComponent}
|
|
99
105
|
*/
|
|
100
|
-
static
|
|
106
|
+
static from(b) {
|
|
101
107
|
assert.defined(b, 'behavior');
|
|
102
108
|
assert.notNull(b, 'behavior');
|
|
103
109
|
assert.equal(b.isBehavior, true, 'b.isBehavior !== true');
|
|
@@ -111,6 +117,16 @@ export class BehaviorComponent {
|
|
|
111
117
|
}
|
|
112
118
|
}
|
|
113
119
|
|
|
120
|
+
/**
|
|
121
|
+
* @deprecated use {@link BehaviorComponent.from} instead
|
|
122
|
+
*/
|
|
123
|
+
BehaviorComponent.fromOne = BehaviorComponent.from;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* @deprecated use {@link BehaviorComponent.loop} instead
|
|
127
|
+
*/
|
|
128
|
+
BehaviorComponent.looping_function = BehaviorComponent.loop;
|
|
129
|
+
|
|
114
130
|
/**
|
|
115
131
|
* @readonly
|
|
116
132
|
* @type {boolean}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BehaviorComponentSerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/ecs/BehaviorComponentSerializationAdapter.js"],"names":[],"mappings":"AAKA;IAEI,gCAA0B;IAG1B;;;OAGG;IACH,eAFU,gCAAgC,CAErB;IAErB;;;;OAIG;IACH,mBAHW,cAAc,iBACd,gCAAgC,QAI1C;IAED;;;;OAIG;IACH,kBAHW,YAAY,SACZ,iBAAiB,QAc3B;IAED;;;;OAIG;IACH,oBAHW,YAAY,SACZ,iBAAiB,QA+B3B;CACJ;gDA/E+C,gEAAgE;
|
|
1
|
+
{"version":3,"file":"BehaviorComponentSerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/ecs/BehaviorComponentSerializationAdapter.js"],"names":[],"mappings":"AAKA;IAEI,gCAA0B;IAG1B;;;OAGG;IACH,eAFU,gCAAgC,CAErB;IAErB;;;;OAIG;IACH,mBAHW,cAAc,iBACd,gCAAgC,QAI1C;IAED;;;;OAIG;IACH,kBAHW,YAAY,SACZ,iBAAiB,QAc3B;IAED;;;;OAIG;IACH,oBAHW,YAAY,SACZ,iBAAiB,QA+B3B;CACJ;gDA/E+C,gEAAgE;kCAG9E,wBAAwB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BinaryClassSerializationAdapter } from "../../../ecs/storage/binary/BinaryClassSerializationAdapter.js";
|
|
2
|
-
import { BehaviorComponent } from "./BehaviorComponent.js";
|
|
3
2
|
import { SequenceBehavior } from "../composite/SequenceBehavior.js";
|
|
4
3
|
import { SucceedingBehavior } from "../primitive/SucceedingBehavior.js";
|
|
4
|
+
import { BehaviorComponent } from "./BehaviorComponent.js";
|
|
5
5
|
|
|
6
6
|
export class BehaviorComponentSerializationAdapter extends BinaryClassSerializationAdapter {
|
|
7
7
|
|
|
@@ -74,7 +74,7 @@ export class BehaviorComponentSerializationAdapter extends BinaryClassSerializat
|
|
|
74
74
|
} else if (behaviors.length === 1) {
|
|
75
75
|
value.behavior = behaviors[0];
|
|
76
76
|
} else {
|
|
77
|
-
value.behavior = SucceedingBehavior.
|
|
77
|
+
value.behavior = SucceedingBehavior.INSTANCE;
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
}
|
|
@@ -1,7 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
constructor(engine: Engine)
|
|
7
|
-
|
|
1
|
+
export class BehaviorSystem extends System<any, any, any, any, any> {
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* @param {Engine} engine
|
|
5
|
+
*/
|
|
6
|
+
constructor(engine: Engine);
|
|
7
|
+
dependencies: (typeof BehaviorComponent)[];
|
|
8
|
+
systemClock: Clock;
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
* @type {Engine}
|
|
12
|
+
*/
|
|
13
|
+
engine: Engine;
|
|
14
|
+
startup(entityManager: any, readyCallback: any, errorCallback: any): void;
|
|
15
|
+
shutdown(entityManager: any, readyCallback: any, errorCallback: any): void;
|
|
16
|
+
/**
|
|
17
|
+
*
|
|
18
|
+
* @param {BehaviorComponent} component
|
|
19
|
+
* @param {number} entity
|
|
20
|
+
*/
|
|
21
|
+
link(component: BehaviorComponent, entity: number): void;
|
|
22
|
+
/**
|
|
23
|
+
*
|
|
24
|
+
* @param {BehaviorComponent} component
|
|
25
|
+
* @param {number} entity
|
|
26
|
+
*/
|
|
27
|
+
unlink(component: BehaviorComponent, entity: number): void;
|
|
28
|
+
update(timeDelta: any): void;
|
|
29
|
+
}
|
|
30
|
+
import { System } from "../../../ecs/System.js";
|
|
31
|
+
import { BehaviorComponent } from "./BehaviorComponent.js";
|
|
32
|
+
import Clock from "../../../Clock.js";
|
|
33
|
+
//# sourceMappingURL=BehaviorSystem.d.ts.map
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* Single-shot behavior that executes the given function and resolves {@link BehaviorStatus.SUCCESS}
|
|
2
3
|
* @template CTX
|
|
3
4
|
* @extends {Behavior<CTX>}
|
|
4
5
|
*/
|
|
5
6
|
export class ActionBehavior<CTX> extends Behavior<CTX> {
|
|
6
7
|
/**
|
|
7
8
|
*
|
|
8
|
-
* @param {function(timeDelta:number, context:CTX)}
|
|
9
|
+
* @param {function(timeDelta:number, context:CTX)} action
|
|
9
10
|
* @param {*} [thisArg] defaults to behavior itself if not specified
|
|
10
11
|
*/
|
|
11
|
-
constructor(
|
|
12
|
+
constructor(action: any, thisArg?: any);
|
|
12
13
|
__action: any;
|
|
13
14
|
__context: any;
|
|
14
15
|
tick(timeDelta: any): BehaviorStatus.Succeeded | BehaviorStatus.Failed;
|
|
@@ -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;;;;GAIG;AACH,4BAHa,GAAG;IAIZ;;;;OAIG;IACH,mCAFW,GAAC,EAeX;IARG,cAAsB;IAIlB,eAAqB;IAM7B,uEAcC;CACJ;yBA5CwB,gBAAgB;+BACV,sBAAsB"}
|
|
@@ -1,25 +1,27 @@
|
|
|
1
|
+
import { assert } from "../../../../core/assert.js";
|
|
1
2
|
import { Behavior } from "../Behavior.js";
|
|
2
3
|
import { BehaviorStatus } from "../BehaviorStatus.js";
|
|
3
|
-
import { assert } from "../../../../core/assert.js";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
+
* Single-shot behavior that executes the given function and resolves {@link BehaviorStatus.SUCCESS}
|
|
6
7
|
* @template CTX
|
|
7
8
|
* @extends {Behavior<CTX>}
|
|
8
9
|
*/
|
|
9
10
|
export class ActionBehavior extends Behavior {
|
|
10
11
|
/**
|
|
11
12
|
*
|
|
12
|
-
* @param {function(timeDelta:number, context:CTX)}
|
|
13
|
+
* @param {function(timeDelta:number, context:CTX)} action
|
|
13
14
|
* @param {*} [thisArg] defaults to behavior itself if not specified
|
|
14
15
|
*/
|
|
15
|
-
constructor(
|
|
16
|
+
constructor(action, thisArg) {
|
|
16
17
|
super();
|
|
17
18
|
|
|
18
|
-
assert.
|
|
19
|
+
assert.isFunction(action, "action");
|
|
19
20
|
|
|
20
|
-
this.__action =
|
|
21
|
+
this.__action = action;
|
|
21
22
|
|
|
22
23
|
if (thisArg === undefined) {
|
|
24
|
+
// if thisArg is not supplied, will bind to behavior instead
|
|
23
25
|
this.__context = this;
|
|
24
26
|
} else {
|
|
25
27
|
this.__context = thisArg;
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Behavior that always succeeds
|
|
2
|
+
* Behavior that always succeeds.
|
|
3
|
+
* Useful when you need to specify a behavior to fulfill the API, but you don't actually want to perform any action.
|
|
4
|
+
* You usually want to use {@link INSTANCE} singleton
|
|
3
5
|
*/
|
|
4
6
|
export class SucceedingBehavior extends Behavior<any> {
|
|
5
7
|
/**
|
|
6
8
|
* @deprecated use static INSTANCE instead
|
|
7
|
-
* @param {number} delayTicks
|
|
8
9
|
* @return {SucceedingBehavior}
|
|
9
10
|
*/
|
|
10
|
-
static from(
|
|
11
|
-
static INSTANCE: SucceedingBehavior;
|
|
12
|
-
constructor(delayTicks?: number);
|
|
11
|
+
static from(): SucceedingBehavior;
|
|
13
12
|
/**
|
|
14
|
-
* @
|
|
15
|
-
* @type {
|
|
13
|
+
* @readonly
|
|
14
|
+
* @type {SucceedingBehavior}
|
|
16
15
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
static readonly INSTANCE: SucceedingBehavior;
|
|
17
|
+
constructor();
|
|
18
|
+
initialize(context: any): void;
|
|
19
|
+
tick(timeDelta: any): BehaviorStatus;
|
|
19
20
|
}
|
|
20
21
|
export namespace SucceedingBehavior {
|
|
21
22
|
let typeName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SucceedingBehavior.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/intelligence/behavior/primitive/SucceedingBehavior.js"],"names":[],"mappings":"AAGA
|
|
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"}
|
|
@@ -2,42 +2,41 @@ import { Behavior } from "../Behavior.js";
|
|
|
2
2
|
import { BehaviorStatus } from "../BehaviorStatus.js";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Behavior that always succeeds
|
|
5
|
+
* Behavior that always succeeds.
|
|
6
|
+
* Useful when you need to specify a behavior to fulfill the API, but you don't actually want to perform any action.
|
|
7
|
+
* You usually want to use {@link INSTANCE} singleton
|
|
6
8
|
*/
|
|
7
9
|
export class SucceedingBehavior extends Behavior {
|
|
8
|
-
|
|
10
|
+
|
|
11
|
+
constructor() {
|
|
9
12
|
super();
|
|
13
|
+
}
|
|
10
14
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
initialize(context) {
|
|
16
|
+
this.onInitialized.send2(this, context);
|
|
17
|
+
}
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
* @type {number}
|
|
18
|
-
*/
|
|
19
|
-
this.delayTicks = delayTicks;
|
|
19
|
+
finalize() {
|
|
20
|
+
this.onFinalized.send1(this);
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
/**
|
|
23
24
|
* @deprecated use static INSTANCE instead
|
|
24
|
-
* @param {number} delayTicks
|
|
25
25
|
* @return {SucceedingBehavior}
|
|
26
26
|
*/
|
|
27
|
-
static from(
|
|
28
|
-
|
|
27
|
+
static from() {
|
|
28
|
+
throw new Error(`Deprecated, use INSTANCE instead`)
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
tick(timeDelta) {
|
|
32
|
-
|
|
33
|
-
return BehaviorStatus.Succeeded;
|
|
34
|
-
} else {
|
|
35
|
-
this.delayTicks--;
|
|
36
|
-
return BehaviorStatus.Running;
|
|
37
|
-
}
|
|
32
|
+
return BehaviorStatus.Succeeded;
|
|
38
33
|
}
|
|
39
34
|
|
|
40
|
-
|
|
35
|
+
/**
|
|
36
|
+
* @readonly
|
|
37
|
+
* @type {SucceedingBehavior}
|
|
38
|
+
*/
|
|
39
|
+
static INSTANCE = Object.freeze(new SucceedingBehavior());
|
|
41
40
|
}
|
|
42
41
|
|
|
43
42
|
SucceedingBehavior.typeName = "SucceedingBehavior";
|
|
@@ -70,7 +70,7 @@ EngineHarness.bootstrap({
|
|
|
70
70
|
const lengths = chain.map(x => 0.1);
|
|
71
71
|
|
|
72
72
|
new Entity()
|
|
73
|
-
.add(BehaviorComponent.
|
|
73
|
+
.add(BehaviorComponent.loop(timeDelta => {
|
|
74
74
|
const last = joints[joints.length - 1];
|
|
75
75
|
const target = last.position.clone();
|
|
76
76
|
|