@woosh/meep-engine 2.50.3 → 2.52.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/actions/concrete/WriteGridValueAction.js +13 -18
- package/editor/ecs/component/editors/Sampler2DEditor.js +2 -2
- package/editor/process/SymbolicDisplayProcess.js +1 -1
- package/editor/process/symbolic/buildThreeJSHelperEntity.js +1 -1
- package/editor/process/symbolic/makeCameraSymbolicDisplay.js +1 -1
- package/editor/process/symbolic/makeGridPositionSymbolDisplay.js +1 -1
- package/editor/process/symbolic/makeLightSymbolicDisplay.js +1 -1
- package/editor/process/symbolic/makePathSymbolicDisplay.js +1 -1
- package/editor/process/symbolic/makePositionedIconDisplaySymbol.js +1 -1
- package/editor/view/ecs/components/GridObstacleController.js +2 -2
- package/editor/view/ecs/components/TerrainController.js +2 -2
- package/package.json +1 -1
- package/samples/terrain/editor.js +2 -2
- package/src/core/NumberFormat.js +0 -71
- package/src/core/UUID.spec.js +8 -0
- package/src/core/bvh2/bvh3/ExplicitBinaryBoundingVolumeHierarchy.d.ts +4 -0
- package/src/core/bvh2/bvh3/ExplicitBinaryBoundingVolumeHierarchy.js +58 -55
- package/src/core/bvh2/bvh3/ExplicitBinaryBoundingVolumeHierarchy.spec.js +54 -0
- package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.js +3 -3
- package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.spec.js +60 -0
- package/src/core/bvh2/bvh3/query/BVHQueryAny.js +16 -0
- package/src/core/bvh2/bvh3/query/bvh_collect_user_data.js +5 -5
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.js +2 -3
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.spec.js +22 -0
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.spec.js +64 -0
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_generic.js +2 -3
- package/src/core/bvh2/visual/convert_bvh_to_dot_format_string.js +2 -2
- package/src/core/cache/Cache.js +3 -5
- package/src/core/cache/CacheElement.js +1 -0
- package/src/core/geom/2d/quad-tree/PointQuadTree.js +10 -0
- package/src/core/geom/3d/aabb/aabb3_array_combine.js +3 -3
- package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.js +41 -0
- package/src/core/geom/3d/topology/struct/TopoMesh.js +3 -2
- package/src/core/geom/3d/topology/struct/prototypeBinaryTopology.js +4 -4
- package/src/core/geom/Vector2.d.ts +9 -0
- package/src/core/geom/Vector2.js +8 -22
- package/src/core/geom/Vector2.spec.js +153 -0
- package/src/core/graph/{convertGraphToDotString.js → convert_graph_to_dot_string.js} +1 -1
- package/src/core/graph/convert_graph_to_dot_string.spec.js +28 -0
- package/src/core/math/noise/sdnoise.js +5 -7
- package/src/core/math/noise/sdnoise.spec.js +87 -0
- package/src/core/model/ModuleRegistry.js +2 -4
- package/src/core/model/ModuleRegistry.spec.js +31 -0
- package/src/core/model/reactive/js/compileReactiveToJS.spec.js +14 -0
- package/src/core/model/reactive/model/logic/ReactiveAnd.spec.js +31 -1
- package/src/core/model/reactive/model/logic/ReactiveOr.spec.js +53 -0
- package/src/core/model/stat/LinearModifier.js +2 -2
- package/src/core/model/stat/LinearModifier.spec.js +62 -0
- package/src/core/model/stat/Stat.js +12 -0
- package/src/core/model/stat/Stat.spec.js +36 -0
- package/src/core/primitives/array/computeStridedIntegerArrayHash.spec.js +28 -0
- package/src/core/primitives/numbers/number_format_by_thousands.js +14 -0
- package/src/core/primitives/numbers/number_pretty_print.js +49 -0
- package/src/core/primitives/strings/computeStringHash.spec.js +12 -5
- package/src/core/process/BaseProcess.js +8 -8
- package/src/engine/Clock.js +30 -29
- package/src/engine/Clock.spec.js +26 -0
- package/src/engine/{Platform.js → browserInfo.js} +1 -5
- package/src/engine/ecs/EntityBuilder.js +3 -1
- package/src/engine/ecs/EntityBuilder.spec.js +21 -0
- package/src/engine/ecs/fow/FogOfWar.js +48 -54
- package/src/engine/ecs/gui/GUIElement.js +1 -1
- package/src/engine/ecs/gui/position/ViewportPosition.js +3 -3
- package/src/engine/ecs/{systems → renderable}/RenderSystem.d.ts +1 -1
- package/src/engine/ecs/{systems → renderable}/RenderSystem.js +10 -38
- package/src/engine/ecs/renderable/Renderable.d.ts +25 -0
- package/src/engine/ecs/{components → renderable}/Renderable.js +18 -83
- package/src/engine/ecs/renderable/Renderable.spec.js +10 -0
- package/src/engine/ecs/speaker/VoiceSystem.js +15 -9
- package/src/engine/ecs/terrain/ecs/TerrainClassifier.js +1 -1
- package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.js +3 -3
- package/src/engine/ecs/terrain/ecs/splat/SplatMapOptimizerDebugger.js +3 -3
- package/src/engine/ecs/terrain/ecs/splat/SplatMapping.js +2 -2
- package/src/engine/ecs/terrain/overlay/TerrainOverlay.js +2 -2
- package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.js +2 -2
- package/src/engine/ecs/transform/Transform.js +1 -0
- package/src/engine/graphics/camera/testClippingPlaneComputation.js +0 -4
- package/src/engine/graphics/copy_transform_to_threejs_object.js +12 -0
- package/src/engine/graphics/debug/VisualSymbolLine.js +1 -1
- package/src/engine/graphics/ecs/animation/animator/graph/AnimationGraph.spec.js +5 -0
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationGraphDefinition.js +24 -25
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationGraphDefinition.spec.js +5 -0
- package/src/engine/graphics/ecs/decal/DecalSystem.js +3 -21
- package/src/engine/graphics/ecs/decal/v2/Decal.js +32 -32
- package/src/engine/graphics/ecs/decal/v2/Decal.spec.js +5 -0
- package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.js +4 -2
- package/src/engine/graphics/ecs/highlight/renderer/makeGaussianBlurShader.js +1 -4
- package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts +1 -1
- package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.js +2 -2
- package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.js +2 -5
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +4 -33
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +8 -4
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMesh.spec.js +5 -0
- package/src/engine/graphics/ecs/mesh-v2/sample/prototypeShadedGeometry.js +0 -12
- package/src/engine/graphics/ecs/path/ribbon/RibbonPathBuilder.js +2 -2
- package/src/engine/graphics/ecs/path/testPathDisplaySystem.js +0 -2
- package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +0 -4
- package/src/engine/graphics/ecs/water2/shader/testWaterShader.js +0 -2
- package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.js +1 -1
- package/src/engine/graphics/geometry/optimization/merge/prototypeGeometryMerge.js +1 -1
- package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +1 -3
- package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +0 -4
- package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +1 -5
- package/src/engine/graphics/render/forward_plus/prototype/prototypeLightManager.js +2 -2
- package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +2 -6
- package/src/engine/graphics/sh3/path_tracer/GeometryBVHBatched.js +2 -1
- package/src/engine/graphics/sh3/path_tracer/PathTracer.js +6 -1
- package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +4 -4
- package/src/engine/graphics/shaders/SoftOutlineShader.js +2 -4
- package/src/engine/graphics/shadows/testShadowMapRendering.js +0 -2
- package/src/engine/graphics/texture/atlas/CachingTextureAtlas.spec.js +24 -0
- package/src/engine/graphics/texture/atlas/TextureAtlas.spec.js +46 -0
- package/src/engine/graphics/texture/sampler/SampleTraverser.js +1 -1
- package/src/engine/graphics/texture/sampler/Sampler2D.js +1 -1
- package/src/engine/graphics/texture/sampler/bicubic.spec.js +13 -0
- package/src/engine/graphics/texture/sampler/differenceSampler.js +1 -1
- package/src/engine/graphics/texture/sampler/distance/computeSignedDistanceField_NaiveFlood.js +5 -1
- package/src/engine/graphics/texture/sampler/distance/computeSignedDistanceField_NaiveFlood.spec.js +183 -0
- package/src/engine/graphics/texture/sampler/filter/filter_lanczos3.js +20 -0
- package/src/engine/graphics/texture/sampler/filter/mitchell.js +0 -21
- package/src/engine/graphics/texture/sampler/filter/mitchell_v1.js +21 -0
- package/src/engine/graphics/texture/sampler/filter/sampler2d_scale_down_generic.js +17 -16
- package/src/engine/graphics/texture/sampler/prototypeSamplerFiltering.js +11 -9
- package/src/engine/graphics/texture/sampler/{scaleSampler2D.js → resize/sampler2d_scale.js} +8 -8
- package/src/engine/graphics/texture/sampler/resize/sampler2d_scale.spec.js +73 -0
- package/src/engine/graphics/texture/sampler/{sampler2_d_scale_down_lanczos.js → resize/sampler2d_scale_down_lanczos.js} +3 -24
- package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_lanczos.spec.js +29 -0
- package/src/engine/graphics/texture/sampler/{sampler2d_scale_down_linear.js → resize/sampler2d_scale_down_linear.js} +5 -5
- package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_linear.spec.js +44 -0
- package/src/engine/graphics/texture/sampler/resize/{sampler2d_downsample_mipmap.js → sampler2d_scale_down_mipmap.js} +2 -2
- package/src/engine/graphics/texture/sampler/resize/{sampler2d_downsample_mipmap.spec.js → sampler2d_scale_down_mipmap.spec.js} +2 -2
- package/src/engine/graphics/texture/sampler/{genericResampleSampler2D.js → resize/sampler2d_scale_generic.js} +16 -12
- package/src/engine/graphics/texture/sampler/{upsampleSampler2D.js → resize/sampler2d_scale_up_linear.js} +5 -2
- package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_up_linear.spec.js +14 -0
- package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_min_indices.js +4 -2
- package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_min_indices.spec.js +15 -0
- package/src/engine/graphics/texture/sampler/util/drawSamplerHTML.js +2 -2
- package/src/engine/graphics/three/expand_aabb_by_transformed_three_object.js +46 -0
- package/src/engine/graphics/three/expand_aabb_by_transformed_three_object.spec.js +108 -0
- package/src/engine/graphics/trail/TemporalPath.js +83 -78
- package/src/engine/graphics/trail/TemporalPath.spec.js +5 -0
- package/src/engine/graphics/trail/x/RibbonX.spec.js +5 -0
- package/src/engine/grid/components/GridObstacle.js +45 -25
- package/src/engine/grid/components/GridObstacle.spec.js +130 -1
- package/src/engine/grid/components/GridPosition.js +5 -17
- package/src/engine/grid/components/GridPosition2Transform.js +1 -70
- package/src/engine/grid/components/GridPosition2TransformSerializationAdapter.js +70 -0
- package/src/engine/input/devices/InputDeviceSwitch.spec.js +5 -0
- package/src/engine/input/ecs/{InputBinding.js → components/InputBinding.js} +1 -1
- package/src/engine/input/ecs/components/InputController.js +2 -2
- package/src/engine/input/ecs/ism/InputBinding.js +2 -2
- package/src/engine/input/ecs/util/TerrainCameraTargetSampler.js +1 -1
- package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +1 -1
- package/src/engine/intelligence/behavior/behavior_to_dot.spec.js +25 -0
- package/src/engine/intelligence/behavior/util/DelayBehavior.js +6 -4
- package/src/engine/intelligence/blackboard/Blackboard.d.ts +2 -0
- package/src/engine/intelligence/blackboard/Blackboard.js +36 -2
- package/src/engine/intelligence/blackboard/Blackboard.spec.js +49 -0
- package/src/engine/intelligence/blackboard/BlackboardSerializationAdapter.spec.js +2 -0
- package/src/engine/navigation/grid/{AStar.js → find_path_on_grid_astar.js} +21 -18
- package/src/engine/navigation/grid/find_path_on_grid_astar.spec.js +7 -0
- package/src/engine/plugin/EnginePlugin.js +12 -14
- package/src/engine/plugin/EnginePlugin.spec.js +5 -0
- package/src/engine/plugin/EnginePluginManager.js +18 -22
- package/src/engine/scene/transitionToScene.js +12 -1
- package/src/engine/simulation/Ticker.js +1 -1
- package/src/engine/sound/ecs/SoundListenerSystem.js +1 -1
- package/src/generation/markers/debug/visualizeMarkers.js +1 -1
- package/src/generation/theme/TerrainLayerDescription.js +1 -1
- package/src/view/common/LabelView.js +3 -3
- package/src/engine/MeepSettings.js +0 -9
- package/src/engine/User.js +0 -28
- package/src/engine/UserController.js +0 -273
- package/src/engine/ecs/components/AABB.js +0 -33
- package/src/engine/ecs/components/AABBCollider.js +0 -15
- package/src/engine/ecs/components/AimController.js +0 -18
- package/src/engine/ecs/components/Attacker.js +0 -13
- package/src/engine/ecs/components/MeshCollider.js +0 -15
- package/src/engine/ecs/components/RangedAttack.js +0 -12
- package/src/engine/ecs/components/Renderable.d.ts +0 -14
- package/src/engine/ecs/components/TargetAI.js +0 -11
- package/src/engine/ecs/components/ViewportMeshProjection.js +0 -18
- package/src/engine/ecs/grid/Sampler2DDecoder.js +0 -57
- package/src/engine/ecs/grid/makeTerrainGeometry.js +0 -110
- package/src/engine/ecs/systems/AABBColliderSystem.js +0 -61
- package/src/engine/ecs/systems/AABBSystem.js +0 -89
- package/src/engine/ecs/systems/AimControllerSystem.js +0 -63
- package/src/engine/ecs/systems/AttackerSystem.js +0 -67
- package/src/engine/ecs/systems/MeshColliderSystem.js +0 -47
- package/src/engine/ecs/systems/MonsterAISystem.js +0 -163
- package/src/engine/ecs/systems/MortalitySystem.js +0 -46
- package/src/engine/ecs/systems/RangedAttackSystem.js +0 -132
- package/src/engine/ecs/systems/SerializationMetadataSystem.js +0 -10
- package/src/engine/ecs/systems/TargetAISystem.js +0 -107
- package/src/engine/ecs/systems/ViewportMeshProjectionSystem.js +0 -68
- package/src/engine/graphics/particles/ParticleEmitterLibrary.js +0 -87
- package/src/engine/graphics/texture/sampler/sampler2d_make_array_filler_function.js +0 -65
- package/src/engine/graphics/texture/sampler/sampler2d_scale_down_linear.spec.js +0 -17
- package/src/engine/graphics/trail/x/simulator/RibbonState.js +0 -10
- package/src/engine/grid/Grid.js +0 -131
- package/src/engine/grid/components/ViewportGridProjection.js +0 -20
- package/src/engine/grid/systems/GridObstacleSystem.js +0 -58
- package/src/engine/grid/systems/ViewportGridProjectionSystem.js +0 -105
- package/src/engine/navigation/grid/GridField.js +0 -328
- /package/src/{engine → core/primitives/array}/computeStridedIntegerArrayHash.js +0 -0
- /package/src/engine/ecs/{components → renderable}/RenderableFlags.js +0 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import Vector2 from "../../../core/geom/Vector2.js";
|
|
2
|
-
import { BinaryClassSerializationAdapter } from "../../ecs/storage/binary/BinaryClassSerializationAdapter.js";
|
|
3
2
|
import { BinaryClassUpgrader } from "../../ecs/storage/binary/BinaryClassUpgrader.js";
|
|
4
3
|
import { GridPosition2TransformFlags } from "./GridPosition2TransformFlags.js";
|
|
5
4
|
|
|
@@ -116,7 +115,7 @@ export class GridPosition2Transform {
|
|
|
116
115
|
* @returns {number}
|
|
117
116
|
*/
|
|
118
117
|
hash() {
|
|
119
|
-
return this.offset.
|
|
118
|
+
return this.offset.hash();
|
|
120
119
|
}
|
|
121
120
|
|
|
122
121
|
}
|
|
@@ -124,74 +123,6 @@ export class GridPosition2Transform {
|
|
|
124
123
|
GridPosition2Transform.typeName = "GridPosition2Transform";
|
|
125
124
|
|
|
126
125
|
|
|
127
|
-
export class GridPosition2TransformSerializationAdapter extends BinaryClassSerializationAdapter {
|
|
128
|
-
constructor() {
|
|
129
|
-
super();
|
|
130
|
-
|
|
131
|
-
this.klass = GridPosition2Transform;
|
|
132
|
-
this.version = 1;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
*
|
|
137
|
-
* @param {BinaryBuffer} buffer
|
|
138
|
-
* @param {GridPosition2Transform} value
|
|
139
|
-
*/
|
|
140
|
-
serialize(buffer, value) {
|
|
141
|
-
const offsetX = value.offset.x;
|
|
142
|
-
const offsetY = value.offset.y;
|
|
143
|
-
|
|
144
|
-
let header = 3;
|
|
145
|
-
if (offsetX === 0 && offsetY === 0) {
|
|
146
|
-
header = 0;
|
|
147
|
-
} else if (offsetX === 0) {
|
|
148
|
-
header = 2;
|
|
149
|
-
} else if (offsetY === 0) {
|
|
150
|
-
header = 1;
|
|
151
|
-
} else {
|
|
152
|
-
//both coordinates are present
|
|
153
|
-
header = 3;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
buffer.writeUint8(header);
|
|
157
|
-
|
|
158
|
-
if ((header & 1) !== 0) {
|
|
159
|
-
//write X
|
|
160
|
-
buffer.writeFloat32(offsetX);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
if ((header & 2) !== 0) {
|
|
164
|
-
//write Y
|
|
165
|
-
buffer.writeFloat32(offsetY);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
*
|
|
171
|
-
* @param {BinaryBuffer} buffer
|
|
172
|
-
* @param {GridPosition2Transform} value
|
|
173
|
-
*/
|
|
174
|
-
deserialize(buffer, value) {
|
|
175
|
-
//read header
|
|
176
|
-
const header = buffer.readUint8();
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
let offsetX = 0, offsetY = 0;
|
|
180
|
-
|
|
181
|
-
if ((header & 1) !== 0) {
|
|
182
|
-
//write X
|
|
183
|
-
offsetX = buffer.readFloat32();
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
if ((header & 2) !== 0) {
|
|
187
|
-
//write Y
|
|
188
|
-
offsetY = buffer.readFloat32();
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
value.offset.set(offsetX, offsetY);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
126
|
export class GridPosition2TransformSerializationUpgrader_0_1 extends BinaryClassUpgrader {
|
|
196
127
|
constructor() {
|
|
197
128
|
super();
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { BinaryClassSerializationAdapter } from "../../ecs/storage/binary/BinaryClassSerializationAdapter.js";
|
|
2
|
+
import { GridPosition2Transform } from "./GridPosition2Transform.js";
|
|
3
|
+
|
|
4
|
+
export class GridPosition2TransformSerializationAdapter extends BinaryClassSerializationAdapter {
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
|
|
8
|
+
this.klass = GridPosition2Transform;
|
|
9
|
+
this.version = 1;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* @param {BinaryBuffer} buffer
|
|
15
|
+
* @param {GridPosition2Transform} value
|
|
16
|
+
*/
|
|
17
|
+
serialize(buffer, value) {
|
|
18
|
+
const offsetX = value.offset.x;
|
|
19
|
+
const offsetY = value.offset.y;
|
|
20
|
+
|
|
21
|
+
let header = 3;
|
|
22
|
+
if (offsetX === 0 && offsetY === 0) {
|
|
23
|
+
header = 0;
|
|
24
|
+
} else if (offsetX === 0) {
|
|
25
|
+
header = 2;
|
|
26
|
+
} else if (offsetY === 0) {
|
|
27
|
+
header = 1;
|
|
28
|
+
} else {
|
|
29
|
+
//both coordinates are present
|
|
30
|
+
header = 3;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
buffer.writeUint8(header);
|
|
34
|
+
|
|
35
|
+
if ((header & 1) !== 0) {
|
|
36
|
+
//write X
|
|
37
|
+
buffer.writeFloat32(offsetX);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if ((header & 2) !== 0) {
|
|
41
|
+
//write Y
|
|
42
|
+
buffer.writeFloat32(offsetY);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
*
|
|
48
|
+
* @param {BinaryBuffer} buffer
|
|
49
|
+
* @param {GridPosition2Transform} value
|
|
50
|
+
*/
|
|
51
|
+
deserialize(buffer, value) {
|
|
52
|
+
//read header
|
|
53
|
+
const header = buffer.readUint8();
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
let offsetX = 0, offsetY = 0;
|
|
57
|
+
|
|
58
|
+
if ((header & 1) !== 0) {
|
|
59
|
+
//write X
|
|
60
|
+
offsetX = buffer.readFloat32();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if ((header & 2) !== 0) {
|
|
64
|
+
//write Y
|
|
65
|
+
offsetY = buffer.readFloat32();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
value.offset.set(offsetX, offsetY);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import List from '../../../../core/collection/list/List.js';
|
|
6
6
|
import { assert } from "../../../../core/assert.js";
|
|
7
7
|
import Signal from "../../../../core/events/signal/Signal.js";
|
|
8
|
-
import { InputBinding } from "
|
|
8
|
+
import { InputBinding } from "./InputBinding.js";
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class InputController {
|
|
@@ -15,7 +15,7 @@ class InputController {
|
|
|
15
15
|
* @constructor
|
|
16
16
|
*/
|
|
17
17
|
constructor(bindings = []) {
|
|
18
|
-
assert.
|
|
18
|
+
assert.isArray(bindings, 'bindings');
|
|
19
19
|
|
|
20
20
|
this.mapping = new List();
|
|
21
21
|
|
|
@@ -20,8 +20,8 @@ export class InputBinding {
|
|
|
20
20
|
* @param {string} event
|
|
21
21
|
*/
|
|
22
22
|
set(path, event) {
|
|
23
|
-
assert.
|
|
24
|
-
assert.
|
|
23
|
+
assert.isString(path, "path");
|
|
24
|
+
assert.isString(event, "event");
|
|
25
25
|
|
|
26
26
|
this.path = path;
|
|
27
27
|
this.event = event;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Sampler2D } from "../../../graphics/texture/sampler/Sampler2D.js";
|
|
2
|
-
import { sampler2d_scale_down_linear } from "../../../graphics/texture/sampler/sampler2d_scale_down_linear.js";
|
|
2
|
+
import { sampler2d_scale_down_linear } from "../../../graphics/texture/sampler/resize/sampler2d_scale_down_linear.js";
|
|
3
3
|
import { computeWholeDivisorLow } from "../../../../core/math/computeWholeDivisorLow.js";
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Created by Alex on 22/08/2015.
|
|
3
3
|
*/
|
|
4
4
|
import { Transform } from '../../../ecs/transform/Transform.js';
|
|
5
|
-
import Renderable from '../../../ecs/
|
|
5
|
+
import Renderable from '../../../ecs/renderable/Renderable.js';
|
|
6
6
|
import Vector3 from '../../../../core/geom/Vector3.js';
|
|
7
7
|
import EntityBuilder from '../../../ecs/EntityBuilder.js';
|
|
8
8
|
import { Group as ThreeGroup, Matrix4 as ThreeMatrix4, Mesh as ThreeMesh, MeshLambertMaterial } from 'three';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { behavior_to_dot } from "./behavior_to_dot.js";
|
|
2
|
+
import { SucceedingBehavior } from "./primitive/SucceedingBehavior.js";
|
|
3
|
+
import { SequenceBehavior } from "./composite/SequenceBehavior.js";
|
|
4
|
+
import { ParallelBehavior } from "./composite/ParallelBehavior.js";
|
|
5
|
+
|
|
6
|
+
test("single behavior should produce a valid string", () => {
|
|
7
|
+
const dot = behavior_to_dot(SucceedingBehavior.INSTANCE);
|
|
8
|
+
|
|
9
|
+
expect(typeof dot).toEqual("string");
|
|
10
|
+
expect(dot.trim().length).toBeGreaterThan(0);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
test("'sequence' should produce a valid string", () => {
|
|
14
|
+
const dot = behavior_to_dot(SequenceBehavior.from([SucceedingBehavior.INSTANCE]));
|
|
15
|
+
|
|
16
|
+
expect(typeof dot).toEqual("string");
|
|
17
|
+
expect(dot.trim().length).toBeGreaterThan(0);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
test("'parallel' should produce a valid string", () => {
|
|
21
|
+
const dot = behavior_to_dot(ParallelBehavior.from([SucceedingBehavior.INSTANCE]));
|
|
22
|
+
|
|
23
|
+
expect(typeof dot).toEqual("string");
|
|
24
|
+
expect(dot.trim().length).toBeGreaterThan(0);
|
|
25
|
+
});
|
|
@@ -45,9 +45,9 @@ export class DelayBehavior extends Behavior {
|
|
|
45
45
|
* @return {DelayBehavior}
|
|
46
46
|
*/
|
|
47
47
|
static from(value) {
|
|
48
|
-
assert.isNumber(value,
|
|
49
|
-
assert.notNaN(value,'value');
|
|
50
|
-
assert.isFiniteNumber(value,'value');
|
|
48
|
+
assert.isNumber(value, 'value');
|
|
49
|
+
assert.notNaN(value, 'value');
|
|
50
|
+
assert.isFiniteNumber(value, 'value');
|
|
51
51
|
|
|
52
52
|
const r = new DelayBehavior();
|
|
53
53
|
|
|
@@ -56,7 +56,9 @@ export class DelayBehavior extends Behavior {
|
|
|
56
56
|
return r;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
initialize() {
|
|
59
|
+
initialize(ctx) {
|
|
60
|
+
super.initialize(ctx);
|
|
61
|
+
|
|
60
62
|
this.elapsed = 0;
|
|
61
63
|
}
|
|
62
64
|
|
|
@@ -164,14 +164,48 @@ export class Blackboard extends AbstractBlackboard {
|
|
|
164
164
|
|
|
165
165
|
/**
|
|
166
166
|
*
|
|
167
|
+
* NOTE: where variables of same type with same names exist - they are kept and their values are updated
|
|
167
168
|
* @param {Blackboard} other
|
|
168
169
|
*/
|
|
169
170
|
copy(other) {
|
|
170
|
-
|
|
171
|
+
// perform coalescence
|
|
172
|
+
|
|
173
|
+
const this_data = this.data;
|
|
171
174
|
|
|
172
175
|
other.traverse((name, value, type) => {
|
|
173
|
-
|
|
176
|
+
|
|
177
|
+
const variable = this_data[name];
|
|
178
|
+
|
|
179
|
+
const other_value = value.getValue();
|
|
180
|
+
|
|
181
|
+
if (variable === undefined) {
|
|
182
|
+
this.acquire(name, type, other_value);
|
|
183
|
+
} else if (variable.type !== type) {
|
|
184
|
+
// type mismatch
|
|
185
|
+
delete this_data[name]
|
|
186
|
+
this.acquire(name, type, other_value);
|
|
187
|
+
} else {
|
|
188
|
+
// variable exists and types match
|
|
189
|
+
variable.value.set(other_value);
|
|
190
|
+
}
|
|
191
|
+
|
|
174
192
|
});
|
|
193
|
+
|
|
194
|
+
// find out which keys should be removed
|
|
195
|
+
const garbage = [];
|
|
196
|
+
|
|
197
|
+
for (const dataKey in this_data) {
|
|
198
|
+
const variable = this_data[dataKey];
|
|
199
|
+
if (!other.contains(dataKey, variable.type)) {
|
|
200
|
+
garbage.push(dataKey);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
for (let i = 0; i < garbage.length; i++) {
|
|
205
|
+
const key = garbage[i];
|
|
206
|
+
|
|
207
|
+
delete this_data[key];
|
|
208
|
+
}
|
|
175
209
|
}
|
|
176
210
|
|
|
177
211
|
/**
|
|
@@ -39,6 +39,41 @@ test("entry is copied across when blackboard is copied", () => {
|
|
|
39
39
|
expect(b.acquireNumber('test').getValue()).toBe(7);
|
|
40
40
|
});
|
|
41
41
|
|
|
42
|
+
test('copy when destination has a variable with the same name but a different type', () => {
|
|
43
|
+
|
|
44
|
+
const a = new Blackboard();
|
|
45
|
+
|
|
46
|
+
a.acquireNumber('test', 7);
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
const b = new Blackboard();
|
|
50
|
+
|
|
51
|
+
b.acquireBoolean("test", true);
|
|
52
|
+
|
|
53
|
+
b.copy(a);
|
|
54
|
+
|
|
55
|
+
expect(b.acquireNumber('test').getValue()).toEqual(7);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
test("copy preserves existing references and updates their value", () => {
|
|
59
|
+
|
|
60
|
+
const a = new Blackboard();
|
|
61
|
+
|
|
62
|
+
a.acquireNumber('test', 7);
|
|
63
|
+
|
|
64
|
+
const b = new Blackboard();
|
|
65
|
+
|
|
66
|
+
const vector_before = b.acquireNumber("test", 3);
|
|
67
|
+
|
|
68
|
+
b.copy(a);
|
|
69
|
+
|
|
70
|
+
const vector_after = b.acquireNumber("test");
|
|
71
|
+
|
|
72
|
+
expect(vector_after).toBe(vector_before);
|
|
73
|
+
expect(vector_after.getValue()).toBe(7);
|
|
74
|
+
|
|
75
|
+
});
|
|
76
|
+
|
|
42
77
|
test("to/from JSON serialization consistency", () => {
|
|
43
78
|
|
|
44
79
|
const source = new Blackboard();
|
|
@@ -60,3 +95,17 @@ test("to/from JSON serialization consistency", () => {
|
|
|
60
95
|
expect(target.contains('label', DataType.String)).toBe(true);
|
|
61
96
|
expect(target.acquireString('label').getValue()).toBe('hello');
|
|
62
97
|
});
|
|
98
|
+
|
|
99
|
+
test("increment number", () => {
|
|
100
|
+
const bb = new Blackboard();
|
|
101
|
+
|
|
102
|
+
bb.acquireNumber("x", 3);
|
|
103
|
+
|
|
104
|
+
bb.incrementNumber("x", 5);
|
|
105
|
+
|
|
106
|
+
expect(bb.acquireNumber('x').getValue()).toEqual(8);
|
|
107
|
+
|
|
108
|
+
bb.incrementNumber("x");
|
|
109
|
+
|
|
110
|
+
expect(bb.acquireNumber('x').getValue()).toEqual(9);
|
|
111
|
+
});
|
|
@@ -9,6 +9,7 @@ test('to/from binary buffer serialization', () => {
|
|
|
9
9
|
|
|
10
10
|
bb.acquireBoolean('a.true').set(true);
|
|
11
11
|
bb.acquireBoolean('a.false').set(false);
|
|
12
|
+
bb.acquireString('x').set("test string");
|
|
12
13
|
|
|
13
14
|
const buffer = new BinaryBuffer();
|
|
14
15
|
|
|
@@ -25,4 +26,5 @@ test('to/from binary buffer serialization', () => {
|
|
|
25
26
|
expect(ba.acquireNumber('a/b/c').getValue()).toBe(42.3);
|
|
26
27
|
expect(ba.acquireBoolean('a.true').getValue()).toBe(true);
|
|
27
28
|
expect(ba.acquireBoolean('a.false').getValue()).toBe(false);
|
|
29
|
+
expect(ba.acquireString('x').getValue()).toBe("test string");
|
|
28
30
|
});
|
|
@@ -42,32 +42,35 @@ function computeOrthogonalNeighbors(result, index, width, height) {
|
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
44
|
*
|
|
45
|
-
* @param {number|Uint8Array|Uint16Array|Float32Array} field
|
|
46
|
-
* @param {
|
|
47
|
-
* @param {
|
|
45
|
+
* @param {number[]|Uint8Array|Uint16Array|Float32Array} field
|
|
46
|
+
* @param {number} width
|
|
47
|
+
* @param {number} height
|
|
48
48
|
* @param {number} start
|
|
49
49
|
* @param {number} goal
|
|
50
|
-
* @param {
|
|
51
|
-
* @param {
|
|
50
|
+
* @param {number} crossingPenalty
|
|
51
|
+
* @param {number} bendPenalty
|
|
52
52
|
* @param {number} blockValue
|
|
53
|
-
* @returns {Array.<
|
|
53
|
+
* @returns {Array.<number>} array of indices representing path from start to end
|
|
54
54
|
*/
|
|
55
|
-
export function
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
export function find_path_on_grid_astar(
|
|
56
|
+
field,
|
|
57
|
+
width, height,
|
|
58
|
+
start, goal,
|
|
59
|
+
crossingPenalty,
|
|
60
|
+
bendPenalty,
|
|
61
|
+
blockValue
|
|
62
|
+
) {
|
|
58
63
|
|
|
59
|
-
assert.
|
|
60
|
-
assert.
|
|
64
|
+
assert.defined(field, 'field');
|
|
65
|
+
assert.notNull(field, 'field');
|
|
61
66
|
|
|
62
|
-
assert.notEqual(goal, undefined, 'end is undefined');
|
|
63
|
-
assert.notEqual(goal, null, 'end is null');
|
|
64
67
|
|
|
65
|
-
assert.
|
|
66
|
-
assert.
|
|
68
|
+
assert.isNonNegativeInteger(start, "start");
|
|
69
|
+
assert.isNonNegativeInteger(goal, "goal");
|
|
67
70
|
|
|
68
|
-
assert.
|
|
69
|
-
assert.
|
|
70
|
-
assert.
|
|
71
|
+
assert.isNumber(crossingPenalty, 'crossingPenalty');
|
|
72
|
+
assert.isNumber(bendPenalty, 'bendPenalty');
|
|
73
|
+
assert.isNumber(blockValue, 'blockValue');
|
|
71
74
|
|
|
72
75
|
|
|
73
76
|
let limitCycles = 5000000;
|
|
@@ -2,22 +2,20 @@ import { BaseProcess } from "../../core/process/BaseProcess.js";
|
|
|
2
2
|
import { assert } from "../../core/assert.js";
|
|
3
3
|
|
|
4
4
|
export class EnginePlugin extends BaseProcess {
|
|
5
|
-
constructor() {
|
|
6
|
-
super();
|
|
7
5
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* @type {Class<EnginePlugin>[]}
|
|
9
|
+
* @private
|
|
10
|
+
*/
|
|
11
|
+
__dependencies = [];
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
* @type {Engine|null}
|
|
16
|
+
*/
|
|
17
|
+
engine = null;
|
|
14
18
|
|
|
15
|
-
/**
|
|
16
|
-
*
|
|
17
|
-
* @type {Engine|null}
|
|
18
|
-
*/
|
|
19
|
-
this.engine = null;
|
|
20
|
-
}
|
|
21
19
|
|
|
22
20
|
attach() {
|
|
23
21
|
/**
|
|
@@ -6,29 +6,25 @@ import { isSubclassOf } from "./isSubclassOf.js";
|
|
|
6
6
|
import { assert } from "../../core/assert.js";
|
|
7
7
|
|
|
8
8
|
export class EnginePluginManager extends BaseProcess {
|
|
9
|
-
constructor() {
|
|
10
|
-
super();
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* @private
|
|
14
|
-
* @type {Map<Class, PluginReferenceContext>}
|
|
15
|
-
*/
|
|
16
|
-
this.__plugins = new Map();
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
*
|
|
20
|
-
* @type {Engine}
|
|
21
|
-
*/
|
|
22
|
-
this.engine = null;
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
*
|
|
26
|
-
* @type {number}
|
|
27
|
-
* @private
|
|
28
|
-
*/
|
|
29
|
-
this.__version = 0;
|
|
30
|
-
}
|
|
31
9
|
|
|
10
|
+
/**
|
|
11
|
+
* @private
|
|
12
|
+
* @type {Map<Class, PluginReferenceContext>}
|
|
13
|
+
*/
|
|
14
|
+
__plugins = new Map();
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
*
|
|
18
|
+
* @type {Engine}
|
|
19
|
+
*/
|
|
20
|
+
engine = null;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
*
|
|
24
|
+
* @type {number}
|
|
25
|
+
* @private
|
|
26
|
+
*/
|
|
27
|
+
__version = 0;
|
|
32
28
|
|
|
33
29
|
/**
|
|
34
30
|
*
|
|
@@ -9,6 +9,7 @@ import { TaskLoadingScreen } from "../../view/task/TaskLoadingScreen.js";
|
|
|
9
9
|
import { actionTask } from "../../core/process/task/util/actionTask.js";
|
|
10
10
|
import { delayTask } from "../../core/process/task/util/delayTask.js";
|
|
11
11
|
import { wrapTaskIgnoreFailure } from "../../core/process/task/util/wrapTaskIgnoreFailure.js";
|
|
12
|
+
import { assert } from "../../core/assert.js";
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
/**
|
|
@@ -19,7 +20,17 @@ import { wrapTaskIgnoreFailure } from "../../core/process/task/util/wrapTaskIgno
|
|
|
19
20
|
* @param {string} [name]
|
|
20
21
|
* @return {Promise}
|
|
21
22
|
*/
|
|
22
|
-
export function transitionToScene({
|
|
23
|
+
export function transitionToScene({
|
|
24
|
+
tasks = [],
|
|
25
|
+
scene,
|
|
26
|
+
engine,
|
|
27
|
+
name
|
|
28
|
+
}) {
|
|
29
|
+
|
|
30
|
+
assert.defined(engine, 'engine');
|
|
31
|
+
assert.defined(scene, 'scene');
|
|
32
|
+
assert.isArray(tasks, 'tasks');
|
|
33
|
+
|
|
23
34
|
if (name === undefined) {
|
|
24
35
|
if (tasks.length > 0) {
|
|
25
36
|
//assume name of the first task
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { System } from '../../ecs/System.js';
|
|
7
7
|
import SoundListener from './SoundListener.js';
|
|
8
8
|
import { Transform } from '../../ecs/transform/Transform.js';
|
|
9
|
-
import { browserInfo } from "../../
|
|
9
|
+
import { browserInfo } from "../../browserInfo.js";
|
|
10
10
|
import Vector3 from "../../../core/geom/Vector3.js";
|
|
11
11
|
import { noop } from "../../../core/function/Functions.js";
|
|
12
12
|
import { assert } from "../../../core/assert.js";
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
TetrahedronBufferGeometry
|
|
10
10
|
} from "three";
|
|
11
11
|
import EntityBuilder from "../../../engine/ecs/EntityBuilder.js";
|
|
12
|
-
import Renderable from "../../../engine/ecs/
|
|
12
|
+
import Renderable from "../../../engine/ecs/renderable/Renderable.js";
|
|
13
13
|
import { Transform } from "../../../engine/ecs/transform/Transform.js";
|
|
14
14
|
import LabelView from "../../../view/common/LabelView.js";
|
|
15
15
|
import GUIElement from "../../../engine/ecs/gui/GUIElement.js";
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* @copyright Alex Goldring 2016
|
|
4
4
|
*/
|
|
5
5
|
import View from "../View.js";
|
|
6
|
-
import { prettyPrint } from "../../core/NumberFormat.js";
|
|
7
6
|
import ObservedValue from "../../core/model/ObservedValue.js";
|
|
8
7
|
import Vector1 from "../../core/geom/Vector1.js";
|
|
9
8
|
import LinearValue from "../../core/model/LinearValue.js";
|
|
@@ -17,6 +16,7 @@ import { assert } from "../../core/assert.js";
|
|
|
17
16
|
import ObservedInteger from "../../core/model/ObservedInteger.js";
|
|
18
17
|
import { noop } from "../../core/function/Functions.js";
|
|
19
18
|
import { isTypedArray } from "../../core/collection/array/typed/isTypedArray.js";
|
|
19
|
+
import { number_pretty_print } from "../../core/primitives/numbers/number_pretty_print.js";
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
/**
|
|
@@ -26,7 +26,7 @@ import { isTypedArray } from "../../core/collection/array/typed/isTypedArray.js"
|
|
|
26
26
|
*/
|
|
27
27
|
function format(value) {
|
|
28
28
|
if (typeof value === 'number') {
|
|
29
|
-
return
|
|
29
|
+
return number_pretty_print(value);
|
|
30
30
|
} else {
|
|
31
31
|
return value;
|
|
32
32
|
}
|
|
@@ -38,7 +38,7 @@ function format(value) {
|
|
|
38
38
|
* @returns {string|number}
|
|
39
39
|
*/
|
|
40
40
|
function formatNumber(v) {
|
|
41
|
-
return
|
|
41
|
+
return number_pretty_print(v);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
function formatArray(arr) {
|