@woosh/meep-engine 2.33.35 → 2.33.39

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 (67) hide show
  1. package/core/collection/HashMap.js +19 -12
  2. package/core/collection/table/RowFirstTable.js +13 -8
  3. package/core/collection/table/RowFirstTableSpec.js +6 -0
  4. package/core/color/Color.js +5 -9
  5. package/core/color/ColorUtils.js +4 -150
  6. package/core/color/YCbCr_to_rgb_uint24.js +20 -0
  7. package/core/color/hsv2rgb.js +54 -0
  8. package/core/color/int2rgb.js +12 -0
  9. package/core/color/parseHex.js +18 -0
  10. package/core/color/rgb2hex.js +16 -0
  11. package/core/color/rgb2hsv.js +47 -0
  12. package/core/color/rgb2uint24.js +17 -0
  13. package/core/color/rgb_to_YCbCr_uint24.js +18 -0
  14. package/core/geom/3d/aabb/compute_aabb_from_points.js +28 -0
  15. package/core/geom/3d/plane/orient3d_fast.js +51 -0
  16. package/core/geom/3d/plane/plane_computeConvex3PlaneIntersection.js +5 -0
  17. package/core/geom/3d/tetrahedra/GetDepthForTetrahedronProbe.glsl +43 -0
  18. package/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.js +177 -0
  19. package/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.spec.js +66 -0
  20. package/core/geom/3d/tetrahedra/compute_circumsphere.js +271 -0
  21. package/core/geom/3d/tetrahedra/compute_delaunay_tetrahedral_mesh.js +50 -0
  22. package/core/geom/3d/tetrahedra/compute_delaunay_tetrahedral_mesh.spec.js +14 -0
  23. package/core/geom/3d/tetrahedra/point_in_tetrahedron_circumsphere.js +77 -0
  24. package/core/geom/3d/tetrahedra/tetrahedra_collection.js +279 -0
  25. package/core/geom/3d/tetrahedra/tetrahedron_contains_point.js +25 -0
  26. package/core/geom/Quaternion.js +4 -0
  27. package/core/math/hash/murmur3_32.js +39 -0
  28. package/core/process/undo/ActionProcessor.d.ts +2 -0
  29. package/core/process/undo/ActionProcessor.js +15 -4
  30. package/editor/tools/FoliagePaintTool.js +1 -1
  31. package/editor/tools/GridPaintTool.js +1 -1
  32. package/engine/asset/loaders/GLTFAssetLoader.js +4 -8
  33. package/engine/ecs/foliage/InstancedFoliage.js +45 -0
  34. package/engine/ecs/foliage/ecs/InstancedMeshLayer.js +4 -0
  35. package/engine/ecs/storage/BinaryBufferSerializer.js +48 -38
  36. package/engine/ecs/storage/binary/collection/BinaryCollectionSerializer.js +1 -1
  37. package/engine/ecs/terrain/ecs/splat/SplatMapOptimizerDebugger.js +1 -1
  38. package/engine/ecs/terrain/tiles/TerrainTile.js +1 -1
  39. package/engine/graphics/GraphicsEngine.js +7 -0
  40. package/engine/graphics/ecs/mesh/Mesh.js +2 -2
  41. package/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +13 -0
  42. package/engine/graphics/geometry/instancing/InstancedMeshGroup.js +339 -314
  43. package/engine/graphics/micron/build/PatchRepresentation.js +1 -1
  44. package/engine/graphics/micron/build/buildMicronGeometryFromBufferGeometry.js +1 -1
  45. package/engine/graphics/micron/build/fill_patch_geometry_data.js +1 -1
  46. package/engine/graphics/micron/format/serialization/deserialize_patch.js +1 -1
  47. package/engine/graphics/micron/format/serialization/serialize_patch.js +1 -1
  48. package/engine/graphics/micron/prototypeVirtualGeometry.js +4 -1
  49. package/engine/graphics/micron/render/instanced/PatchDataTextures.js +3 -3
  50. package/engine/graphics/micron/render/instanced/ThreeInstancedAdapter.js +1 -1
  51. package/engine/graphics/micron/render/instanced/shader/shader_rewrite_standard.js +1 -1
  52. package/engine/graphics/micron/render/makeThreeMeshFromVirtualGeometry.js +1 -1
  53. package/engine/graphics/micron/render/v1/MaterialVertexSpec.js +2 -2
  54. package/engine/graphics/micron/render/v1/ThreeVirtualGeometryAdapter.js +1 -1
  55. package/engine/graphics/micron/render/v1/VGThreeRenderer.js +7 -3
  56. package/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.js +1 -1
  57. package/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.js +100 -55
  58. package/engine/graphics/particles/particular/engine/shader/ShaderManager.js +6 -1
  59. package/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.js +1 -0
  60. package/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.js +1 -1
  61. package/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.js +17 -4
  62. package/engine/graphics/render/forward_plus/plugin/ForwardPlusRenderingPlugin.js +1 -1
  63. package/engine/graphics/render/visibility/VisibilityComputer.js +8 -7
  64. package/engine/graphics/shaders/TerrainShader.js +5 -5
  65. package/engine/graphics/shadows/testShadowMapRendering.js +192 -0
  66. package/package.json +3 -1
  67. package/view/elements/ColorPickerView.js +2 -1
