@woosh/meep-engine 2.52.0 → 2.53.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 +1 -1
- package/editor/ecs/component/prototypeObjectEditor.js +1 -1
- package/editor/process/ObstacleGridDisplayProcess.js +2 -2
- package/editor/process/symbolic/makeGridPositionSymbolDisplay.js +1 -1
- package/editor/tools/GridPaintTool.js +2 -2
- package/package.json +4 -3
- package/samples/generation/SampleGenerator0.js +1 -1
- package/samples/generation/generators/interactive/mir_generator_place_buff_objects.js +1 -1
- package/samples/generation/generators/mir_generator_place_bases.js +1 -1
- package/samples/generation/generators/mir_generator_place_road_decorators.js +1 -1
- package/samples/generation/generators/mir_generator_place_starting_point.js +1 -1
- package/samples/generation/main.js +2 -2
- package/samples/generation/rules/matcher_play_area.js +1 -1
- package/samples/generation/rules/matcher_tag_occupied.js +1 -1
- package/samples/generation/rules/matcher_tag_traversable.js +1 -1
- package/samples/generation/themes/SampleTheme0.js +5 -5
- package/src/core/collection/table/RowFirstTableSpec.js +8 -4
- package/src/core/geom/3d/matrix/MATRIX_4_IDENTITY.spec.js +10 -0
- package/src/engine/Engine.spec.js +4 -0
- package/src/engine/ecs/EntityComponentDataset.js +1 -1
- package/src/engine/ecs/EntityObserver.spec.js +1 -1
- package/src/engine/ecs/dynamic_actions/actions/definition/{WhiteToBlackboardActionDescription.js → WriteToBlackboardActionDescription.js} +2 -2
- package/src/engine/ecs/dynamic_actions/actions/definition/deserializeActionFromJSON.js +2 -2
- package/src/engine/ecs/guid/GUIDSerializationAdapter.spec.js +21 -0
- package/src/engine/ecs/parent/EntityNode.js +1 -1
- package/src/engine/ecs/parent/EntityNode.spec.js +104 -0
- package/src/engine/ecs/speaker/Voice.js +4 -0
- package/src/engine/ecs/team/Team.js +0 -44
- package/src/engine/ecs/team/TeamSerializationAdapter.js +46 -0
- package/src/engine/ecs/transform/Transform.js +1 -1
- package/src/engine/ecs/transform/Transform.spec.js +24 -0
- package/src/engine/graphics/camera/testClippingPlaneComputation.js +2 -2
- package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +2 -2
- package/src/engine/graphics/ecs/water2/shader/testWaterShader.js +2 -2
- package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +2 -2
- package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +2 -2
- package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +2 -2
- package/src/engine/graphics/texture/TextureBackedMemoryRegion.js +4 -1
- package/src/engine/graphics/texture/sampler/filter/filter_lanczos3.js +7 -2
- package/src/engine/grid/{components → grid2transform}/GridPosition2Transform.js +0 -41
- package/src/engine/grid/grid2transform/GridPosition2TransformSerializationUpgrader_0_1.js +40 -0
- package/src/engine/grid/{systems → grid2transform}/GridPosition2TransformSystem.js +3 -3
- package/src/engine/grid/{components → position}/GridPosition.js +4 -0
- package/src/engine/grid/{systems → position}/GridPositionSystem.js +1 -1
- package/src/engine/grid/transform2grid/Transform2GridPositionSystem.js +1 -1
- package/src/engine/input/devices/PointerDevice.spec.js +5 -0
- package/src/engine/navigation/ecs/components/computeCatmullRomSpline.js +5 -1
- package/src/engine/navigation/ecs/path_following/PathFollower.js +40 -32
- package/src/engine/navigation/ecs/path_following/PathFollower.spec.js +27 -0
- package/src/generation/filtering/CellFilter.js +6 -9
- package/src/generation/filtering/boolean/CellFilterLiteralBoolean.js +1 -4
- package/src/generation/filtering/core/CellFilterBinaryOperation.js +12 -15
- package/src/generation/filtering/core/CellFilterOperationTertiary.js +15 -19
- package/src/generation/filtering/numeric/CellFilterLiteralFloat.js +6 -9
- package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainObstacle.js +1 -1
- package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.js +2 -2
- package/src/generation/grid/generation/road/GridTaskGenerateRoads.js +1 -1
- package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.js +1 -1
- package/src/engine/graphics/texture/ExportCanvasAsPNG.js +0 -7
- package/src/engine/navigation/PathFinder.js +0 -172
- package/src/engine/navigation/PathWorker.js +0 -78
- package/src/engine/navigation/ecs/systems/PathFinderSystem.js +0 -63
- package/src/engine/navigation/ecs/systems/PathSystem.js +0 -19
- package/src/engine/navigation/funnel/Funnel.js +0 -196
- package/src/generation/ZoneNode.js +0 -9
- /package/{src/generation → samples/generation/grid}/GridTags.js +0 -0
- /package/src/engine/grid/{components → grid2transform}/GridPosition2TransformFlags.js +0 -0
- /package/src/engine/grid/{components → grid2transform}/GridPosition2TransformSerializationAdapter.js +0 -0
- /package/src/engine/grid/{components → obstacle}/GridObstacle.js +0 -0
- /package/src/engine/grid/{components → obstacle}/GridObstacle.spec.js +0 -0
- /package/src/engine/grid/{components → obstacle}/GridObstacleSerializationAdapter.js +0 -0
- /package/src/engine/grid/{components → position}/GridPositionSerializationAdapter.js +0 -0
- /package/src/engine/grid/{components → position}/GridPositionSerializationUpdater_0_1.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import GridObstacle from "../../../src/engine/grid/
|
|
1
|
+
import GridObstacle from "../../../src/engine/grid/obstacle/GridObstacle.js";
|
|
2
2
|
import { Action } from "../../../src/core/process/undo/Action.js";
|
|
3
3
|
|
|
4
4
|
class WriteGridValueAction extends Action {
|
|
@@ -47,7 +47,7 @@ import { ParticleEmitterEditor } from "./editors/ecs/ParticleEmitterEditor.js";
|
|
|
47
47
|
import Vector4 from "../../../src/core/geom/Vector4.js";
|
|
48
48
|
import { Vector4Editor } from "./editors/geom/Vector4Editor.js";
|
|
49
49
|
import { Trail2DEditor } from "./editors/ecs/Trail2DEditor.js";
|
|
50
|
-
import GridObstacle from "../../../src/engine/grid/
|
|
50
|
+
import GridObstacle from "../../../src/engine/grid/obstacle/GridObstacle.js";
|
|
51
51
|
import { Vector2Editor } from "./editors/geom/Vector2Editor.js";
|
|
52
52
|
import Vector2 from "../../../src/core/geom/Vector2.js";
|
|
53
53
|
import { randomIntegerBetween } from "../../../src/core/math/random/randomIntegerBetween.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EditorProcess } from "./EditorProcess.js";
|
|
2
|
-
import GridObstacle from "../../src/engine/grid/
|
|
3
|
-
import GridPosition from "../../src/engine/grid/
|
|
2
|
+
import GridObstacle from "../../src/engine/grid/obstacle/GridObstacle.js";
|
|
3
|
+
import GridPosition from "../../src/engine/grid/position/GridPosition.js";
|
|
4
4
|
import { Sampler2D } from "../../src/engine/graphics/texture/sampler/Sampler2D.js";
|
|
5
5
|
import { obtainTerrain } from "../../src/engine/ecs/terrain/util/obtainTerrain.js";
|
|
6
6
|
|
|
@@ -11,7 +11,7 @@ import { Transform } from "../../../src/engine/ecs/transform/Transform.js";
|
|
|
11
11
|
import EditorEntity from "../../ecs/EditorEntity.js";
|
|
12
12
|
import { EventType } from "../../../src/engine/ecs/EntityManager.js";
|
|
13
13
|
import { make3DSymbolicDisplay } from "./make3DSymbolicDisplay.js";
|
|
14
|
-
import GridPosition from "../../../src/engine/grid/
|
|
14
|
+
import GridPosition from "../../../src/engine/grid/position/GridPosition.js";
|
|
15
15
|
import { ProcessState } from "../../../src/core/process/ProcessState.js";
|
|
16
16
|
import { obtainTerrain } from "../../../src/engine/ecs/terrain/util/obtainTerrain.js";
|
|
17
17
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Tool from "./engine/Tool.js";
|
|
2
|
-
import GridPosition from "../../src/engine/grid/
|
|
3
|
-
import GridObstacle from "../../src/engine/grid/
|
|
2
|
+
import GridPosition from "../../src/engine/grid/position/GridPosition.js";
|
|
3
|
+
import GridObstacle from "../../src/engine/grid/obstacle/GridObstacle.js";
|
|
4
4
|
import Vector4 from "../../src/core/geom/Vector4.js";
|
|
5
5
|
import ObservedValue from "../../src/core/model/ObservedValue.js";
|
|
6
6
|
import Vector1 from "../../src/core/geom/Vector1.js";
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"description": "Fully featured ECS game engine written in JavaScript",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"author": "Alexander Goldring",
|
|
8
|
-
"version": "2.
|
|
8
|
+
"version": "2.53.0",
|
|
9
9
|
"main": "build/meep.module.js",
|
|
10
10
|
"module": "build/meep.module.js",
|
|
11
11
|
"exports": {
|
|
@@ -52,8 +52,9 @@
|
|
|
52
52
|
"@rollup/plugin-terser": "0.4.0",
|
|
53
53
|
"@rollup/plugin-strip": "3.0.2",
|
|
54
54
|
"@types/three": "^0.135.0",
|
|
55
|
-
"babel-jest": "
|
|
56
|
-
"jest": "
|
|
55
|
+
"babel-jest": "29.5.0",
|
|
56
|
+
"jest": "29.5.0",
|
|
57
|
+
"jest-environment-jsdom": "29.5.0",
|
|
57
58
|
"rollup": "3.16.0"
|
|
58
59
|
},
|
|
59
60
|
"keywords": [
|
|
@@ -2,7 +2,7 @@ import { GridTaskGroup } from "../../src/generation/GridTaskGroup.js";
|
|
|
2
2
|
import { GridCellPlacementRule } from "../../src/generation/placement/GridCellPlacementRule.js";
|
|
3
3
|
import { CellMatcherGridPattern } from "../../src/generation/rules/cell/CellMatcherGridPattern.js";
|
|
4
4
|
import { CellMatcherLayerBitMaskTest } from "../../src/generation/rules/CellMatcherLayerBitMaskTest.js";
|
|
5
|
-
import { GridTags } from "
|
|
5
|
+
import { GridTags } from "./grid/GridTags.js";
|
|
6
6
|
import { CellMatcherNot } from "../../src/generation/rules/logic/CellMatcherNot.js";
|
|
7
7
|
import { GridCellActionPlaceMarker } from "../../src/generation/markers/GridCellActionPlaceMarker.js";
|
|
8
8
|
import { GridTaskCellularAutomata } from "../../src/generation/grid/generation/discrete/GridTaskCellularAutomata.js";
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
CellMatcherContainsMarkerWithinRadius
|
|
6
6
|
} from "../../../../src/generation/rules/cell/CellMatcherContainsMarkerWithinRadius.js";
|
|
7
7
|
import { GridCellActionPlaceTags } from "../../../../src/generation/placement/action/GridCellActionPlaceTags.js";
|
|
8
|
-
import { GridTags } from "
|
|
8
|
+
import { GridTags } from "../../grid/GridTags.js";
|
|
9
9
|
import { bitwiseAnd } from "../../../../src/core/binary/operations/bitwiseAnd.js";
|
|
10
10
|
import { GridCellActionPlaceMarker } from "../../../../src/generation/markers/GridCellActionPlaceMarker.js";
|
|
11
11
|
import { GridCellPlacementRule } from "../../../../src/generation/placement/GridCellPlacementRule.js";
|
|
@@ -3,7 +3,7 @@ import { GridCellPlacementRule } from "../../../src/generation/placement/GridCel
|
|
|
3
3
|
import { CellMatcherGridPattern } from "../../../src/generation/rules/cell/CellMatcherGridPattern.js";
|
|
4
4
|
import { GridActionRuleSet } from "../../../src/generation/markers/GridActionRuleSet.js";
|
|
5
5
|
import { GridCellActionPlaceTags } from "../../../src/generation/placement/action/GridCellActionPlaceTags.js";
|
|
6
|
-
import { GridTags } from "
|
|
6
|
+
import { GridTags } from "../grid/GridTags.js";
|
|
7
7
|
import { GridCellActionPlaceMarker } from "../../../src/generation/markers/GridCellActionPlaceMarker.js";
|
|
8
8
|
import { CellMatcherNot } from "../../../src/generation/rules/logic/CellMatcherNot.js";
|
|
9
9
|
import {
|
|
@@ -3,7 +3,7 @@ import { GridActionRuleSet } from "../../../src/generation/markers/GridActionRul
|
|
|
3
3
|
import { GridCellPlacementRule } from "../../../src/generation/placement/GridCellPlacementRule.js";
|
|
4
4
|
import { CellMatcherGridPattern } from "../../../src/generation/rules/cell/CellMatcherGridPattern.js";
|
|
5
5
|
import { CellMatcherLayerBitMaskTest } from "../../../src/generation/rules/CellMatcherLayerBitMaskTest.js";
|
|
6
|
-
import { GridTags } from "
|
|
6
|
+
import { GridTags } from "../grid/GridTags.js";
|
|
7
7
|
import { CellMatcherAnd } from "../../../src/generation/rules/logic/CellMatcherAnd.js";
|
|
8
8
|
import { CellMatcherNot } from "../../../src/generation/rules/logic/CellMatcherNot.js";
|
|
9
9
|
import { GridCellActionPlaceMarker } from "../../../src/generation/markers/GridCellActionPlaceMarker.js";
|
|
@@ -2,7 +2,7 @@ import { GridCellPlacementRule } from "../../../src/generation/placement/GridCel
|
|
|
2
2
|
import { matcher_tag_traversable_unoccupied } from "../rules/matcher_tag_traversable_unoccupied.js";
|
|
3
3
|
import { CellMatcherNot } from "../../../src/generation/rules/logic/CellMatcherNot.js";
|
|
4
4
|
import { GridCellActionPlaceTags } from "../../../src/generation/placement/action/GridCellActionPlaceTags.js";
|
|
5
|
-
import { GridTags } from "
|
|
5
|
+
import { GridTags } from "../grid/GridTags.js";
|
|
6
6
|
import { GridCellActionPlaceMarker } from "../../../src/generation/markers/GridCellActionPlaceMarker.js";
|
|
7
7
|
import { GridTaskExecuteRuleTimes } from "../../../src/generation/grid/generation/GridTaskExecuteRuleTimes.js";
|
|
8
8
|
import { CellMatcherLayerBitMaskTest } from "../../../src/generation/rules/CellMatcherLayerBitMaskTest.js";
|
|
@@ -7,9 +7,9 @@ import { TopDownCameraLander } from "../../src/engine/graphics/ecs/camera/topdow
|
|
|
7
7
|
import Terrain from "../../src/engine/ecs/terrain/ecs/Terrain.js";
|
|
8
8
|
import { TerrainFlags } from "../../src/engine/ecs/terrain/ecs/TerrainFlags.js";
|
|
9
9
|
import Water from "../../src/engine/graphics/ecs/water/Water.js";
|
|
10
|
-
import GridObstacle from "../../src/engine/grid/
|
|
10
|
+
import GridObstacle from "../../src/engine/grid/obstacle/GridObstacle.js";
|
|
11
11
|
import EntityBuilder from "../../src/engine/ecs/EntityBuilder.js";
|
|
12
|
-
import GridPosition from "../../src/engine/grid/
|
|
12
|
+
import GridPosition from "../../src/engine/grid/position/GridPosition.js";
|
|
13
13
|
import { Transform } from "../../src/engine/ecs/transform/Transform.js";
|
|
14
14
|
import { GridData } from "../../src/generation/grid/GridData.js";
|
|
15
15
|
import { computeStringHash } from "../../src/core/primitives/strings/computeStringHash.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CellMatcherLayerBitMaskTest } from "../../../src/generation/rules/CellMatcherLayerBitMaskTest.js";
|
|
2
|
-
import { GridTags } from "
|
|
2
|
+
import { GridTags } from "../grid/GridTags.js";
|
|
3
3
|
import { MirGridLayers } from "../grid/MirGridLayers.js";
|
|
4
4
|
|
|
5
5
|
export const matcher_play_area = CellMatcherLayerBitMaskTest.from(GridTags.PlayArea, MirGridLayers.Tags);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CellMatcherLayerBitMaskTest } from "../../../src/generation/rules/CellMatcherLayerBitMaskTest.js";
|
|
2
|
-
import { GridTags } from "
|
|
2
|
+
import { GridTags } from "../grid/GridTags.js";
|
|
3
3
|
import { MirGridLayers } from "../grid/MirGridLayers.js";
|
|
4
4
|
|
|
5
5
|
export const matcher_tag_occupied = CellMatcherLayerBitMaskTest.from(GridTags.Occupied, MirGridLayers.Tags);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CellMatcherLayerBitMaskTest } from "../../../src/generation/rules/CellMatcherLayerBitMaskTest.js";
|
|
2
|
-
import { GridTags } from "
|
|
2
|
+
import { GridTags } from "../grid/GridTags.js";
|
|
3
3
|
import { MirGridLayers } from "../grid/MirGridLayers.js";
|
|
4
4
|
|
|
5
5
|
export const matcher_tag_traversable = CellMatcherLayerBitMaskTest.from(GridTags.Traversable, MirGridLayers.Tags);
|
|
@@ -6,13 +6,13 @@ import { MarkerNodeMatcherByType } from "../../../src/generation/markers/matcher
|
|
|
6
6
|
import {
|
|
7
7
|
MarkerNodeActionEntityPlacement
|
|
8
8
|
} from "../../../src/generation/markers/actions/MarkerNodeActionEntityPlacement.js";
|
|
9
|
-
import { EntityBlueprint } from "../../../src/engine/ecs/
|
|
10
|
-
import Mesh from "../../../src/engine/graphics/ecs/mesh/
|
|
11
|
-
import { Transform } from "../../../src/engine/ecs/transform/
|
|
12
|
-
import GridPosition from "../../../src/engine/grid/
|
|
9
|
+
import { EntityBlueprint } from "../../../src/engine/ecs/EntityBlueprint.js";
|
|
10
|
+
import Mesh from "../../../src/engine/graphics/ecs/mesh/Mesh.js";
|
|
11
|
+
import { Transform } from "../../../src/engine/ecs/transform/Transform.js";
|
|
12
|
+
import GridPosition from "../../../src/engine/grid/position/GridPosition.js";
|
|
13
13
|
import { matcher_tag_not_traversable } from "../rules/matcher_tag_not_traversable.js";
|
|
14
14
|
import { CellMatcherLayerBitMaskTest } from "../../../src/generation/rules/CellMatcherLayerBitMaskTest.js";
|
|
15
|
-
import { GridTags } from "
|
|
15
|
+
import { GridTags } from "../grid/GridTags.js";
|
|
16
16
|
import { CellFilterCellMatcher } from "../../../src/generation/filtering/CellFilterCellMatcher.js";
|
|
17
17
|
import { CellFilterSimplexNoise } from "../../../src/generation/filtering/numeric/complex/CellFilterSimplexNoise.js";
|
|
18
18
|
import { CellFilterFXAA } from "../../../src/generation/filtering/numeric/complex/CellFilterFXAA.js";
|
|
@@ -88,7 +88,7 @@ function genRowReader(types, endianType = EndianType.BigEndian) {
|
|
|
88
88
|
*
|
|
89
89
|
* @param {BinaryDataType[]} types
|
|
90
90
|
* @param {EndianType} [endianType]
|
|
91
|
-
* @returns {(data_view:DataView, byte_offset:number, record:number[])
|
|
91
|
+
* @returns {function(data_view:DataView, byte_offset:number, record:number[]):void}
|
|
92
92
|
*/
|
|
93
93
|
function genRowWriter(types, endianType = EndianType.BigEndian) {
|
|
94
94
|
let offset = 0;
|
|
@@ -122,7 +122,7 @@ function genRowWriter(types, endianType = EndianType.BigEndian) {
|
|
|
122
122
|
* @param {BinaryDataType} type
|
|
123
123
|
* @param {number} offset
|
|
124
124
|
* @param {EndianType} [endianType]
|
|
125
|
-
* @returns {
|
|
125
|
+
* @returns {function(data_view:DataView, byte_offset:number, value:number):void}
|
|
126
126
|
*/
|
|
127
127
|
function genCellWriter(type, offset, endianType = EndianType.BigEndian) {
|
|
128
128
|
const writeMethod = DataType2DataViewWriters[type];
|
|
@@ -140,7 +140,7 @@ function genCellWriter(type, offset, endianType = EndianType.BigEndian) {
|
|
|
140
140
|
* @param {BinaryDataType} type
|
|
141
141
|
* @param {number} offset
|
|
142
142
|
* @param {EndianType} [endianType]
|
|
143
|
-
* @returns {
|
|
143
|
+
* @returns {function(data_view:DataView, byte_offset:number):number}
|
|
144
144
|
*/
|
|
145
145
|
function genCellReader(type, offset, endianType = EndianType.BigEndian) {
|
|
146
146
|
const readMethod = DataType2DataViewReaders[type];
|
|
@@ -153,6 +153,10 @@ function genCellReader(type, offset, endianType = EndianType.BigEndian) {
|
|
|
153
153
|
});
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
+
/**
|
|
157
|
+
* This is a schema class for binary data tables of class {@link RowFirstTable}
|
|
158
|
+
* @class
|
|
159
|
+
*/
|
|
156
160
|
export class RowFirstTableSpec {
|
|
157
161
|
/**
|
|
158
162
|
*
|
|
@@ -179,7 +183,7 @@ export class RowFirstTableSpec {
|
|
|
179
183
|
|
|
180
184
|
/**
|
|
181
185
|
* @readonly
|
|
182
|
-
* @type {
|
|
186
|
+
* @type {Uint32Array}
|
|
183
187
|
*/
|
|
184
188
|
this.columnOffsets = new Uint32Array(numTypes);
|
|
185
189
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EntityObserver } from "./EntityObserver.js";
|
|
2
2
|
import { Transform } from "./transform/Transform.js";
|
|
3
|
-
import GridPosition from "../grid/
|
|
3
|
+
import GridPosition from "../grid/position/GridPosition.js";
|
|
4
4
|
import EntityBuilder from "./EntityBuilder.js";
|
|
5
5
|
import { EntityComponentDataset } from "./EntityComponentDataset.js";
|
|
6
6
|
import { noop } from "../../core/function/Functions.js";
|
|
@@ -4,7 +4,7 @@ import { Blackboard } from "../../../../intelligence/blackboard/Blackboard.js";
|
|
|
4
4
|
import { compileReactiveExpression } from "../../../../../core/lang/reactive/compileReactiveExpression.js";
|
|
5
5
|
import { assert } from "../../../../../core/assert.js";
|
|
6
6
|
|
|
7
|
-
export class
|
|
7
|
+
export class WriteToBlackboardActionDescription extends AbstractActionDescription {
|
|
8
8
|
constructor() {
|
|
9
9
|
super();
|
|
10
10
|
|
|
@@ -55,4 +55,4 @@ export class WhiteToBlackboardActionDescription extends AbstractActionDescriptio
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
WriteToBlackboardActionDescription.prototype.type = "Write";
|
|
@@ -5,7 +5,7 @@ import { ActionSequenceDescription } from "./ActionSequenceDescription.js";
|
|
|
5
5
|
import { DelayActionDescription } from "./DelayActionDescription.js";
|
|
6
6
|
import { NoopActionDescription } from "./NoopActionDescription.js";
|
|
7
7
|
import { WeightedRandomActionDescription } from "./WeightedRandomActionDescription.js";
|
|
8
|
-
import {
|
|
8
|
+
import { WriteToBlackboardActionDescription } from "./WriteToBlackboardActionDescription.js";
|
|
9
9
|
|
|
10
10
|
const type_map = {
|
|
11
11
|
Sequence({ elements }) {
|
|
@@ -59,7 +59,7 @@ registerType(SpeakLineActionDescription);
|
|
|
59
59
|
registerType(SendRequestActionDescription);
|
|
60
60
|
registerType(DelayActionDescription);
|
|
61
61
|
registerType(NoopActionDescription);
|
|
62
|
-
registerType(
|
|
62
|
+
registerType(WriteToBlackboardActionDescription);
|
|
63
63
|
|
|
64
64
|
/**
|
|
65
65
|
*
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { GUID } from "./GUID.js";
|
|
2
|
+
import { GUIDSerializationAdapter } from "./GUIDSerializationAdapter.js";
|
|
3
|
+
import { BinaryBuffer } from "../../../core/binary/BinaryBuffer.js";
|
|
4
|
+
|
|
5
|
+
test("to/from consistency", () => {
|
|
6
|
+
|
|
7
|
+
const source = GUID.parse("a88bb73a-c89f-11ed-afa1-0242ac120002");
|
|
8
|
+
|
|
9
|
+
const adapter = new GUIDSerializationAdapter();
|
|
10
|
+
|
|
11
|
+
const buffer = new BinaryBuffer();
|
|
12
|
+
|
|
13
|
+
adapter.serialize(buffer, source);
|
|
14
|
+
buffer.position = 0; // rewind
|
|
15
|
+
|
|
16
|
+
const destination = new GUID();
|
|
17
|
+
|
|
18
|
+
adapter.deserialize(buffer, destination);
|
|
19
|
+
|
|
20
|
+
expect(destination.equals(source)).toBe(true);
|
|
21
|
+
});
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { EntityNode } from "./EntityNode.js";
|
|
2
|
+
import { EntityComponentDataset } from "../EntityComponentDataset.js";
|
|
3
|
+
|
|
4
|
+
test("constructor does not throw", () => {
|
|
5
|
+
new EntityNode()
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
test("setFlag", () => {
|
|
9
|
+
const ut = new EntityNode();
|
|
10
|
+
|
|
11
|
+
ut.setFlag(0b101);
|
|
12
|
+
|
|
13
|
+
expect(ut.flags).toBe(5);
|
|
14
|
+
|
|
15
|
+
ut.setFlag(0b010);
|
|
16
|
+
|
|
17
|
+
expect(ut.flags).toBe(7);
|
|
18
|
+
|
|
19
|
+
ut.setFlag(0b1);
|
|
20
|
+
|
|
21
|
+
expect(ut.flags).toBe(7);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
test("clearFlag", () => {
|
|
25
|
+
const ut = new EntityNode();
|
|
26
|
+
ut.flags = 0b101;
|
|
27
|
+
|
|
28
|
+
ut.clearFlag(0b1);
|
|
29
|
+
|
|
30
|
+
expect(ut.flags).toBe(4);
|
|
31
|
+
|
|
32
|
+
ut.clearFlag(0b10);
|
|
33
|
+
|
|
34
|
+
expect(ut.flags).toBe(4);
|
|
35
|
+
|
|
36
|
+
ut.clearFlag(0b100);
|
|
37
|
+
|
|
38
|
+
expect(ut.flags).toBe(0);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test("getFlag", () => {
|
|
42
|
+
|
|
43
|
+
const ut = new EntityNode();
|
|
44
|
+
|
|
45
|
+
ut.flags = 0b101;
|
|
46
|
+
|
|
47
|
+
expect(ut.getFlag(0b1)).toBe(true);
|
|
48
|
+
expect(ut.getFlag(0b10)).toBe(false);
|
|
49
|
+
expect(ut.getFlag(0b100)).toBe(true);
|
|
50
|
+
expect(ut.getFlag(0b1000)).toBe(false);
|
|
51
|
+
expect(ut.getFlag(0b101)).toBe(true);
|
|
52
|
+
expect(ut.getFlag(0b011)).toBe(false);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
test("writeFlag", () => {
|
|
56
|
+
const ut = new EntityNode();
|
|
57
|
+
|
|
58
|
+
ut.writeFlag(0b101, true);
|
|
59
|
+
expect(ut.flags).toBe(5);
|
|
60
|
+
|
|
61
|
+
ut.writeFlag(0b100, false);
|
|
62
|
+
|
|
63
|
+
expect(ut.flags).toBe(1);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
test("traverse without children", () => {
|
|
67
|
+
const node = new EntityNode();
|
|
68
|
+
|
|
69
|
+
const visited = [];
|
|
70
|
+
|
|
71
|
+
node.traverse(Array.prototype.push, visited);
|
|
72
|
+
|
|
73
|
+
expect(visited.length).toBe(1);
|
|
74
|
+
expect(visited).toContain(node);
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
test("build empty", () => {
|
|
78
|
+
const node = new EntityNode();
|
|
79
|
+
|
|
80
|
+
const dataset = new EntityComponentDataset();
|
|
81
|
+
|
|
82
|
+
node.build(dataset);
|
|
83
|
+
|
|
84
|
+
expect(node.isBuilt).toBe(true);
|
|
85
|
+
expect(node.entity.isBuilt).toBe(true);
|
|
86
|
+
expect(dataset.entityExists(node.entity.entity)).toBe(true);
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
test("destroy empty", () => {
|
|
90
|
+
const node = new EntityNode();
|
|
91
|
+
|
|
92
|
+
const dataset = new EntityComponentDataset();
|
|
93
|
+
|
|
94
|
+
node.build(dataset);
|
|
95
|
+
|
|
96
|
+
const entity = node.entity.entity;
|
|
97
|
+
|
|
98
|
+
node.destroy();
|
|
99
|
+
|
|
100
|
+
expect(node.isBuilt).toBe(false);
|
|
101
|
+
expect(node.entity.isBuilt).toBe(false);
|
|
102
|
+
expect(dataset.entityExists(entity)).toBe(false);
|
|
103
|
+
|
|
104
|
+
});
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Created by Alex on 13/04/2016.
|
|
3
3
|
*/
|
|
4
4
|
import ObservedInteger from "../../../core/model/ObservedInteger.js";
|
|
5
|
-
import { BinaryClassSerializationAdapter } from "../storage/binary/BinaryClassSerializationAdapter.js";
|
|
6
5
|
|
|
7
6
|
class Team extends ObservedInteger {
|
|
8
7
|
/**
|
|
@@ -37,46 +36,3 @@ Team.typeName = "Team";
|
|
|
37
36
|
|
|
38
37
|
export default Team;
|
|
39
38
|
|
|
40
|
-
export class TeamSerializationAdapter extends BinaryClassSerializationAdapter{
|
|
41
|
-
constructor(){
|
|
42
|
-
super();
|
|
43
|
-
|
|
44
|
-
this.klass = Team;
|
|
45
|
-
this.version = 0;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
*
|
|
50
|
-
* @param {BinaryBuffer} buffer
|
|
51
|
-
* @param {Team} value
|
|
52
|
-
*/
|
|
53
|
-
serialize(buffer, value) {
|
|
54
|
-
const v = value.getValue();
|
|
55
|
-
|
|
56
|
-
if (v === Infinity) {
|
|
57
|
-
buffer.writeInt32(2147483647);
|
|
58
|
-
} else if (v === -Infinity) {
|
|
59
|
-
buffer.writeInt32(-2147483648);
|
|
60
|
-
} else {
|
|
61
|
-
//TODO it's possible to write encoded Infinity values by accident
|
|
62
|
-
buffer.writeInt32(v);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
*
|
|
68
|
-
* @param {BinaryBuffer} buffer
|
|
69
|
-
* @param {Team} value
|
|
70
|
-
*/
|
|
71
|
-
deserialize(buffer, value) {
|
|
72
|
-
const v = buffer.readInt32();
|
|
73
|
-
|
|
74
|
-
if (v === 2147483647) {
|
|
75
|
-
value.set(Infinity);
|
|
76
|
-
} else if (v === -2147483648) {
|
|
77
|
-
value.set(-Infinity);
|
|
78
|
-
} else {
|
|
79
|
-
value.set(v);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { BinaryClassSerializationAdapter } from "../storage/binary/BinaryClassSerializationAdapter.js";
|
|
2
|
+
import Team from "./Team.js";
|
|
3
|
+
|
|
4
|
+
export class TeamSerializationAdapter extends BinaryClassSerializationAdapter {
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
|
|
8
|
+
this.klass = Team;
|
|
9
|
+
this.version = 0;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* @param {BinaryBuffer} buffer
|
|
15
|
+
* @param {Team} value
|
|
16
|
+
*/
|
|
17
|
+
serialize(buffer, value) {
|
|
18
|
+
const v = value.getValue();
|
|
19
|
+
|
|
20
|
+
if (v === Infinity) {
|
|
21
|
+
buffer.writeInt32(2147483647);
|
|
22
|
+
} else if (v === -Infinity) {
|
|
23
|
+
buffer.writeInt32(-2147483648);
|
|
24
|
+
} else {
|
|
25
|
+
//TODO it's possible to write encoded Infinity values by accident
|
|
26
|
+
buffer.writeInt32(v);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
*
|
|
32
|
+
* @param {BinaryBuffer} buffer
|
|
33
|
+
* @param {Team} value
|
|
34
|
+
*/
|
|
35
|
+
deserialize(buffer, value) {
|
|
36
|
+
const v = buffer.readInt32();
|
|
37
|
+
|
|
38
|
+
if (v === 2147483647) {
|
|
39
|
+
value.set(Infinity);
|
|
40
|
+
} else if (v === -2147483648) {
|
|
41
|
+
value.set(-Infinity);
|
|
42
|
+
} else {
|
|
43
|
+
value.set(v);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -149,3 +149,27 @@ test("writeFlag", () => {
|
|
|
149
149
|
|
|
150
150
|
expect(ut.flags).toBe(1);
|
|
151
151
|
});
|
|
152
|
+
|
|
153
|
+
test("toMatrix from identity transform", () => {
|
|
154
|
+
const t = new Transform();
|
|
155
|
+
|
|
156
|
+
t.makeIdentity();
|
|
157
|
+
|
|
158
|
+
const matrix = [];
|
|
159
|
+
|
|
160
|
+
t.toMatrix4(matrix);
|
|
161
|
+
|
|
162
|
+
expect(matrix).toEqual(Array.from(MATRIX_4_IDENTITY));
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
test("hash", () => {
|
|
166
|
+
|
|
167
|
+
const t = new Transform();
|
|
168
|
+
|
|
169
|
+
const hash = t.hash();
|
|
170
|
+
|
|
171
|
+
expect(typeof hash).toBe("number");
|
|
172
|
+
expect(Number.isInteger(hash)).toBe(true);
|
|
173
|
+
expect(t.hash()).toEqual(hash);
|
|
174
|
+
|
|
175
|
+
});
|
|
@@ -23,10 +23,10 @@ import WaterSystem from "../ecs/water/WaterSystem.js";
|
|
|
23
23
|
import Trail2DSystem from "../ecs/trail2d/Trail2DSystem.js";
|
|
24
24
|
import { Foliage2System } from "../../ecs/foliage/ecs/Foliage2System.js";
|
|
25
25
|
import ViewportPositionSystem from "../../ecs/gui/position/ViewportPositionSystem.js";
|
|
26
|
-
import { GridPosition2TransformSystem } from "../../grid/
|
|
26
|
+
import { GridPosition2TransformSystem } from "../../grid/grid2transform/GridPosition2TransformSystem.js";
|
|
27
27
|
import { Transform2GridPositionSystem } from "../../grid/transform2grid/Transform2GridPositionSystem.js";
|
|
28
28
|
import SynchronizePositionSystem from "../../ecs/systems/SynchronizePositionSystem.js";
|
|
29
|
-
import GridPositionSystem from "../../grid/
|
|
29
|
+
import GridPositionSystem from "../../grid/position/GridPositionSystem.js";
|
|
30
30
|
import InputControllerSystem from "../../input/ecs/systems/InputControllerSystem.js";
|
|
31
31
|
import { InputSystem } from "../../input/ecs/systems/InputSystem.js";
|
|
32
32
|
import MeshHighlightSystem from "../ecs/highlight/system/MeshHighlightSystem.js";
|
|
@@ -24,10 +24,10 @@ import WaterSystem from "../../water/WaterSystem.js";
|
|
|
24
24
|
import Trail2DSystem from "../../trail2d/Trail2DSystem.js";
|
|
25
25
|
import { Foliage2System } from "../../../../ecs/foliage/ecs/Foliage2System.js";
|
|
26
26
|
import ViewportPositionSystem from "../../../../ecs/gui/position/ViewportPositionSystem.js";
|
|
27
|
-
import { GridPosition2TransformSystem } from "../../../../grid/
|
|
27
|
+
import { GridPosition2TransformSystem } from "../../../../grid/grid2transform/GridPosition2TransformSystem.js";
|
|
28
28
|
import { Transform2GridPositionSystem } from "../../../../grid/transform2grid/Transform2GridPositionSystem.js";
|
|
29
29
|
import SynchronizePositionSystem from "../../../../ecs/systems/SynchronizePositionSystem.js";
|
|
30
|
-
import GridPositionSystem from "../../../../grid/
|
|
30
|
+
import GridPositionSystem from "../../../../grid/position/GridPositionSystem.js";
|
|
31
31
|
import InputControllerSystem from "../../../../input/ecs/systems/InputControllerSystem.js";
|
|
32
32
|
import { InputSystem } from "../../../../input/ecs/systems/InputSystem.js";
|
|
33
33
|
import MeshHighlightSystem from "../../highlight/system/MeshHighlightSystem.js";
|
|
@@ -11,10 +11,10 @@ import { MeshSystem } from "../../mesh/MeshSystem.js";
|
|
|
11
11
|
import TerrainSystem from "../../../../ecs/terrain/ecs/TerrainSystem.js";
|
|
12
12
|
import WaterSystem from "../../water/WaterSystem.js";
|
|
13
13
|
import ViewportPositionSystem from "../../../../ecs/gui/position/ViewportPositionSystem.js";
|
|
14
|
-
import { GridPosition2TransformSystem } from "../../../../grid/
|
|
14
|
+
import { GridPosition2TransformSystem } from "../../../../grid/grid2transform/GridPosition2TransformSystem.js";
|
|
15
15
|
import { Transform2GridPositionSystem } from "../../../../grid/transform2grid/Transform2GridPositionSystem.js";
|
|
16
16
|
import SynchronizePositionSystem from "../../../../ecs/systems/SynchronizePositionSystem.js";
|
|
17
|
-
import GridPositionSystem from "../../../../grid/
|
|
17
|
+
import GridPositionSystem from "../../../../grid/position/GridPositionSystem.js";
|
|
18
18
|
import InputControllerSystem from "../../../../input/ecs/systems/InputControllerSystem.js";
|
|
19
19
|
import { InputSystem } from "../../../../input/ecs/systems/InputSystem.js";
|
|
20
20
|
import MeshHighlightSystem from "../../highlight/system/MeshHighlightSystem.js";
|