@woosh/meep-engine 2.57.0 → 2.58.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.
Files changed (102) hide show
  1. package/editor/Editor.js +4 -4
  2. package/editor/process/symbolic/buildThreeJSHelperEntity.js +3 -3
  3. package/editor/process/symbolic/makeGridPositionSymbolDisplay.js +3 -3
  4. package/editor/process/symbolic/makePositionedIconDisplaySymbol.js +3 -3
  5. package/editor/tools/v2/prototypeTransformControls.js +3 -3
  6. package/editor/view/ecs/ComponentControlView.js +2 -1
  7. package/package.json +1 -1
  8. package/samples/generation/main.js +2 -2
  9. package/samples/terrain/from_image.js +2 -2
  10. package/samples/terrain/from_image_2.js +4 -4
  11. package/src/core/binary/byteArrayToString.js +28 -0
  12. package/src/core/binary/downloadAsFile.js +28 -0
  13. package/src/core/binary/downloadUrlAsFile.js +14 -0
  14. package/src/core/binary/jsonToStringToByteArray.js +27 -0
  15. package/src/core/binary/stringToByteArray.js +24 -0
  16. package/src/core/bvh2/BinaryNode.spec.js +2 -1
  17. package/src/core/color/Color.spec.js +27 -1
  18. package/src/core/color/parse_color.js +1 -1
  19. package/src/core/fsm/simple/SimpleStateMachine.spec.js +34 -2
  20. package/src/core/geom/3d/matrix/m4_multiply.js +2 -2
  21. package/src/core/geom/3d/matrix/m4_multiply.spec.js +11 -0
  22. package/src/core/geom/3d/matrix/m4_multiply_alphatensor.spec.js +11 -0
  23. package/src/core/geom/3d/morton/split_by_2.js +1 -1
  24. package/src/core/geom/3d/shape/util/shape_to_visual_entity.js +10 -10
  25. package/src/core/geom/3d/tetrahedra/prototypeTetrahedraBuilder.js +2 -2
  26. package/src/core/geom/3d/topology/samples/sampleFloodFill.js +3 -3
  27. package/src/core/process/action/AsynchronousDelayAction.js +2 -2
  28. package/src/core/process/executor/profile/ConcurrentExecutorProfiler.js +1 -1
  29. package/src/engine/EngineHarness.js +7 -7
  30. package/src/engine/EntityCreator.js +5 -5
  31. package/src/engine/__module.js +1 -1
  32. package/src/engine/achievements/AchievementManager.js +2 -2
  33. package/src/engine/animation/AnimationUtils.js +4 -4
  34. package/src/engine/animation/behavior/animateProperty.js +2 -2
  35. package/src/engine/animation/curve/draw/build_plot_entity_from_array.js +3 -3
  36. package/src/engine/animation/playAnimationTrack.js +3 -3
  37. package/src/engine/animation/playTrackRealTime.js +3 -3
  38. package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +2 -2
  39. package/src/engine/control/ControlContext.js +7 -7
  40. package/src/engine/ecs/{EntityBuilder.d.ts → Entity.d.ts} +5 -5
  41. package/src/engine/ecs/{EntityBuilder.js → Entity.js} +29 -29
  42. package/src/engine/ecs/{EntityBuilder.spec.js → Entity.spec.js} +17 -17
  43. package/src/engine/ecs/EntityBlueprint.d.ts +2 -2
  44. package/src/engine/ecs/EntityBlueprint.js +3 -3
  45. package/src/engine/ecs/EntityBlueprint.spec.js +2 -2
  46. package/src/engine/ecs/{EntityBuilderFlags.js → EntityFlags.js} +1 -1
  47. package/src/engine/ecs/EntityObserver.spec.js +8 -8
  48. package/src/engine/ecs/dynamic_actions/DynamicActorSystem.js +5 -5
  49. package/src/engine/ecs/foliage/ecs/InstancedMeshUtils.js +3 -3
  50. package/src/engine/ecs/gui/menu/radial/RadialContextMenu.d.ts +2 -2
  51. package/src/engine/ecs/gui/menu/radial/RadialContextMenu.js +5 -5
  52. package/src/engine/ecs/parent/EntityNode.d.ts +3 -3
  53. package/src/engine/ecs/parent/EntityNode.js +5 -5
  54. package/src/engine/ecs/parent/testHuDPerf.js +2 -2
  55. package/src/engine/ecs/speaker/VoiceSystem.js +5 -5
  56. package/src/engine/ecs/tooltip/testTooltipComponentSystem.js +3 -3
  57. package/src/engine/graphics/camera/makeOrbitalCameraController.js +3 -3
  58. package/src/engine/graphics/camera/testClippingPlaneComputation.js +3 -3
  59. package/src/engine/graphics/debug/createDebugLabel.js +3 -3
  60. package/src/engine/graphics/ecs/camera/filter/setup_filtered_camera_controller.js +3 -3
  61. package/src/engine/graphics/ecs/decal/v2/prototypeDecalEditor.js +3 -3
  62. package/src/engine/graphics/ecs/decal/v2/prototypeDecalSystem.js +14 -14
  63. package/src/engine/graphics/ecs/mesh-v2/aggregate/prototypeSGMesh.js +3 -3
  64. package/src/engine/graphics/ecs/mesh-v2/sample/prototypeShadedGeometry.js +5 -5
  65. package/src/engine/graphics/ecs/mesh-v2/sample/prototype_sg_raycast.js +6 -6
  66. package/src/engine/graphics/ecs/path/ribbon/RibbonPathBuilder.js +3 -3
  67. package/src/engine/graphics/ecs/path/testPathDisplaySystem.js +3 -3
  68. package/src/engine/graphics/ecs/path/tube/build/TubePathBuilder.js +3 -3
  69. package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +3 -3
  70. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +2 -2
  71. package/src/engine/graphics/ecs/sprite/prototypeSpriteSystem.js +2 -2
  72. package/src/engine/graphics/geometry/optimization/merge/prototypeGeometryMerge.js +4 -4
  73. package/src/engine/graphics/impostors/octahedral/prototypeBaker.js +7 -7
  74. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.js +1 -1
  75. package/src/engine/graphics/particles/particular/engine/renderers/billboard/prototypeBillboardRenderer.js +2 -2
  76. package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.d.ts +2 -2
  77. package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.js +3 -3
  78. package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +10 -10
  79. package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +2 -2
  80. package/src/engine/graphics/render/buffer/simple-fx/taa/prototypeTAA.js +2 -2
  81. package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +11 -11
  82. package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +5 -5
  83. package/src/engine/graphics/sh3/LightProbeVolume.js +2 -2
  84. package/src/engine/graphics/sh3/prototypeSH3Probe.js +3 -3
  85. package/src/engine/graphics/sh3/visualise_probe.js +3 -3
  86. package/src/engine/graphics/shadows/testShadowMapRendering.js +3 -3
  87. package/src/engine/graphics/texture/sampler/downloadSamplerAsPNG.js +1 -1
  88. package/src/engine/graphics/texture/sprite/prototypeSpriteCutoutGeometry.js +2 -2
  89. package/src/engine/input/ecs/controllers/KeyboardCameraController.js +2 -2
  90. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +2 -2
  91. package/src/engine/intelligence/behavior/composite/ParallelBehavior.spec.js +13 -12
  92. package/src/engine/physics/fluid/prototype.js +3 -3
  93. package/src/engine/save/storage/JsonStringCodec.js +1 -1
  94. package/src/engine/save/storage/LocalStorage.js +2 -1
  95. package/src/engine/ui/GUIEngine.js +4 -4
  96. package/src/engine/ui/notification/NotificationManager.js +3 -3
  97. package/src/generation/markers/debug/visualizeMarkers.js +2 -2
  98. package/src/generation/markers/prototypeGridCellActionPlaceMarker.js +2 -2
  99. package/src/core/binary/ByteArrayTools.js +0 -137
  100. package/src/core/binary/NaiveBitSet.js +0 -69
  101. package/src/core/binary/objects/StandardTypeBuilder.js +0 -126
  102. 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;