@woosh/meep-engine 2.54.0 → 2.55.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/package.json +1 -1
- package/src/core/__module.js +1 -1
- package/src/core/cache/Cache.js +1 -1
- package/src/core/collection/Stack.js +11 -14
- package/src/core/collection/array/array_contains_duplicates.js +5 -2
- package/src/core/collection/array/array_contains_duplicates.spec.js +14 -0
- package/src/core/collection/array/array_copy_entire.js +6 -11
- package/src/core/collection/array/array_get_index_in_range.js +5 -0
- package/src/core/collection/array/array_get_index_in_range.spec.js +16 -0
- package/src/core/collection/array/groupArrayBy.js +1 -1
- package/src/core/collection/array/isArrayEqual.js +4 -1
- package/src/core/collection/array/randomizeArrayElementOrder.js +1 -0
- package/src/core/collection/array/randomizeArrayElementOrder.spec.js +27 -0
- package/src/core/collection/heap/Uin32Heap.spec.js +64 -0
- package/src/core/collection/heap/Uint32Heap.js +6 -2
- package/src/core/collection/list/List.js +1 -0
- package/src/core/collection/{HashMap.js → map/HashMap.js} +10 -10
- package/src/core/collection/{HashMap.spec.js → map/HashMap.spec.js} +1 -1
- package/src/core/collection/{ObservedMap.js → map/ObservedMap.js} +1 -1
- package/src/core/collection/{HashSet.js → set/HashSet.js} +4 -3
- package/src/core/collection/{Set.d.ts → set/Set.d.ts} +1 -1
- package/src/core/collection/{Set.js → set/Set.js} +17 -14
- package/src/core/geom/2d/aabb/AABB2.js +1 -1
- package/src/core/geom/3d/aabb/AABB3.js +3 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_calc_edges.js +1 -1
- package/src/core/model/ObservedInteger.js +12 -7
- package/src/core/model/ObservedString.js +10 -8
- package/src/core/model/node-graph/visual/NodeGraphVisualData.js +1 -1
- package/src/core/model/object/ImmutableObjectPool.js +1 -1
- package/src/core/model/reactive/evaluation/MultiPredicateEvaluator.js +1 -1
- package/src/engine/asset/AssetManager.js +3 -3
- package/src/engine/asset/loaders/GLTFAssetLoader.js +1 -1
- package/src/engine/ecs/EntityBlueprint.js +8 -10
- package/src/engine/ecs/animation/AnimationSerializationAdapter.js +2 -5
- package/src/engine/ecs/components/Motion.js +0 -27
- package/src/engine/ecs/components/MotionSerializationAdapter.js +26 -0
- package/src/engine/ecs/components/PropertySet.js +0 -29
- package/src/engine/ecs/components/PropertySetSerializationAdapter.js +29 -0
- package/src/engine/ecs/components/SerializationMetadata.js +0 -28
- package/src/engine/ecs/components/SerializationMetadataSerializationAdapter.js +26 -0
- package/src/engine/ecs/components/Steering.js +0 -35
- package/src/engine/ecs/components/SteeringSerializationAdapter.js +34 -0
- package/src/engine/ecs/components/Tag.js +6 -102
- package/src/engine/ecs/components/TagSerializationAdapter.js +44 -0
- package/src/engine/ecs/components/TagSerializationUpgrader_0_1.js +18 -0
- package/src/engine/ecs/components/Timer.js +1 -1
- package/src/engine/ecs/dynamic_actions/DynamicActorSystem.js +1 -1
- package/src/engine/ecs/dynamic_actions/rules/DynamicRuleCooldownDescription.js +10 -14
- package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.js +31 -39
- package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.js +1 -1
- package/src/engine/ecs/dynamic_actions/{DynamicRuleDescriptionTable.spec.js → rules/DynamicRuleDescriptionTable.spec.js} +12 -12
- package/src/engine/ecs/foliage/ecs/InstancedMeshSerializationAdapter.js +2 -5
- package/src/engine/ecs/fow/serialization/FogOfWarRevealerSerializationAdapter.js +2 -5
- package/src/engine/ecs/fow/serialization/FogOfWarSerializationAdapter.js +5 -8
- package/src/engine/ecs/gui/GUIElementSerializationAdapter.js +2 -5
- package/src/engine/ecs/gui/hud/HeadsUpDisplaySerializationAdapter.js +3 -6
- package/src/engine/ecs/gui/position/ViewportPosition.js +2 -5
- package/src/engine/ecs/ik/IKConstraint.js +95 -0
- package/src/engine/ecs/ik/InverseKinematics.js +10 -169
- package/src/engine/ecs/ik/InverseKinematicsSerializationAdapter.js +72 -0
- package/src/engine/ecs/speaker/Voice.js +5 -8
- package/src/engine/ecs/speaker/VoiceSystem.js +15 -19
- package/src/engine/ecs/speaker/lines/LineDescription.js +20 -25
- package/src/engine/ecs/speaker/lines/sets/LineSetDescription.js +15 -19
- package/src/engine/ecs/storage/binary/BinaryClassSerializationAdapter.js +7 -0
- package/src/engine/ecs/storage/binary/collection/BinaryCollectionSerializer.js +1 -1
- package/src/engine/ecs/storage/binary/object/ObjectBasedClassSerializationAdapter.js +6 -9
- package/src/engine/ecs/team/TeamSerializationAdapter.js +2 -5
- package/src/engine/ecs/terrain/ecs/Terrain.spec.js +5 -0
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrain.js +23 -21
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSerializationAdapter.js +2 -5
- package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.js +2 -40
- package/src/engine/ecs/terrain/serialization/TerrainSerializationAdapter.js +7 -10
- package/src/engine/ecs/tooltip/TooltipComponent.spec.js +47 -0
- package/src/engine/ecs/tooltip/TooltipComponentSerializationAdapter.js +2 -5
- package/src/engine/ecs/transform/Transform.spec.js +52 -0
- package/src/engine/ecs/transform/TransformSerializationAdapter.js +2 -5
- package/src/engine/ecs/transform-attachment/TransformAttachment.js +18 -19
- package/src/engine/graphics/ecs/animation/AnimationController.js +20 -129
- package/src/engine/graphics/ecs/animation/AnimationControllerSerializationAdapter.js +27 -0
- package/src/engine/graphics/ecs/animation/AnimationRule.js +79 -0
- package/src/engine/graphics/ecs/animation/animator/graph/AnimationGraphSerializationAdapter.js +9 -11
- package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/AnimationGraphDefinitionSerializationAdapter.js +3 -5
- package/src/engine/graphics/ecs/camera/serialization/CameraSerializationAdapter.js +2 -5
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSerializationAdapter.js +2 -6
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraLander.js +3 -15
- package/src/engine/graphics/ecs/decal/v2/DecalSerializationAdapter.js +2 -4
- package/src/engine/graphics/ecs/highlight/HighlightSerializationAdapter.js +2 -5
- package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.js +1 -1
- package/src/engine/graphics/ecs/light/LightSerializationAdapter.js +2 -5
- package/src/engine/graphics/ecs/mesh/serialization/MeshSerializationAdapter.js +2 -5
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +3 -0
- package/src/engine/graphics/ecs/mesh-v2/render/adapters/InstancedRendererAdapter.js +1 -1
- package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +2 -5
- package/src/engine/graphics/geometry/optimization/merge/merge_geometry_hierarchy.js +1 -1
- package/src/engine/graphics/impostors/octahedral/ImpostorBaker.js +1 -1
- package/src/engine/graphics/material/manager/MaterialManager.js +1 -1
- package/src/engine/graphics/material/optimization/MaterialOptimizationContext.js +1 -1
- package/src/engine/graphics/particles/node-based/codegen/CodeContext.js +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js +2 -5
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.js +2 -5
- package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +1 -1
- package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.js +1 -1
- package/src/engine/graphics/texture/sampler/serialization/Sampler2DSerializationAdapter.js +2 -5
- package/src/engine/grid/grid2transform/GridPosition2Transform.js +11 -13
- package/src/engine/grid/grid2transform/GridPosition2TransformSerializationAdapter.js +3 -5
- package/src/engine/grid/obstacle/GridObstacleSerializationAdapter.js +2 -5
- package/src/engine/grid/position/GridPositionSerializationAdapter.js +2 -5
- package/src/engine/grid/transform2grid/Transform2GridPosition.js +10 -13
- package/src/engine/input/devices/KeyboardDevice.js +5 -2
- package/src/engine/input/devices/KeyboardDevice.spec.js +12 -0
- package/src/engine/input/devices/PointerDevice.js +5 -1
- package/src/engine/input/ecs/components/Input.js +37 -11
- package/src/engine/input/ecs/ism/InputBinding.js +30 -12
- package/src/engine/intelligence/behavior/ecs/BehaviorComponentSerializationAdapter.js +7 -10
- package/src/engine/intelligence/behavior/ecs/WaitForEventBehaviorSerializationAdapter.js +2 -5
- package/src/engine/intelligence/behavior/primitive/FailingBehaviorSerializationAdapter.js +2 -6
- package/src/engine/intelligence/behavior/primitive/SucceedingBehaviorSerializationAdapter.js +2 -5
- package/src/engine/intelligence/blackboard/BlackboardSerializationAdapter.js +2 -5
- package/src/engine/knowledge/database/StaticKnowledgeDatabase.js +12 -13
- package/src/engine/knowledge/database/StaticKnowledgeDatabase.spec.js +23 -0
- package/src/engine/navigation/ecs/components/PathSerializationAdapter.js +2 -5
- package/src/engine/navigation/ecs/path_following/PathFollowerSerializationAdapter.js +2 -5
- package/src/engine/navigation/grid/find_path_on_grid_astar.spec.js +25 -0
- package/src/engine/options/OptionAbstract.js +6 -5
- package/src/engine/options/OptionGroup.js +13 -25
- package/src/engine/options/OptionGroup.spec.js +61 -0
- package/src/engine/save/storage/InMemoryStorage.js +3 -2
- package/src/engine/sound/ecs/SoundController.js +2 -6
- package/src/engine/sound/ecs/SoundListener.js +3 -21
- package/src/engine/sound/ecs/emitter/SoundEmitterSerializationAdapter.js +2 -6
- package/src/generation/theme/ThemeEngine.js +1 -1
- package/src/core/collection/LazyStream.js +0 -23
- package/src/core/collection/LazyStream.spec.js +0 -13
- package/src/core/collection/heap/BinaryHeap.js +0 -153
- package/src/engine/ecs/components/GeometryBVH.js +0 -44
- package/src/engine/ecs/systems/GeometryBVHSystem.js +0 -36
- /package/src/core/collection/{HashMap.d.ts → map/HashMap.d.ts} +0 -0
- /package/src/core/collection/{HashSet.d.ts → set/HashSet.d.ts} +0 -0
|
@@ -2,12 +2,9 @@ import { BinaryClassSerializationAdapter } from "../../storage/binary/BinaryClas
|
|
|
2
2
|
import { FogOfWarRevealer } from "../FogOfWarRevealer.js";
|
|
3
3
|
|
|
4
4
|
export class FogOfWarRevealerSerializationAdapter extends BinaryClassSerializationAdapter {
|
|
5
|
-
constructor() {
|
|
6
|
-
super();
|
|
7
5
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
6
|
+
klass = FogOfWarRevealer;
|
|
7
|
+
version = 0;
|
|
11
8
|
|
|
12
9
|
/**
|
|
13
10
|
*
|
|
@@ -7,14 +7,11 @@ import {
|
|
|
7
7
|
} from "../../../graphics/texture/sampler/serialization/Sampler2DSerializationAdapter.js";
|
|
8
8
|
|
|
9
9
|
export class FogOfWarSerializationAdapter extends BinaryClassSerializationAdapter {
|
|
10
|
-
constructor() {
|
|
11
|
-
super();
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
klass = FogOfWar;
|
|
12
|
+
version = 1;
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
}
|
|
14
|
+
__sampler_serializer = new Sampler2DSerializationAdapter();
|
|
18
15
|
|
|
19
16
|
/**
|
|
20
17
|
*
|
|
@@ -40,7 +37,7 @@ export class FogOfWarSerializationAdapter extends BinaryClassSerializationAdapte
|
|
|
40
37
|
|
|
41
38
|
buffer.writeUint32(color);
|
|
42
39
|
|
|
43
|
-
this.__sampler_serializer.serialize(buffer,value.sampler);
|
|
40
|
+
this.__sampler_serializer.serialize(buffer, value.sampler);
|
|
44
41
|
|
|
45
42
|
//serialize reveal state
|
|
46
43
|
serializeRowFirstTable(buffer, value.fadeMask);
|
|
@@ -73,7 +70,7 @@ export class FogOfWarSerializationAdapter extends BinaryClassSerializationAdapte
|
|
|
73
70
|
color_a / 255
|
|
74
71
|
);
|
|
75
72
|
|
|
76
|
-
this.__sampler_serializer.deserialize(buffer,value.sampler);
|
|
73
|
+
this.__sampler_serializer.deserialize(buffer, value.sampler);
|
|
77
74
|
|
|
78
75
|
//deserialize reveal state
|
|
79
76
|
deserializeRowFirstTable(buffer, value.fadeMask);
|
|
@@ -2,12 +2,9 @@ import { BinaryClassSerializationAdapter } from "../storage/binary/BinaryClassSe
|
|
|
2
2
|
import GUIElement, { GUIElementFlag } from "./GUIElement.js";
|
|
3
3
|
|
|
4
4
|
export class GUIElementSerializationAdapter extends BinaryClassSerializationAdapter {
|
|
5
|
-
constructor() {
|
|
6
|
-
super();
|
|
7
5
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
6
|
+
klass = GUIElement;
|
|
7
|
+
version = 0;
|
|
11
8
|
|
|
12
9
|
/**
|
|
13
10
|
*
|
|
@@ -2,12 +2,9 @@ import { BinaryClassSerializationAdapter } from "../../storage/binary/BinaryClas
|
|
|
2
2
|
import HeadsUpDisplay from "./HeadsUpDisplay.js";
|
|
3
3
|
|
|
4
4
|
export class HeadsUpDisplaySerializationAdapter extends BinaryClassSerializationAdapter {
|
|
5
|
-
constructor() {
|
|
6
|
-
super();
|
|
7
5
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
6
|
+
klass = HeadsUpDisplay;
|
|
7
|
+
version = 0;
|
|
11
8
|
|
|
12
9
|
/**
|
|
13
10
|
*
|
|
@@ -16,7 +13,7 @@ export class HeadsUpDisplaySerializationAdapter extends BinaryClassSerialization
|
|
|
16
13
|
*/
|
|
17
14
|
serialize(buffer, value) {
|
|
18
15
|
value.worldOffset.toBinaryBuffer(buffer);
|
|
19
|
-
buffer.writeUint8(value.flags
|
|
16
|
+
buffer.writeUint8(value.flags);
|
|
20
17
|
}
|
|
21
18
|
|
|
22
19
|
/**
|
|
@@ -151,12 +151,9 @@ ViewportPosition.serializable = true;
|
|
|
151
151
|
export default ViewportPosition;
|
|
152
152
|
|
|
153
153
|
export class ViewportPositionSerializationAdapter extends BinaryClassSerializationAdapter {
|
|
154
|
-
constructor() {
|
|
155
|
-
super();
|
|
156
154
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
}
|
|
155
|
+
version = 0;
|
|
156
|
+
klass = ViewportPosition;
|
|
160
157
|
|
|
161
158
|
/**
|
|
162
159
|
*
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { NumericInterval } from "../../../core/math/interval/NumericInterval.js";
|
|
2
|
+
import { computeHashIntegerArray } from "../../../core/collection/array/computeHashIntegerArray.js";
|
|
3
|
+
import { computeStringHash } from "../../../core/primitives/strings/computeStringHash.js";
|
|
4
|
+
import { computeHashFloat } from "../../../core/primitives/numbers/computeHashFloat.js";
|
|
5
|
+
|
|
6
|
+
export class IKConstraint {
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* End bone that is going to be placed
|
|
10
|
+
* @type {String}
|
|
11
|
+
*/
|
|
12
|
+
effector = "";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* How far should effector be from the contact, positive values result in effector not reaching the surface, and negative result in penetration
|
|
16
|
+
* @example For a foot effector this would be distance above the ground
|
|
17
|
+
* @type {number}
|
|
18
|
+
*/
|
|
19
|
+
offset = 0;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Positive distance from the surface at which IK starts to take effect, low value represents full effect and high value represents where the influence begins
|
|
23
|
+
* @type {NumericInterval}
|
|
24
|
+
*/
|
|
25
|
+
distance = new NumericInterval(0, 0);
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
*
|
|
29
|
+
* @type {number}
|
|
30
|
+
*/
|
|
31
|
+
strength = 1;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
*
|
|
35
|
+
* @type {number}
|
|
36
|
+
*/
|
|
37
|
+
limit = Math.PI;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Solver to be used for this constraint
|
|
41
|
+
* @type {string}
|
|
42
|
+
*/
|
|
43
|
+
solver = "2BIK";
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
*
|
|
48
|
+
* @param {IKConstraint} other
|
|
49
|
+
*/
|
|
50
|
+
copy(other) {
|
|
51
|
+
this.effector = other.effector;
|
|
52
|
+
this.offset = other.offset;
|
|
53
|
+
this.distance.copy(other.distance);
|
|
54
|
+
this.strength = other.strength;
|
|
55
|
+
this.limit = other.limit;
|
|
56
|
+
this.solver = other.solver;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
clone() {
|
|
60
|
+
const r = new IKConstraint();
|
|
61
|
+
|
|
62
|
+
r.copy(this);
|
|
63
|
+
|
|
64
|
+
return r;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
*
|
|
69
|
+
* @param {IKConstraint} other
|
|
70
|
+
* @returns {boolean}
|
|
71
|
+
*/
|
|
72
|
+
equals(other) {
|
|
73
|
+
return this.effector === other.effector
|
|
74
|
+
&& this.offset === other.offset
|
|
75
|
+
&& this.distance.equals(other.distance)
|
|
76
|
+
&& this.strength === other.strength
|
|
77
|
+
&& this.limit === other.limit
|
|
78
|
+
&& this.solver === other.solver;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
*
|
|
83
|
+
* @return {number}
|
|
84
|
+
*/
|
|
85
|
+
hash() {
|
|
86
|
+
return computeHashIntegerArray(
|
|
87
|
+
computeStringHash(this.effector),
|
|
88
|
+
computeHashFloat(this.offset),
|
|
89
|
+
this.distance.hash(),
|
|
90
|
+
computeHashFloat(this.strength),
|
|
91
|
+
computeHashFloat(this.limit),
|
|
92
|
+
computeStringHash(this.solver)
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -1,100 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { NumericInterval } from "../../../core/math/interval/NumericInterval.js";
|
|
3
|
-
import { computeStringHash } from "../../../core/primitives/strings/computeStringHash.js";
|
|
4
|
-
import { computeHashIntegerArray } from "../../../core/collection/array/computeHashIntegerArray.js";
|
|
5
|
-
import { computeHashFloat } from "../../../core/primitives/numbers/computeHashFloat.js";
|
|
6
|
-
|
|
7
|
-
class IKConstraint {
|
|
8
|
-
constructor() {
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* End bone that is going to be placed
|
|
12
|
-
* @type {String}
|
|
13
|
-
*/
|
|
14
|
-
this.effector = "";
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* How far should effector be from the contact, positive values result in effector not reaching the surface, and negative result in penetration
|
|
18
|
-
* @example For a foot effector this would be distance above the ground
|
|
19
|
-
* @type {number}
|
|
20
|
-
*/
|
|
21
|
-
this.offset = 0;
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Positive distance from the surface at which IK starts to take effect, low value represents full effect and high value represents where the influence begins
|
|
25
|
-
* @type {NumericInterval}
|
|
26
|
-
*/
|
|
27
|
-
this.distance = new NumericInterval(0, 0);
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
*
|
|
31
|
-
* @type {number}
|
|
32
|
-
*/
|
|
33
|
-
this.strength = 1;
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
*
|
|
37
|
-
* @type {number}
|
|
38
|
-
*/
|
|
39
|
-
this.limit = Math.PI;
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Solver to be used for this constraint
|
|
43
|
-
* @type {string}
|
|
44
|
-
*/
|
|
45
|
-
this.solver = "2BIK";
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
*
|
|
50
|
-
* @param {IKConstraint} other
|
|
51
|
-
*/
|
|
52
|
-
copy(other) {
|
|
53
|
-
this.effector = other.effector;
|
|
54
|
-
this.offset = other.offset;
|
|
55
|
-
this.distance.copy(other.distance);
|
|
56
|
-
this.strength = other.strength;
|
|
57
|
-
this.limit = other.limit;
|
|
58
|
-
this.solver = other.solver;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
clone() {
|
|
62
|
-
const r = new IKConstraint();
|
|
63
|
-
|
|
64
|
-
r.copy(this);
|
|
65
|
-
|
|
66
|
-
return r;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
*
|
|
71
|
-
* @param {IKConstraint} other
|
|
72
|
-
* @returns {boolean}
|
|
73
|
-
*/
|
|
74
|
-
equals(other) {
|
|
75
|
-
return this.effector === other.effector
|
|
76
|
-
&& this.offset === other.offset
|
|
77
|
-
&& this.distance.equals(other.distance)
|
|
78
|
-
&& this.strength === other.strength
|
|
79
|
-
&& this.limit === other.limit
|
|
80
|
-
&& this.solver === other.solver;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
*
|
|
85
|
-
* @return {number}
|
|
86
|
-
*/
|
|
87
|
-
hash() {
|
|
88
|
-
return computeHashIntegerArray(
|
|
89
|
-
computeStringHash(this.effector),
|
|
90
|
-
computeHashFloat(this.offset),
|
|
91
|
-
this.distance.hash(),
|
|
92
|
-
computeHashFloat(this.strength),
|
|
93
|
-
computeHashFloat(this.limit),
|
|
94
|
-
computeStringHash(this.solver)
|
|
95
|
-
);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
1
|
+
import { IKConstraint } from "./IKConstraint.js";
|
|
98
2
|
|
|
99
3
|
|
|
100
4
|
export class InverseKinematics {
|
|
@@ -143,7 +47,15 @@ export class InverseKinematics {
|
|
|
143
47
|
* @param {number} limit
|
|
144
48
|
* @param {String} solver
|
|
145
49
|
*/
|
|
146
|
-
add({
|
|
50
|
+
add({
|
|
51
|
+
effector,
|
|
52
|
+
offset = 0,
|
|
53
|
+
distanceMin = 0,
|
|
54
|
+
distanceMax = 0.1,
|
|
55
|
+
strength = 1,
|
|
56
|
+
limit = Math.PI * 0.9,
|
|
57
|
+
solver = "2BIK"
|
|
58
|
+
}) {
|
|
147
59
|
const c = new IKConstraint();
|
|
148
60
|
|
|
149
61
|
c.effector = effector;
|
|
@@ -205,74 +117,3 @@ export class InverseKinematics {
|
|
|
205
117
|
|
|
206
118
|
InverseKinematics.typeName = "InverseKinematics";
|
|
207
119
|
|
|
208
|
-
export class InverseKinematicsSerializationAdapter extends BinaryClassSerializationAdapter {
|
|
209
|
-
constructor() {
|
|
210
|
-
super();
|
|
211
|
-
|
|
212
|
-
this.klass = InverseKinematics;
|
|
213
|
-
this.version = 0;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
*
|
|
218
|
-
* @param {BinaryBuffer} buffer
|
|
219
|
-
* @param {InverseKinematics} value
|
|
220
|
-
*/
|
|
221
|
-
serialize(buffer, value) {
|
|
222
|
-
const constraints = value.constraints;
|
|
223
|
-
const n = constraints.length;
|
|
224
|
-
buffer.writeUintVar(n);
|
|
225
|
-
|
|
226
|
-
for (let i = 0; i < n; i++) {
|
|
227
|
-
const constraint = constraints[i];
|
|
228
|
-
|
|
229
|
-
buffer.writeUTF8String(constraint.effector);
|
|
230
|
-
|
|
231
|
-
buffer.writeFloat32(constraint.offset);
|
|
232
|
-
buffer.writeFloat32(constraint.strength);
|
|
233
|
-
buffer.writeFloat32(constraint.limit);
|
|
234
|
-
|
|
235
|
-
buffer.writeFloat32(constraint.distance.min);
|
|
236
|
-
buffer.writeFloat32(constraint.distance.max);
|
|
237
|
-
|
|
238
|
-
buffer.writeUTF8String(constraint.solver);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
*
|
|
244
|
-
* @param {BinaryBuffer} buffer
|
|
245
|
-
* @param {InverseKinematics} value
|
|
246
|
-
*/
|
|
247
|
-
deserialize(buffer, value) {
|
|
248
|
-
const n = buffer.readUintVar();
|
|
249
|
-
|
|
250
|
-
const constraints = [];
|
|
251
|
-
|
|
252
|
-
for (let i = 0; i < n; i++) {
|
|
253
|
-
const effector = buffer.readUTF8String();
|
|
254
|
-
|
|
255
|
-
const offset = buffer.readFloat32();
|
|
256
|
-
const strength = buffer.readFloat32();
|
|
257
|
-
const limit = buffer.readFloat32();
|
|
258
|
-
|
|
259
|
-
const distanceMin = buffer.readFloat32();
|
|
260
|
-
const distanceMax = buffer.readFloat32();
|
|
261
|
-
|
|
262
|
-
const solver = buffer.readUTF8String();
|
|
263
|
-
|
|
264
|
-
const ikConstraint = new IKConstraint();
|
|
265
|
-
|
|
266
|
-
ikConstraint.effector = effector;
|
|
267
|
-
ikConstraint.offset = offset;
|
|
268
|
-
ikConstraint.strength = strength;
|
|
269
|
-
ikConstraint.limit = limit;
|
|
270
|
-
ikConstraint.distance.set(distanceMin, distanceMax);
|
|
271
|
-
ikConstraint.solver = solver;
|
|
272
|
-
|
|
273
|
-
constraints.push(ikConstraint);
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
value.constraints = constraints;
|
|
277
|
-
}
|
|
278
|
-
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { BinaryClassSerializationAdapter } from "../storage/binary/BinaryClassSerializationAdapter.js";
|
|
2
|
+
import { IKConstraint } from "./IKConstraint.js";
|
|
3
|
+
import { InverseKinematics } from "./InverseKinematics.js";
|
|
4
|
+
|
|
5
|
+
export class InverseKinematicsSerializationAdapter extends BinaryClassSerializationAdapter {
|
|
6
|
+
|
|
7
|
+
klass = InverseKinematics;
|
|
8
|
+
version = 0;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @param {BinaryBuffer} buffer
|
|
13
|
+
* @param {InverseKinematics} value
|
|
14
|
+
*/
|
|
15
|
+
serialize(buffer, value) {
|
|
16
|
+
const constraints = value.constraints;
|
|
17
|
+
const n = constraints.length;
|
|
18
|
+
buffer.writeUintVar(n);
|
|
19
|
+
|
|
20
|
+
for (let i = 0; i < n; i++) {
|
|
21
|
+
const constraint = constraints[i];
|
|
22
|
+
|
|
23
|
+
buffer.writeUTF8String(constraint.effector);
|
|
24
|
+
|
|
25
|
+
buffer.writeFloat32(constraint.offset);
|
|
26
|
+
buffer.writeFloat32(constraint.strength);
|
|
27
|
+
buffer.writeFloat32(constraint.limit);
|
|
28
|
+
|
|
29
|
+
buffer.writeFloat32(constraint.distance.min);
|
|
30
|
+
buffer.writeFloat32(constraint.distance.max);
|
|
31
|
+
|
|
32
|
+
buffer.writeUTF8String(constraint.solver);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
* @param {BinaryBuffer} buffer
|
|
39
|
+
* @param {InverseKinematics} value
|
|
40
|
+
*/
|
|
41
|
+
deserialize(buffer, value) {
|
|
42
|
+
const n = buffer.readUintVar();
|
|
43
|
+
|
|
44
|
+
const constraints = [];
|
|
45
|
+
|
|
46
|
+
for (let i = 0; i < n; i++) {
|
|
47
|
+
const effector = buffer.readUTF8String();
|
|
48
|
+
|
|
49
|
+
const offset = buffer.readFloat32();
|
|
50
|
+
const strength = buffer.readFloat32();
|
|
51
|
+
const limit = buffer.readFloat32();
|
|
52
|
+
|
|
53
|
+
const distanceMin = buffer.readFloat32();
|
|
54
|
+
const distanceMax = buffer.readFloat32();
|
|
55
|
+
|
|
56
|
+
const solver = buffer.readUTF8String();
|
|
57
|
+
|
|
58
|
+
const ikConstraint = new IKConstraint();
|
|
59
|
+
|
|
60
|
+
ikConstraint.effector = effector;
|
|
61
|
+
ikConstraint.offset = offset;
|
|
62
|
+
ikConstraint.strength = strength;
|
|
63
|
+
ikConstraint.limit = limit;
|
|
64
|
+
ikConstraint.distance.set(distanceMin, distanceMax);
|
|
65
|
+
ikConstraint.solver = solver;
|
|
66
|
+
|
|
67
|
+
constraints.push(ikConstraint);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
value.constraints = constraints;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -52,25 +52,21 @@ const TIMING_MINIMUM_READ_TIME = 1.2;
|
|
|
52
52
|
const temp_lines = [];
|
|
53
53
|
|
|
54
54
|
class LineWeigher {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
* @type {number}
|
|
71
|
-
*/
|
|
72
|
-
this.time = 0;
|
|
73
|
-
}
|
|
55
|
+
/**
|
|
56
|
+
*
|
|
57
|
+
* @type {number}
|
|
58
|
+
*/
|
|
59
|
+
entity = -1;
|
|
60
|
+
/**
|
|
61
|
+
*
|
|
62
|
+
* @type {VoiceSystem}
|
|
63
|
+
*/
|
|
64
|
+
system = null;
|
|
65
|
+
/**
|
|
66
|
+
*
|
|
67
|
+
* @type {number}
|
|
68
|
+
*/
|
|
69
|
+
time = 0;
|
|
74
70
|
|
|
75
71
|
/**
|
|
76
72
|
*
|
|
@@ -1,31 +1,26 @@
|
|
|
1
1
|
import { assert } from "../../../../core/assert.js";
|
|
2
2
|
|
|
3
3
|
export class LineDescription {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
* Time the line should be displayed on the screen before being removed, normalized value, 1 means standard, 1.5 means 50% longer
|
|
25
|
-
* @type {number}
|
|
26
|
-
*/
|
|
27
|
-
this.displayDuration = 1;
|
|
28
|
-
}
|
|
4
|
+
/**
|
|
5
|
+
* Unique id
|
|
6
|
+
* @type {string}
|
|
7
|
+
*/
|
|
8
|
+
id = "";
|
|
9
|
+
/**
|
|
10
|
+
* Comment about the line, useful for development purposes
|
|
11
|
+
* @type {string}
|
|
12
|
+
*/
|
|
13
|
+
comment = "";
|
|
14
|
+
/**
|
|
15
|
+
* Localization key for the line of text
|
|
16
|
+
* @type {string}
|
|
17
|
+
*/
|
|
18
|
+
text = "";
|
|
19
|
+
/**
|
|
20
|
+
* Time the line should be displayed on the screen before being removed, normalized value, 1 means standard, 1.5 means 50% longer
|
|
21
|
+
* @type {number}
|
|
22
|
+
*/
|
|
23
|
+
displayDuration = 1;
|
|
29
24
|
|
|
30
25
|
fromJSON({
|
|
31
26
|
id,
|
|
@@ -1,25 +1,21 @@
|
|
|
1
1
|
const temp_array = [];
|
|
2
2
|
|
|
3
3
|
export class LineSetDescription {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
* @type {LineSetDescription[]}
|
|
20
|
-
*/
|
|
21
|
-
this.sets = [];
|
|
22
|
-
}
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* @type {string}
|
|
7
|
+
*/
|
|
8
|
+
id = "";
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
* @type {LineDescription[]}
|
|
12
|
+
*/
|
|
13
|
+
lines = [];
|
|
14
|
+
/**
|
|
15
|
+
*
|
|
16
|
+
* @type {LineSetDescription[]}
|
|
17
|
+
*/
|
|
18
|
+
sets = [];
|
|
23
19
|
|
|
24
20
|
/**
|
|
25
21
|
* Collect all lines from this set recursively
|
|
@@ -1,12 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defines how to serialize and deserialize an instance of a given class
|
|
3
|
+
*/
|
|
1
4
|
export class BinaryClassSerializationAdapter {
|
|
2
5
|
|
|
3
6
|
/**
|
|
7
|
+
* Class that this adapter handles
|
|
4
8
|
* @protected
|
|
5
9
|
* @type {Class}
|
|
6
10
|
*/
|
|
7
11
|
klass = null;
|
|
8
12
|
|
|
9
13
|
/**
|
|
14
|
+
* Format version number, used to check for format changes and data compatibility
|
|
15
|
+
* Increment the number if you change the adapter to indicate the change in format
|
|
16
|
+
* See {@link BinaryClassUpgrader} for details on how to handle support for outdated format versions
|
|
10
17
|
* @protected
|
|
11
18
|
* @type {number}
|
|
12
19
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { assert } from "../../../../../core/assert.js";
|
|
2
2
|
import { BinaryCollectionHeaderCodec, BinaryCollectionHeaderLayout } from "./BinaryCollectionHeaderCodec.js";
|
|
3
|
-
import { HashMap } from "../../../../../core/collection/HashMap.js";
|
|
3
|
+
import { HashMap } from "../../../../../core/collection/map/HashMap.js";
|
|
4
4
|
import { returnEmptyArray } from "../../../../../core/function/Functions.js";
|
|
5
5
|
|
|
6
6
|
export class BinaryCollectionSerializer {
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import { BinaryClassSerializationAdapter } from "../BinaryClassSerializationAdapter.js";
|
|
2
2
|
|
|
3
|
-
export class ObjectBasedClassSerializationAdapter extends BinaryClassSerializationAdapter{
|
|
4
|
-
constructor(){
|
|
5
|
-
super();
|
|
3
|
+
export class ObjectBasedClassSerializationAdapter extends BinaryClassSerializationAdapter {
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @type {BinaryObjectSerializationAdapter}
|
|
8
|
+
*/
|
|
9
|
+
objectAdapter = null;
|
|
13
10
|
|
|
14
11
|
/**
|
|
15
12
|
*
|