@woosh/meep-engine 2.57.0 → 2.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bundle-worker-image-decoder.js +1 -1
- package/build/bundle-worker-terrain.js +1 -1
- package/build/meep.cjs +14789 -19638
- package/build/meep.min.js +1 -1
- package/build/meep.module.js +14790 -19638
- package/editor/Editor.js +4 -4
- package/editor/process/symbolic/buildThreeJSHelperEntity.js +3 -3
- package/editor/process/symbolic/makeGridPositionSymbolDisplay.js +3 -3
- package/editor/process/symbolic/makePositionedIconDisplaySymbol.js +3 -3
- package/editor/tools/v2/prototypeTransformControls.js +3 -3
- package/editor/view/ecs/ComponentControlView.js +2 -1
- package/package.json +2 -2
- package/samples/generation/main.js +2 -2
- package/samples/terrain/from_image.js +2 -2
- package/samples/terrain/from_image_2.js +4 -4
- package/src/core/binary/byteArrayToString.js +28 -0
- package/src/core/binary/downloadAsFile.js +28 -0
- package/src/core/binary/downloadUrlAsFile.js +14 -0
- package/src/core/binary/jsonToStringToByteArray.js +27 -0
- package/src/core/binary/stringToByteArray.js +24 -0
- package/src/core/bvh2/BinaryNode.spec.js +2 -1
- package/src/core/color/Color.spec.js +27 -1
- package/src/core/color/parse_color.js +1 -1
- package/src/core/fsm/simple/SimpleStateMachine.spec.js +34 -2
- package/src/core/geom/3d/matrix/m4_multiply.js +2 -2
- package/src/core/geom/3d/matrix/m4_multiply.spec.js +11 -0
- package/src/core/geom/3d/matrix/m4_multiply_alphatensor.spec.js +11 -0
- package/src/core/geom/3d/morton/split_by_2.js +1 -1
- package/src/core/geom/3d/shape/util/shape_to_visual_entity.js +10 -10
- package/src/core/geom/3d/tetrahedra/prototypeTetrahedraBuilder.js +2 -2
- package/src/core/geom/3d/topology/samples/sampleFloodFill.js +3 -3
- package/src/core/process/action/AsynchronousDelayAction.js +2 -2
- package/src/core/process/executor/profile/ConcurrentExecutorProfiler.js +1 -1
- package/src/engine/EngineHarness.js +7 -7
- package/src/engine/EntityCreator.js +5 -5
- package/src/engine/__module.js +1 -1
- package/src/engine/achievements/AchievementManager.js +2 -2
- package/src/engine/animation/AnimationUtils.js +4 -4
- package/src/engine/animation/behavior/animateProperty.js +2 -2
- package/src/engine/animation/curve/draw/build_plot_entity_from_array.js +3 -3
- package/src/engine/animation/playAnimationTrack.js +3 -3
- package/src/engine/animation/playTrackRealTime.js +3 -3
- package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +2 -2
- package/src/engine/control/ControlContext.js +7 -7
- package/src/engine/ecs/{EntityBuilder.d.ts → Entity.d.ts} +5 -5
- package/src/engine/ecs/{EntityBuilder.js → Entity.js} +29 -29
- package/src/engine/ecs/{EntityBuilder.spec.js → Entity.spec.js} +17 -17
- package/src/engine/ecs/EntityBlueprint.d.ts +2 -2
- package/src/engine/ecs/EntityBlueprint.js +3 -3
- package/src/engine/ecs/EntityBlueprint.spec.js +2 -2
- package/src/engine/ecs/{EntityBuilderFlags.js → EntityFlags.js} +1 -1
- package/src/engine/ecs/EntityObserver.spec.js +8 -8
- package/src/engine/ecs/dynamic_actions/DynamicActorSystem.js +5 -5
- package/src/engine/ecs/foliage/ecs/InstancedMeshUtils.js +3 -3
- package/src/engine/ecs/gui/menu/radial/RadialContextMenu.d.ts +2 -2
- package/src/engine/ecs/gui/menu/radial/RadialContextMenu.js +5 -5
- package/src/engine/ecs/parent/EntityNode.d.ts +3 -3
- package/src/engine/ecs/parent/EntityNode.js +5 -5
- package/src/engine/ecs/parent/testHuDPerf.js +2 -2
- package/src/engine/ecs/speaker/VoiceSystem.js +5 -5
- package/src/engine/ecs/tooltip/testTooltipComponentSystem.js +3 -3
- package/src/engine/graphics/camera/makeOrbitalCameraController.js +3 -3
- package/src/engine/graphics/camera/testClippingPlaneComputation.js +3 -3
- package/src/engine/graphics/debug/createDebugLabel.js +3 -3
- package/src/engine/graphics/ecs/camera/filter/setup_filtered_camera_controller.js +3 -3
- package/src/engine/graphics/ecs/decal/v2/prototypeDecalEditor.js +3 -3
- package/src/engine/graphics/ecs/decal/v2/prototypeDecalSystem.js +14 -14
- package/src/engine/graphics/ecs/mesh-v2/aggregate/prototypeSGMesh.js +3 -3
- package/src/engine/graphics/ecs/mesh-v2/sample/prototypeShadedGeometry.js +5 -5
- package/src/engine/graphics/ecs/mesh-v2/sample/prototype_sg_raycast.js +6 -6
- package/src/engine/graphics/ecs/path/ribbon/RibbonPathBuilder.js +3 -3
- package/src/engine/graphics/ecs/path/testPathDisplaySystem.js +3 -3
- package/src/engine/graphics/ecs/path/tube/build/TubePathBuilder.js +3 -3
- package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +3 -3
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +2 -2
- package/src/engine/graphics/ecs/sprite/prototypeSpriteSystem.js +2 -2
- package/src/engine/graphics/geometry/optimization/merge/prototypeGeometryMerge.js +4 -4
- package/src/engine/graphics/impostors/octahedral/prototypeBaker.js +7 -7
- package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.js +1 -1
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/prototypeBillboardRenderer.js +2 -2
- package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.d.ts +2 -2
- package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.js +3 -3
- package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +10 -10
- package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +2 -2
- package/src/engine/graphics/render/buffer/simple-fx/taa/prototypeTAA.js +2 -2
- package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +11 -11
- package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +5 -5
- package/src/engine/graphics/sh3/LightProbeVolume.js +2 -2
- package/src/engine/graphics/sh3/prototypeSH3Probe.js +3 -3
- package/src/engine/graphics/sh3/visualise_probe.js +3 -3
- package/src/engine/graphics/shadows/testShadowMapRendering.js +3 -3
- package/src/engine/graphics/texture/sampler/downloadSamplerAsPNG.js +1 -1
- package/src/engine/graphics/texture/sprite/prototypeSpriteCutoutGeometry.js +2 -2
- package/src/engine/input/ecs/controllers/KeyboardCameraController.js +2 -2
- package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +2 -2
- package/src/engine/intelligence/behavior/composite/ParallelBehavior.spec.js +13 -12
- package/src/engine/physics/fluid/prototype.js +3 -3
- package/src/engine/save/storage/JsonStringCodec.js +1 -1
- package/src/engine/save/storage/LocalStorage.js +2 -1
- package/src/engine/ui/GUIEngine.js +4 -4
- package/src/engine/ui/notification/NotificationManager.js +3 -3
- package/src/generation/markers/debug/visualizeMarkers.js +2 -2
- package/src/generation/markers/prototypeGridCellActionPlaceMarker.js +2 -2
- package/src/core/binary/ByteArrayTools.js +0 -137
- package/src/core/binary/NaiveBitSet.js +0 -69
- package/src/core/binary/objects/StandardTypeBuilder.js +0 -126
- package/src/core/binary/serde/JsonSerializer.js +0 -113
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Used for testing of BitSet correctness and performance
|
|
3
|
-
* NOTE: Not intended for production. Use {@link BitSet} instead
|
|
4
|
-
*/
|
|
5
|
-
export class NaiveBitSet {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.data = [];
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
nextSetBit(fromIndex) {
|
|
11
|
-
let i;
|
|
12
|
-
|
|
13
|
-
for (i = fromIndex; i < this.data.length; i++) {
|
|
14
|
-
if (this.data[i] === true) {
|
|
15
|
-
return i;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return -1;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
nextClearBit(fromIndex) {
|
|
23
|
-
let i;
|
|
24
|
-
|
|
25
|
-
for (i = fromIndex; i < this.data.length; i++) {
|
|
26
|
-
if (this.data[i] !== true) {
|
|
27
|
-
return i;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
return i;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
previousSetBit(fromIndex) {
|
|
35
|
-
let i;
|
|
36
|
-
|
|
37
|
-
for (i = fromIndex; i >= 0; i--) {
|
|
38
|
-
if (this.data[i] === true) {
|
|
39
|
-
return i;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return -1;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
set(bitIndex, value) {
|
|
47
|
-
this.data[bitIndex] = value;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
get(bitIndex) {
|
|
51
|
-
return (this.data[bitIndex] === true);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
size() {
|
|
55
|
-
return this.data.length;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
setCapacity(n) {
|
|
59
|
-
//do nothing
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
capacity() {
|
|
63
|
-
return this.data.length;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
reset() {
|
|
67
|
-
this.data = [];
|
|
68
|
-
}
|
|
69
|
-
}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Created by Alex on 14/12/2016.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import LineBuilder from "../../codegen/LineBuilder.js";
|
|
7
|
-
import MultiplicityType from "../type/MultiplicityType.js";
|
|
8
|
-
|
|
9
|
-
function cgFieldFromJSON(field) {
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
function generateStructure(type, typeRegistry) {
|
|
14
|
-
const lbConstruct = new LineBuilder();
|
|
15
|
-
const lbSerialize = new LineBuilder();
|
|
16
|
-
const lbDeSerialize = new LineBuilder();
|
|
17
|
-
//add fields
|
|
18
|
-
if (type.isPrimitive) {
|
|
19
|
-
throw new Error('Can not create a constructor for primitive type');
|
|
20
|
-
}
|
|
21
|
-
lbSerialize.add('return {');
|
|
22
|
-
lbSerialize.indent();
|
|
23
|
-
|
|
24
|
-
type.fields.forEach(function (field, index) {
|
|
25
|
-
lbConstruct.add('this.' + field.name + ' = ' + field.initial + ';');
|
|
26
|
-
|
|
27
|
-
lbSerialize.add(field.name + ': this.' + field.name + '.toJSON()' + ((index < type.fields.length - 1) ? ',' : ''));
|
|
28
|
-
|
|
29
|
-
lbDeSerialize.add('this.' + field.name + ' = ');
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
lbSerialize.dedent();
|
|
33
|
-
lbSerialize.add('};');
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
function build(type, typeRegistry) {
|
|
38
|
-
return typeRegistry.getOrCompute(type.name, function () {
|
|
39
|
-
return generateStructure(type, typeRegistry);
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
function ClassBuilder() {
|
|
45
|
-
this.dependencies = [];
|
|
46
|
-
|
|
47
|
-
this.fragments = {
|
|
48
|
-
init: new LineBuilder(),
|
|
49
|
-
serialize: new LineBuilder(),
|
|
50
|
-
deserialize: new LineBuilder()
|
|
51
|
-
};
|
|
52
|
-
this.jsonFields = [];
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
ClassBuilder.prototype.loadClass = function (name) {
|
|
56
|
-
const dependencies = this.dependencies;
|
|
57
|
-
const length = dependencies.length;
|
|
58
|
-
for (let i = 0; i < length; i++) {
|
|
59
|
-
const dependency = dependencies[i];
|
|
60
|
-
if (dependency === name) {
|
|
61
|
-
return "$" + i;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
this.dependencies.push(name);
|
|
65
|
-
return "$" + length;
|
|
66
|
-
};
|
|
67
|
-
/**
|
|
68
|
-
*
|
|
69
|
-
* @param {Field} field
|
|
70
|
-
*/
|
|
71
|
-
ClassBuilder.prototype.addField = function (field) {
|
|
72
|
-
let handle;
|
|
73
|
-
|
|
74
|
-
const fInit = this.fragments.init;
|
|
75
|
-
const fDeSerialize = this.fragments.deserialize;
|
|
76
|
-
|
|
77
|
-
const fieldType = field.type;
|
|
78
|
-
const fieldName = field.name;
|
|
79
|
-
|
|
80
|
-
const cgFieldVar = 'this.' + fieldName;
|
|
81
|
-
|
|
82
|
-
let cgSerializedValue;
|
|
83
|
-
|
|
84
|
-
const cgFieldJson = 'json.' + fieldName;
|
|
85
|
-
|
|
86
|
-
if (field.multiplicity === MultiplicityType.Many) {
|
|
87
|
-
handle = this.loadClass('core.collection.List');
|
|
88
|
-
|
|
89
|
-
fInit.add(cgFieldVar + ' = new ' + handle + "();");
|
|
90
|
-
cgSerializedValue = cgFieldVar + '.toJSON()';
|
|
91
|
-
|
|
92
|
-
if (fieldType.isPrimitive) {
|
|
93
|
-
fDeSerialize.add(cgFieldVar + '.fromJSON(' + cgFieldJson + ');');
|
|
94
|
-
} else {
|
|
95
|
-
handle = this.loadClass(fieldType.name);
|
|
96
|
-
fDeSerialize.add(cgFieldVar + '.fromJSON(' + cgFieldJson + ', ' + handle + ');');
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
} else if (field.observed) {
|
|
100
|
-
handle = this.loadClass('core.model.ObservedValue');
|
|
101
|
-
fInit.add(cgFieldVar + ' = new ' + handle + "(" + field.initial + ");");
|
|
102
|
-
cgSerializedValue = cgFieldVar + '.get()';
|
|
103
|
-
if (!fieldType.isPrimitive) {
|
|
104
|
-
cgSerializedValue += '.toJSON()';
|
|
105
|
-
fDeSerialize.add(cgFieldVar + '.get().fromJSON(' + cgFieldJson + ');');
|
|
106
|
-
} else {
|
|
107
|
-
fDeSerialize.add(cgFieldVar + '.fromJSON(' + cgFieldJson + ');');
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
} else {
|
|
111
|
-
fInit.add(cgFieldVar + ' = (' + field.initial + ');');
|
|
112
|
-
cgSerializedValue = cgFieldVar;
|
|
113
|
-
if (!fieldType.isPrimitive) {
|
|
114
|
-
cgSerializedValue += '.toJSON()';
|
|
115
|
-
fDeSerialize.add(cgFieldVar + '.fromJSON(' + cgFieldJson + ');');
|
|
116
|
-
} else {
|
|
117
|
-
fDeSerialize.add(cgFieldVar + ' = (' + cgFieldJson + ');');
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
this.jsonFields.push(fieldName + ' : ' + cgSerializedValue);
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
export default {
|
|
125
|
-
build: build
|
|
126
|
-
};
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import LineBuilder from "../../codegen/LineBuilder.js";
|
|
2
|
-
import SchemeRegistry from "../../model/scheme/SchemeRegistry.js";
|
|
3
|
-
|
|
4
|
-
function JsonSerializer(registry = new SchemeRegistry()) {
|
|
5
|
-
this.registry = registry;
|
|
6
|
-
this.serializers = {};
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
* @param value
|
|
12
|
-
* @param {Type} type
|
|
13
|
-
* @param {Map} visitedObjects
|
|
14
|
-
* @private
|
|
15
|
-
*/
|
|
16
|
-
JsonSerializer.prototype.__serialize = function (value, type, visitedObjects) {
|
|
17
|
-
const existing = visitedObjects.get(value);
|
|
18
|
-
if (existing !== undefined) {
|
|
19
|
-
//cycle detected
|
|
20
|
-
return existing;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const serializer = this.getSerializer(typeName);
|
|
24
|
-
|
|
25
|
-
const result = serializer(value);
|
|
26
|
-
|
|
27
|
-
visitedObjects.put(value, result);
|
|
28
|
-
|
|
29
|
-
return result;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
JsonSerializer.prototype.serialize = function (value) {
|
|
33
|
-
const type = value.constructor.@schema;
|
|
34
|
-
|
|
35
|
-
return this.__serialize(value, type, new Map());
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
JsonSerializer.prototype.addSerializer = function (name, serializer) {
|
|
39
|
-
this.serializers[name] = serializer;
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
*
|
|
44
|
-
* @param {String} typeName
|
|
45
|
-
* @returns {function}
|
|
46
|
-
*/
|
|
47
|
-
JsonSerializer.prototype.getSerializer = function (typeName) {
|
|
48
|
-
let serializer = this.serializers[typeName];
|
|
49
|
-
|
|
50
|
-
if (serializer === undefined) {
|
|
51
|
-
const schema = this.registry.get(typeName);
|
|
52
|
-
serializer = this.buildSerializer(schema);
|
|
53
|
-
this.addSerializer(typeName, serializer);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return serializer;
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
*
|
|
61
|
-
* @param {Type} type
|
|
62
|
-
*/
|
|
63
|
-
JsonSerializer.prototype.buildSerializer = function (type) {
|
|
64
|
-
|
|
65
|
-
const fields = type.fields;
|
|
66
|
-
|
|
67
|
-
const fieldSerializers = [];
|
|
68
|
-
const fieldCount = fields.length;
|
|
69
|
-
|
|
70
|
-
const serializerNames = [];
|
|
71
|
-
|
|
72
|
-
for (let i = 0; i < fieldCount; i++) {
|
|
73
|
-
const field = fields[i];
|
|
74
|
-
|
|
75
|
-
const fieldType = field.type;
|
|
76
|
-
|
|
77
|
-
serializerNames[i] = "$" + field.name;
|
|
78
|
-
|
|
79
|
-
fieldSerializers[i] = this.getSerializer(fieldType.name);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
const lb = new LineBuilder();
|
|
83
|
-
|
|
84
|
-
lb.add("return function(value){")
|
|
85
|
-
.indent()
|
|
86
|
-
.add("return {")
|
|
87
|
-
.indent();
|
|
88
|
-
|
|
89
|
-
for (let i = 0; i < fieldCount; i++) {
|
|
90
|
-
const field = fields[i];
|
|
91
|
-
|
|
92
|
-
const serializerName = serializerNames[i];
|
|
93
|
-
|
|
94
|
-
const lastLine = i + 1 >= fieldCount;
|
|
95
|
-
|
|
96
|
-
const accessorSnippet = "value." + field.name + (field.observed ? ".get()" : "");
|
|
97
|
-
const serializedValueSnippet = serializerName + "(" + accessorSnippet + ")";
|
|
98
|
-
|
|
99
|
-
lb.add(field.name + " : " + serializedValueSnippet + (lastLine ? "" : ","));
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
lb.dedent()
|
|
103
|
-
.add("};")
|
|
104
|
-
.dedent()
|
|
105
|
-
.add("};");
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const builder = new Function(serializerNames, lb.build());
|
|
109
|
-
|
|
110
|
-
return builder(fieldSerializers);
|
|
111
|
-
};
|
|
112
|
-
|
|
113
|
-
export default JsonSerializer;
|