@woosh/meep-engine 2.39.43 → 2.40.1

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 (38) hide show
  1. package/core/binary/BinaryBuffer.js +14 -1
  2. package/core/bvh2/aabb3/AABB3.js +0 -133
  3. package/core/bvh2/aabb3/aabb3_intersects_line_segment.js +1 -1
  4. package/core/geom/3d/matrix/MATRIX_4_IDENTITY.js +9 -0
  5. package/core/geom/Quaternion.js +8 -8
  6. package/core/geom/Quaternion.spec.js +13 -0
  7. package/core/geom/Vector1.d.ts +2 -0
  8. package/core/parser/simple/DataType.js +2 -2
  9. package/editor/tools/v2/BlenderCameraOrientationGizmo.js +28 -4
  10. package/editor/view/EditorView.js +25 -22
  11. package/editor/view/ecs/components/common/NumberController.js +56 -9
  12. package/engine/EngineHarness.js +2 -4
  13. package/engine/asset/loaders/image/png/PNG.js +6 -0
  14. package/engine/asset/loaders/image/png/PNGReader.js +82 -2
  15. package/engine/asset/loaders/image/png/crc.js +66 -0
  16. package/engine/ecs/speaker/VoiceSystem.js +1 -1
  17. package/engine/ecs/terrain/ecs/Terrain.js +58 -36
  18. package/engine/ecs/terrain/ecs/TerrainSystem.js +22 -4
  19. package/engine/ecs/terrain/tiles/TerrainTile.js +109 -131
  20. package/engine/ecs/terrain/tiles/TerrainTileManager.js +100 -121
  21. package/engine/graphics/ecs/camera/Camera.js +1 -1
  22. package/engine/graphics/ecs/light/binding/fp/FPLightBinding.js +4 -4
  23. package/engine/graphics/geometry/bvh/buffered/BVHGeometryRaycaster.js +0 -78
  24. package/engine/graphics/geometry/optimization/merge/merge_geometry_hierarchy.js +0 -9
  25. package/engine/graphics/render/forward_plus/LightManager.js +25 -0
  26. package/engine/graphics/render/forward_plus/data/TextureBackedMemoryRegion.js +6 -2
  27. package/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.js +6 -11
  28. package/engine/graphics/render/forward_plus/prototype/prototypeLightManager.js +268 -2
  29. package/engine/graphics/texture/atlas/AtlasPatch.js +12 -6
  30. package/engine/intelligence/behavior/util/LogMessageBehavior.js +29 -0
  31. package/engine/logging/ConsoleLoggerBackend.js +15 -0
  32. package/engine/logging/Logger.js +24 -1
  33. package/engine/logging/LoggerBackend.js +1 -0
  34. package/engine/physics/fluid/FluidField.js +9 -0
  35. package/engine/physics/fluid/effector/AbstractFluidEffector.js +6 -0
  36. package/engine/physics/fluid/effector/GlobalFluidEffector.js +12 -0
  37. package/engine/physics/fluid/effector/WakeFluidEffector.js +8 -0
  38. package/package.json +1 -1
@@ -12,11 +12,34 @@ export class Logger {
12
12
  }
13
13
 
14
14
  /**
15
- *
15
+ * Add a logging backend, this is a structure that handles incoming log messages.
16
+ * There can be multiple backends registered at any given time or even none at all
16
17
  * @param {LoggerBackend} backend
18
+ * @returns {boolean} will return false if backend instance is already attached
17
19
  */
18
20
  addBackend(backend) {
21
+ if (this.backends.includes(backend)) {
22
+ // already registered
23
+ return false;
24
+ }
25
+
19
26
  this.backends.push(backend);
27
+ return true;
28
+ }
29
+
30
+ /**
31
+ * Remove backend instance, counterpart to {@link #addBackend} see {@link #addBackend} for more information
32
+ * @param {LoggerBackend} backend
33
+ * @return {boolean}
34
+ */
35
+ removeBackend(backend) {
36
+ const i = this.backends.indexOf(backend);
37
+ if (i === -1) {
38
+ return false;
39
+ } else {
40
+ this.backends.splice(i, 1);
41
+ return true;
42
+ }
20
43
  }
21
44
 
22
45
  /**
@@ -30,6 +30,7 @@ export class LoggerBackend {
30
30
  *
31
31
  * @param {LogLevel} level
32
32
  * @param {string} message
33
+ * @returns {void}
33
34
  */
34
35
  log(level, message) {
35
36
  throw new Error('Abstract class, method needs to be implemented in the subclass');
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Represents a space where fluid simulation happens
3
+ *
4
+ * @see 2019 GDC talk by Runard Rupert "Wind Simulation in God of War" https://www.youtube.com/watch?v=dDgyBKkSf7A
5
+ * @see Inspired by GDC talk "Interactive Wind and Vegetation in 'God of War'" - https://www.youtube.com/watch?v=MKX45_riWQA
6
+ */
7
+ export class FluidField{
8
+
9
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Base interface for injecting external forces into the simulation
3
+ */
4
+ export class AbstractFluidEffector {
5
+
6
+ }
@@ -0,0 +1,12 @@
1
+ import { AbstractFluidEffector } from "./AbstractFluidEffector.js";
2
+
3
+ /**
4
+ * Affects fluid everywhere inside the field uniformly
5
+ */
6
+ export class GlobalFluidEffector extends AbstractFluidEffector{
7
+ /**
8
+ * 3d force vector
9
+ * @type {number[]}
10
+ */
11
+ force = [0, 0, 0];
12
+ }
@@ -0,0 +1,8 @@
1
+ import { AbstractFluidEffector } from "./AbstractFluidEffector.js";
2
+
3
+ /**
4
+ * Creates force in its "wake" (behind it) as it travels
5
+ */
6
+ export class WakeFluidEffector extends AbstractFluidEffector {
7
+
8
+ }
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "productName": "Meep",
6
6
  "description": "production-ready JavaScript game engine based on Entity Component System Architecture",
7
7
  "author": "Alexander Goldring",
8
- "version": "2.39.43",
8
+ "version": "2.40.1",
9
9
  "dependencies": {
10
10
  "gl-matrix": "3.4.3",
11
11
  "fast-levenshtein": "2.0.6",