@@ -0,0 +1,192 @@
1
+ import { EngineHarness } from "../../EngineHarness.js";
2
+ import { loadSerializedScene } from "../../scene/SerializedScene.js";
3
+ import { EngineConfiguration } from "../../EngineConfiguration.js";
4
+ import { MeshSystem } from "../ecs/mesh/MeshSystem.js";
5
+ import GUIElementSystem from "../../ecs/gui/GUIElementSystem.js";
6
+ import HeadsUpDisplaySystem from "../../ecs/gui/hud/HeadsUpDisplaySystem.js";
7
+ import TagSystem from "../../ecs/systems/TagSystem.js";
8
+ import { AttachmentSocketsSystem } from "../../ecs/sockets/AttachmentSocketsSystem.js";
9
+ import { AttachmentSystem } from "../../ecs/attachment/AttachmentSystem.js";
10
+ import { SoundEmitterSystem } from "../../sound/ecs/emitter/SoundEmitterSystem.js";
11
+ import SoundControllerSystem from "../../sound/ecs/SoundControllerSystem.js";
12
+ import SoundListenerSystem from "../../sound/ecs/SoundListenerSystem.js";
13
+ import AnimationSystem from "../../ecs/systems/AnimationSystem.js";
14
+ import TopDownCameraControllerSystem from "../ecs/camera/topdown/TopDownCameraControllerSystem.js";
15
+ import { CameraSystem } from "../ecs/camera/CameraSystem.js";
16
+ import ClingToTerrainSystem from "../../ecs/terrain/ecs/ClingToTerrainSystem.js";
17
+ import TerrainSystem from "../../ecs/terrain/ecs/TerrainSystem.js";
18
+ import Trail2DSystem from "../ecs/trail2d/Trail2DSystem.js";
19
+ import { Foliage2System } from "../../ecs/foliage/ecs/Foliage2System.js";
20
+ import ViewportPositionSystem from "../../ecs/gui/position/ViewportPositionSystem.js";
21
+ import SynchronizePositionSystem from "../../ecs/systems/SynchronizePositionSystem.js";
22
+ import InputControllerSystem from "../../input/ecs/systems/InputControllerSystem.js";
23
+ import { InputSystem } from "../../input/ecs/systems/InputSystem.js";
24
+ import MeshHighlightSystem from "../ecs/highlight/system/MeshHighlightSystem.js";
25
+ import LightSystem from "../ecs/light/LightSystem.js";
26
+ import { BehaviorSystem } from "../../intelligence/behavior/ecs/BehaviorSystem.js";
27
+ import { SerializationMetadataSystem } from "../../ecs/systems/SerializationMetadataSystem.js";
28
+ import { PathDisplaySystem } from "../ecs/path/PathDisplaySystem.js";
29
+ import { ParticleEmitterSystem } from "../particles/ecs/ParticleEmitterSystem.js";
30
+ import { ShadedGeometrySystem } from "../ecs/mesh-v2/ShadedGeometrySystem.js";
31
+ import { ArrayBufferLoader } from "../../asset/loaders/ArrayBufferLoader.js";
32
+ import { initializeGameBinarySerializationRegistry } from "../../../../model/game/GameBinarySerializationRegistry.js";
33
+ import WaterSystem from "../ecs/water/WaterSystem.js";
34
+ import Army from "../../../../model/game/ecs/component/army/Army.js";
35
+ import Mesh from "../ecs/mesh/Mesh.js";
36
+ import EntityBuilder from "../../ecs/EntityBuilder.js";
37
+ import { buildCanvasViewFromTexture } from "../render/visibility/hiz/buildCanvasViewFromTexture.js";
38
+ import ViewportPosition from "../../ecs/gui/position/ViewportPosition.js";
39
+ import Vector2 from "../../../core/geom/Vector2.js";
40
+ import GUIElement from "../../ecs/gui/GUIElement.js";
41
+ import { enableEditor } from "../../../editor/enableEditor.js";
42
+ import { SerializationMetadata } from "../../ecs/components/SerializationMetadata.js";
43
+
44
+ const eh = new EngineHarness();
45
+
46
+ /**
47
+ *
48
+ * @param {Engine} engine
49
+ * @returns {EngineConfiguration}
50
+ */
51
+ function makeConfig(engine) {
52
+
53
+ const config = new EngineConfiguration();
54
+
55
+ /**
56
+ *
57
+ * @type {SoundEngine}
58
+ */
59
+ const sound = engine.sound;
60
+ const graphics = engine.graphics;
61
+ const assetManager = engine.assetManager;
62
+ const devices = engine.devices;
63
+
64
+ // graphics.renderer.shadowMap.type = BasicShadowMap;
65
+
66
+ const guiSystem = new GUIElementSystem(engine.gui.view, engine);
67
+ const headsUpDisplaySystem = new HeadsUpDisplaySystem(graphics);
68
+
69
+ config.addLoader('arraybuffer', new ArrayBufferLoader());
70
+
71
+ initializeGameBinarySerializationRegistry(engine.binarySerializationRegistry);
72
+
73
+ config.addManySystems(
74
+ new TagSystem(),
75
+ new AttachmentSocketsSystem(),
76
+ new AttachmentSystem(),
77
+ new SoundEmitterSystem(assetManager, sound.destination, sound.context),
78
+ new SoundControllerSystem(),
79
+ new SoundListenerSystem(sound.context),
80
+ guiSystem,
81
+ new AnimationSystem(graphics.viewport.size),
82
+ new TopDownCameraControllerSystem(graphics),
83
+ new CameraSystem(graphics.scene, graphics),
84
+ new MeshSystem(engine),
85
+ new ClingToTerrainSystem(),
86
+ new TerrainSystem(graphics, assetManager),
87
+ new Trail2DSystem(engine),
88
+ new Foliage2System(assetManager, graphics),
89
+ new ViewportPositionSystem(graphics.viewport.size),
90
+ new SynchronizePositionSystem(),
91
+ new InputControllerSystem(devices),
92
+ new InputSystem(devices),
93
+ new MeshHighlightSystem(engine),
94
+ new LightSystem(engine, {
95
+ shadowResolution: 2048
96
+ }),
97
+ headsUpDisplaySystem,
98
+ new BehaviorSystem(engine),
99
+ new SerializationMetadataSystem(),
100
+ new PathDisplaySystem(engine),
101
+ new ParticleEmitterSystem(engine),
102
+ new ShadedGeometrySystem(engine),
103
+ new WaterSystem(graphics)
104
+ );
105
+
106
+
107
+ // Knowledge
108
+
109
+ return config;
110
+ }
111
+
112
+ /**
113
+ *
114
+ * @param {Engine} engine
115
+ */
116
+ function get_three_light(engine) {
117
+
118
+ return engine.graphics.scene.children.find(l => l.isDirectionalLight);
119
+ }
120
+
121
+ /**
122
+ *
123
+ * @param {Engine} engine
124
+ */
125
+ function init_shadowmap_preview(engine) {
126
+ const ecd = engine.entityManager.dataset;
127
+
128
+ const graphics = engine.graphics;
129
+ const preview = buildCanvasViewFromTexture({
130
+ width: 512,
131
+ height: 512,
132
+ renderer: graphics.renderer,
133
+ texture: null
134
+ });
135
+
136
+ graphics.on.postOpaquePass.add(() => {
137
+
138
+ const light = get_three_light(engine);
139
+
140
+ if (light !== undefined) {
141
+ preview.texture = light.shadow.map.texture;
142
+
143
+ preview.render();
144
+ }
145
+ });
146
+
147
+
148
+ new EntityBuilder()
149
+ .add(ViewportPosition.fromJSON({
150
+ offset: new Vector2(10, 10)
151
+ }))
152
+ .add(GUIElement.fromView(preview.view))
153
+ .add(SerializationMetadata.Transient)
154
+ .build(ecd);
155
+ }
156
+
157
+ /**
158
+ *
159
+ * @param {Engine} engine
160
+ * @returns {Promise<void>}
161
+ */
162
+ async function main(engine) {
163
+
164
+ const ecd = engine.entityManager.dataset;
165
+ await loadSerializedScene('data/levels/character_creation/level.bin', ecd, engine);
166
+
167
+
168
+ const character = ecd.getAnyComponent(Army);
169
+
170
+ const entity = EntityBuilder.readFromDataset(character.entity, ecd);
171
+
172
+ entity.getComponent(Mesh).url = "data/models/Conqueror Mech/Conqueror Mech.gltf";
173
+
174
+ init_shadowmap_preview(engine);
175
+
176
+ window.light = get_three_light(engine);
177
+ }
178
+
179
+ async function init(engineHarness) {
180
+
181
+ const engine = await engineHarness.initialize();
182
+
183
+ const config = makeConfig(engine);
184
+
185
+ await config.apply(engine);
186
+
187
+ enableEditor(engine);
188
+
189
+ main(engine);
190
+ }
191
+
192
+ init(eh);
package/package.json CHANGED
@@ -1,11 +1,13 @@
1
1
  {
2
2
  "name": "@woosh/meep-engine",
3
3
  "type": "module",
4
+ "license": "UNLICENSED",
4
5
  "productName": "Meep",
5
6
  "description": "production-ready JavaScript game engine based on Entity Component System Architecture",
6
7
  "author": "Alexander Goldring",
7
- "version": "2.33.35",
8
+ "version": "2.33.39",
8
9
  "dependencies": {
10
+ "gl-matrix": "3.4.3",
9
11
  "fast-levenshtein": "2.0.6",
10
12
  "opentype.js": "1.3.3",
11
13
  "simplex-noise": "2.4.0",
@@ -1,8 +1,9 @@
1
- import { hsv2rgb, rgb2hsv } from "../../core/color/ColorUtils.js";
2
1
  import GuiControl from "../controller/controls/GuiControl.js";
3
2
  import { GaugeView } from "../../editor/view/ecs/components/color/GaugeView.js";
4
3
  import Vector1 from "../../core/geom/Vector1.js";
5
4
  import { drawCheckers } from "../../editor/view/ecs/components/particles/ColorParameterLUTController.js";
5
+ import { hsv2rgb } from "../../core/color/hsv2rgb.js";
6
+ import { rgb2hsv } from "../../core/color/rgb2hsv.js";
6
7
 
7
8
 
8
9
  export class ColorPickerView extends GuiControl {