@woosh/meep-engine 3.0.0 → 3.0.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 (122) hide show
  1. package/editor/particles/rebuildParticleEmitter.js +8 -26
  2. package/editor/process/symbolic/CameraSymbolicDisplay.js +146 -146
  3. package/editor/tools/SelectionTool.js +1 -2
  4. package/editor/tools/TransformToolV2.js +2 -3
  5. package/editor/tools/v2/BlenderCameraOrientationGizmo.js +501 -501
  6. package/editor/tools/v2/TransformControls.js +1 -1
  7. package/package.json +95 -96
  8. package/src/core/geom/3d/mat4/m4_look_at.d.ts +25 -0
  9. package/src/core/geom/3d/mat4/m4_look_at.d.ts.map +1 -0
  10. package/src/core/geom/3d/mat4/m4_look_at.js +96 -0
  11. package/src/core/geom/3d/mat4/m4_make_rotation_x.d.ts +18 -0
  12. package/src/core/geom/3d/mat4/m4_make_rotation_x.d.ts.map +1 -0
  13. package/src/core/geom/3d/mat4/m4_make_rotation_x.js +47 -0
  14. package/src/core/geom/3d/mat4/m4_make_rotation_y.d.ts +18 -0
  15. package/src/core/geom/3d/mat4/m4_make_rotation_y.d.ts.map +1 -0
  16. package/src/core/geom/3d/mat4/m4_make_rotation_y.js +47 -0
  17. package/src/core/geom/3d/mat4/m4_make_rotation_z.d.ts +18 -0
  18. package/src/core/geom/3d/mat4/m4_make_rotation_z.d.ts.map +1 -0
  19. package/src/core/geom/3d/mat4/m4_make_rotation_z.js +47 -0
  20. package/src/core/geom/3d/mat4/m4_perspective.d.ts +25 -0
  21. package/src/core/geom/3d/mat4/m4_perspective.d.ts.map +1 -0
  22. package/src/core/geom/3d/mat4/m4_perspective.js +66 -0
  23. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  24. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +2045 -2052
  25. package/src/engine/ecs/gui/hud/testHudEdgeStick.js +2 -2
  26. package/src/engine/ecs/terrain/ecs/TerrainSystem.d.ts.map +1 -1
  27. package/src/engine/ecs/terrain/ecs/TerrainSystem.js +14 -27
  28. package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.d.ts.map +1 -1
  29. package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.js +129 -126
  30. package/src/engine/graphics/ecs/camera/Camera.d.ts +36 -48
  31. package/src/engine/graphics/ecs/camera/Camera.d.ts.map +1 -1
  32. package/src/engine/graphics/ecs/camera/Camera.js +165 -303
  33. package/src/engine/graphics/ecs/camera/camera_active_frustum.d.ts +14 -0
  34. package/src/engine/graphics/ecs/camera/camera_active_frustum.d.ts.map +1 -0
  35. package/src/engine/graphics/ecs/camera/camera_active_frustum.js +25 -0
  36. package/src/engine/graphics/ecs/camera/camera_find_active.d.ts +16 -0
  37. package/src/engine/graphics/ecs/camera/camera_find_active.d.ts.map +1 -0
  38. package/src/engine/graphics/ecs/camera/camera_find_active.js +28 -0
  39. package/src/engine/graphics/ecs/camera/camera_traverse_active.d.ts +12 -0
  40. package/src/engine/graphics/ecs/camera/camera_traverse_active.d.ts.map +1 -0
  41. package/src/engine/graphics/ecs/camera/camera_traverse_active.js +18 -0
  42. package/src/engine/graphics/ecs/camera/pp/PerfectPanner.js +170 -170
  43. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts +5 -1
  44. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
  45. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +296 -281
  46. package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts +1 -1
  47. package/src/engine/graphics/ecs/render_layers_compute_depth_range.js +1 -1
  48. package/src/engine/graphics/geometry/AttributeData.d.ts +52 -0
  49. package/src/engine/graphics/geometry/AttributeData.d.ts.map +1 -0
  50. package/src/engine/graphics/geometry/AttributeData.js +84 -0
  51. package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts +1 -14
  52. package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts.map +1 -1
  53. package/src/engine/graphics/particles/particular/engine/ParticularEngine.js +229 -253
  54. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +25 -12
  55. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
  56. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +1149 -1194
  57. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts +4 -8
  58. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts.map +1 -1
  59. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +472 -540
  60. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts +19 -90
  61. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts.map +1 -1
  62. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +135 -514
  63. package/src/engine/graphics3/CameraSystem3.d.ts.map +1 -1
  64. package/src/engine/graphics3/CameraSystem3.js +10 -1
  65. package/src/engine/graphics3/GraphicsEngine3.d.ts +3 -3
  66. package/src/engine/graphics3/GraphicsEngine3.js +3 -3
  67. package/src/engine/graphics3/ParticleEmitterSystem3.d.ts +11 -0
  68. package/src/engine/graphics3/ParticleEmitterSystem3.d.ts.map +1 -1
  69. package/src/engine/graphics3/ParticleEmitterSystem3.js +289 -265
  70. package/src/engine/graphics3/ShadeCameraAdapter.d.ts +3 -3
  71. package/src/engine/graphics3/ShadeCameraAdapter.js +3 -3
  72. package/src/engine/graphics3/camera_sync_from_transform.d.ts +2 -2
  73. package/src/engine/graphics3/camera_sync_from_transform.js +2 -2
  74. package/src/engine/graphics3/shade_camera_projection_ray.js +2 -2
  75. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  76. package/src/shade/renderer/camera/Camera.d.ts +3 -5
  77. package/src/shade/renderer/camera/Camera.d.ts.map +1 -1
  78. package/src/shade/renderer/camera/Camera.js +281 -280
  79. package/src/shade/renderer/camera/GPUCameraContext.js +233 -233
  80. package/src/shade/renderer/loader/usd/parse_usda.js +1 -1
  81. package/src/shade/renderer/loader/usd/usd_build_scene.d.ts.map +1 -1
  82. package/src/shade/renderer/loader/usd/usd_build_scene.js +658 -652
  83. package/src/shade/renderer/loader/usd/usd_compose_transform.d.ts.map +1 -1
  84. package/src/shade/renderer/loader/usd/usd_compose_transform.js +58 -23
  85. package/src/shade/renderer/particles/prototypeParticleSystem.js +450 -443
  86. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
  87. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +7 -3
  88. package/src/view/minimap/dom/MinimapCameraView.d.ts +2 -2
  89. package/src/view/minimap/dom/MinimapCameraView.js +206 -206
  90. package/src/engine/graphics/ecs/camera/CameraSystem.d.ts +0 -74
  91. package/src/engine/graphics/ecs/camera/CameraSystem.d.ts.map +0 -1
  92. package/src/engine/graphics/ecs/camera/CameraSystem.js +0 -331
  93. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts +0 -10
  94. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts.map +0 -1
  95. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +0 -105
  96. package/src/engine/graphics/ecs/camera/build_three_camera_object.d.ts +0 -7
  97. package/src/engine/graphics/ecs/camera/build_three_camera_object.d.ts.map +0 -1
  98. package/src/engine/graphics/ecs/camera/build_three_camera_object.js +0 -29
  99. package/src/engine/graphics/ecs/camera/frustum_from_camera.d.ts +0 -8
  100. package/src/engine/graphics/ecs/camera/frustum_from_camera.d.ts.map +0 -1
  101. package/src/engine/graphics/ecs/camera/frustum_from_camera.js +0 -20
  102. package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.d.ts +0 -9
  103. package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.d.ts.map +0 -1
  104. package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.js +0 -46
  105. package/src/engine/graphics/ecs/camera/unprojectPoint.d.ts +0 -9
  106. package/src/engine/graphics/ecs/camera/unprojectPoint.d.ts.map +0 -1
  107. package/src/engine/graphics/ecs/camera/unprojectPoint.js +0 -14
  108. package/src/engine/graphics/ecs/camera/update_camera_transform.d.ts +0 -6
  109. package/src/engine/graphics/ecs/camera/update_camera_transform.d.ts.map +0 -1
  110. package/src/engine/graphics/ecs/camera/update_camera_transform.js +0 -17
  111. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts +0 -67
  112. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts.map +0 -1
  113. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.js +0 -291
  114. package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.d.ts +0 -11
  115. package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.d.ts.map +0 -1
  116. package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.js +0 -497
  117. package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.d.ts +0 -40
  118. package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.d.ts.map +0 -1
  119. package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.js +0 -47
  120. package/src/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.d.ts +0 -7
  121. package/src/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.d.ts.map +0 -1
  122. package/src/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.js +0 -40
@@ -10,7 +10,7 @@ import HeadsUpDisplay from "./HeadsUpDisplay.js";
10
10
  import HeadsUpDisplaySystem from "./HeadsUpDisplaySystem.js";
11
11
  import { EngineConfiguration } from "../../../EngineConfiguration.js";
12
12
  import { AttachmentSystem } from "../../attachment/AttachmentSystem.js";
13
- import { CameraSystem } from "../../../graphics/ecs/camera/CameraSystem.js";
13
+ import { camera_find_active } from "../../../graphics/ecs/camera/camera_find_active.js";
14
14
  import TopDownCameraController from "../../../graphics/ecs/camera/topdown/TopDownCameraController.js";
15
15
 
16
16
  const eh = new EngineHarness();
@@ -105,7 +105,7 @@ async function main(engine) {
105
105
  tracked.push({ entity, transform, vp, view, index: i });
106
106
  }
107
107
 
108
- const active_camera = CameraSystem.getFirstActiveCamera(ecd);
108
+ const active_camera = camera_find_active(ecd);
109
109
  const controller = ecd.getComponent(active_camera.entity, TopDownCameraController);
110
110
 
111
111
  window.__hud_edge_stick_test = {
@@ -1 +1 @@
1
- {"version":3,"file":"TerrainSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/terrain/ecs/TerrainSystem.js"],"names":[],"mappings":";AA+BA;IAiJI;;;;;OAKG;IACH,kEAHW,OAAO,oEACiD,IAAI,QAuCtE;IAzKD;;;;;OAKG;IACH,kEAkBC;IA1CD,iCAAyB;IAEzB,mBAAe;IACf,mBAAe;IAEf;;;;OAIG;IACH,qBAAiB;IAEjB;;;OAGG;IACH,KAFU,GAAG,CAEG;IAuBZ,yBAAwB;IAExB,2BAAgC;IAGpC,kDAMC;IAED,2CAQC;IAED;;;;OAIG;IACH,gBAHW,OAAO,qBAqBjB;IAED;;;;OAIG;IACH,kBAHW,OAAO,qBAKjB;IAED,6BAaC;IAED;;;;;OAKG;IACH,gCAwBC;CA+CJ;uBAhNsB,iBAAiB;oBAEpB,cAAc;oBAbd,mCAAmC"}
1
+ {"version":3,"file":"TerrainSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/terrain/ecs/TerrainSystem.js"],"names":[],"mappings":";AA8BA;IAiJI;;;;;OAKG;IACH,kEAHW,OAAO,oEACiD,IAAI,QA2BtE;IA7JD;;;;;OAKG;IACH,kEAkBC;IA1CD,iCAAyB;IAEzB,mBAAe;IACf,mBAAe;IAEf;;;;OAIG;IACH,qBAAiB;IAEjB;;;OAGG;IACH,KAFU,GAAG,CAEG;IAuBZ,yBAAwB;IAExB,2BAAgC;IAGpC,kDAMC;IAED,2CAQC;IAED;;;;OAIG;IACH,gBAHW,OAAO,qBAqBjB;IAED;;;;OAIG;IACH,kBAHW,OAAO,qBAKjB;IAED,6BAaC;IAED;;;;;OAKG;IACH,gCAwBC;CAmCJ;uBApMsB,iBAAiB;oBAEpB,cAAc;oBAZd,mCAAmC"}
@@ -5,11 +5,10 @@ import {
5
5
  } from "../../../../core/bvh2/bvh3/query/bvh_query_user_data_intersects_frustum.js";
6
6
 
7
7
  import { noop } from "../../../../core/function/noop.js";
8
- import { frustum3_planes_to_flat_from_three } from "../../../../core/geom/3d/frustum/frustum3_planes_to_flat_from_three.js";
9
8
  import { M4_IDENTITY } from "../../../../core/geom/3d/mat4/M4_IDENTITY.js";
10
9
  import { ImageRGBADataLoader } from "../../../asset/loaders/image/ImageRGBADataLoader.js";
11
10
  import { TextureAssetLoader } from "../../../asset/loaders/texture/TextureAssetLoader.js";
12
- import { CameraSystem } from '../../../graphics/ecs/camera/CameraSystem.js';
11
+ import { camera_active_frustum } from '../../../graphics/ecs/camera/camera_active_frustum.js';
13
12
  import { System } from '../../System.js';
14
13
  import { Transform } from "../../transform/Transform.js";
15
14
  import Terrain from './Terrain.js';
@@ -186,36 +185,24 @@ class TerrainSystem extends System {
186
185
 
187
186
  const tileManager = terrain.__tiles;
188
187
 
189
- const tiles = [];
190
- const set = new Set();
191
- let tile_count = 0;
192
-
193
- const frustum = new Float32Array(24);
194
-
195
- if (tileManager !== undefined) {
196
- CameraSystem.getActiveFrustums(ecd, function (frustums) {
197
- let found_tiles = 0;
198
-
199
- for (let i = 0; i < frustums.length; i++) {
200
-
201
- frustum3_planes_to_flat_from_three(frustums[i].planes, frustum);
202
-
203
- found_tiles += bvh_query_user_data_intersects_frustum(tiles, tile_count, tileManager.bvh, frustum);
204
- }
188
+ if (tileManager === undefined) {
189
+ return;
190
+ }
205
191
 
206
- for (let i = 0; i < found_tiles; i++) {
207
- const tile_index = tiles[i];
192
+ const frustum = camera_active_frustum(ecd);
208
193
 
209
- if (!set.has(tile_index)) {
210
- const tile = tileManager.tiles[tile_index];
194
+ if (frustum === null) {
195
+ // nothing has drawn a frame, so there is no answer to what is on screen; visiting every
196
+ // tile would be one, and it is the wrong one
197
+ return;
198
+ }
211
199
 
212
- callback(tile, tileManager);
213
- }
200
+ const tiles = [];
214
201
 
215
- set.add(tile_index);
216
- }
202
+ const found_tiles = bvh_query_user_data_intersects_frustum(tiles, 0, tileManager.bvh, frustum);
217
203
 
218
- });
204
+ for (let i = 0; i < found_tiles; i++) {
205
+ callback(tileManager.tiles[tiles[i]], tileManager);
219
206
  }
220
207
  }
221
208
  }
@@ -1 +1 @@
1
- {"version":3,"file":"loadVisibleTerrainTiles.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/terrain/util/loadVisibleTerrainTiles.js"],"names":[],"mappings":"AAUA;;;;;;GAMG;AACH,8EAFa,IAAI,CA8GhB;iBAxHgB,uCAAuC"}
1
+ {"version":3,"file":"loadVisibleTerrainTiles.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/terrain/util/loadVisibleTerrainTiles.js"],"names":[],"mappings":"AAUA;;;;;;GAMG;AACH,8EAFa,IAAI,CAiHhB;iBA3HgB,uCAAuC"}
@@ -1,126 +1,129 @@
1
- import TopDownCameraControllerSystem from "../../../graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js";
2
- import { Camera } from "../../../graphics/ecs/camera/Camera.js";
3
- import { obtainTerrain } from "./obtainTerrain.js";
4
- import { assert } from "../../../../core/assert.js";
5
- import TerrainSystem from "../ecs/TerrainSystem.js";
6
- import Task from "../../../../core/process/task/Task.js";
7
- import { TaskSignal } from "../../../../core/process/task/TaskSignal.js";
8
- import { max2 } from "../../../../core/math/max2.js";
9
- import { clamp01 } from "../../../../core/math/clamp01.js";
10
-
11
- /**
12
- *
13
- * @param {EntityManager} em
14
- * @param {EntityComponentDataset} ecd
15
- * @param {number} [timeout] in seconds
16
- * @returns {Task}
17
- */
18
- export function loadVisibleTerrainTiles({
19
- em,
20
- ecd,
21
- timeout = 10
22
- }) {
23
-
24
- let totalTiles = 0;
25
- let loadedTiles = 0;
26
- let failedTiles = 0;
27
-
28
- let attempt = 0;
29
-
30
- let failureFlag = false;
31
-
32
- const timeout_milliseconds = timeout * 1000;
33
-
34
- let start_time = 0;
35
-
36
- function init() {
37
-
38
- start_time = Date.now();
39
-
40
- const attemptId = attempt;
41
-
42
- //force update by camera controller, to ensure correct focus is set
43
- em.getSystem(TopDownCameraControllerSystem).update(0);
44
-
45
- ecd.traverseComponents(Camera, function (c) {
46
- c.updateMatrices();
47
- });
48
-
49
- const tiles = [];
50
-
51
- const terrain = obtainTerrain(ecd);
52
-
53
- assert.notEqual(terrain, null, 'terrain not found');
54
-
55
- TerrainSystem.traverseVisibleTiles(ecd, terrain, function (tile) {
56
- tiles.push(tile);
57
- });
58
-
59
- totalTiles = tiles.length;
60
- const tileManager = terrain.__tiles;
61
-
62
- function handleObtainedTile(t) {
63
- if (attemptId !== attempt) {
64
- return;
65
- }
66
-
67
- loadedTiles++;
68
- }
69
-
70
- function handleFailedTile(t) {
71
- if (attemptId !== attempt) {
72
- return;
73
- }
74
-
75
- attempt++;
76
-
77
- failedTiles++;
78
-
79
- if (attempt < 10) {
80
- init();
81
- } else {
82
- failureFlag = true;
83
- }
84
- }
85
-
86
- if (totalTiles !== 0) {
87
- tiles.forEach(function (tile) {
88
- tileManager.obtain(tile.gridPosition.x, tile.gridPosition.y).then(handleObtainedTile, handleFailedTile);
89
- });
90
- }
91
- }
92
-
93
- const task = new Task({
94
- name: "Building visible terrain tiles",
95
-
96
- initializer: init,
97
-
98
- cycleFunction() {
99
- if (Date.now() > start_time + timeout_milliseconds) {
100
- // timed out
101
- return TaskSignal.EndFailure;
102
- }
103
-
104
- if (failureFlag) {
105
- return TaskSignal.EndFailure;
106
- }
107
-
108
- if (loadedTiles >= totalTiles) {
109
- return TaskSignal.EndSuccess;
110
- } else {
111
- return TaskSignal.Yield;
112
- }
113
- },
114
-
115
- computeProgress() {
116
-
117
- const loaded_fraction = totalTiles === 0 ? 0 : loadedTiles / totalTiles;
118
-
119
- const timeout_fraction = (Date.now() - start_time) / timeout_milliseconds;
120
-
121
- return clamp01(max2(loaded_fraction, timeout_fraction));
122
- }
123
- });
124
-
125
- return task;
126
- }
1
+ import TopDownCameraControllerSystem from "../../../graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js";
2
+ import { CameraSystem3 } from "../../../graphics3/CameraSystem3.js";
3
+ import { obtainTerrain } from "./obtainTerrain.js";
4
+ import { assert } from "../../../../core/assert.js";
5
+ import TerrainSystem from "../ecs/TerrainSystem.js";
6
+ import Task from "../../../../core/process/task/Task.js";
7
+ import { TaskSignal } from "../../../../core/process/task/TaskSignal.js";
8
+ import { max2 } from "../../../../core/math/max2.js";
9
+ import { clamp01 } from "../../../../core/math/clamp01.js";
10
+
11
+ /**
12
+ *
13
+ * @param {EntityManager} em
14
+ * @param {EntityComponentDataset} ecd
15
+ * @param {number} [timeout] in seconds
16
+ * @returns {Task}
17
+ */
18
+ export function loadVisibleTerrainTiles({
19
+ em,
20
+ ecd,
21
+ timeout = 10
22
+ }) {
23
+
24
+ let totalTiles = 0;
25
+ let loadedTiles = 0;
26
+ let failedTiles = 0;
27
+
28
+ let attempt = 0;
29
+
30
+ let failureFlag = false;
31
+
32
+ const timeout_milliseconds = timeout * 1000;
33
+
34
+ let start_time = 0;
35
+
36
+ function init() {
37
+
38
+ start_time = Date.now();
39
+
40
+ const attemptId = attempt;
41
+
42
+ //force update by camera controller, to ensure correct focus is set
43
+ em.getSystem(TopDownCameraControllerSystem).update(0);
44
+
45
+ /*
46
+ And push that pose through to the renderer's camera, which is where the frustum the tile
47
+ query reads is computed. Without it the tiles waited for are the ones the previous scene
48
+ could see.
49
+ */
50
+ em.getSystem(CameraSystem3).update(0);
51
+
52
+ const tiles = [];
53
+
54
+ const terrain = obtainTerrain(ecd);
55
+
56
+ assert.notEqual(terrain, null, 'terrain not found');
57
+
58
+ TerrainSystem.traverseVisibleTiles(ecd, terrain, function (tile) {
59
+ tiles.push(tile);
60
+ });
61
+
62
+ totalTiles = tiles.length;
63
+ const tileManager = terrain.__tiles;
64
+
65
+ function handleObtainedTile(t) {
66
+ if (attemptId !== attempt) {
67
+ return;
68
+ }
69
+
70
+ loadedTiles++;
71
+ }
72
+
73
+ function handleFailedTile(t) {
74
+ if (attemptId !== attempt) {
75
+ return;
76
+ }
77
+
78
+ attempt++;
79
+
80
+ failedTiles++;
81
+
82
+ if (attempt < 10) {
83
+ init();
84
+ } else {
85
+ failureFlag = true;
86
+ }
87
+ }
88
+
89
+ if (totalTiles !== 0) {
90
+ tiles.forEach(function (tile) {
91
+ tileManager.obtain(tile.gridPosition.x, tile.gridPosition.y).then(handleObtainedTile, handleFailedTile);
92
+ });
93
+ }
94
+ }
95
+
96
+ const task = new Task({
97
+ name: "Building visible terrain tiles",
98
+
99
+ initializer: init,
100
+
101
+ cycleFunction() {
102
+ if (Date.now() > start_time + timeout_milliseconds) {
103
+ // timed out
104
+ return TaskSignal.EndFailure;
105
+ }
106
+
107
+ if (failureFlag) {
108
+ return TaskSignal.EndFailure;
109
+ }
110
+
111
+ if (loadedTiles >= totalTiles) {
112
+ return TaskSignal.EndSuccess;
113
+ } else {
114
+ return TaskSignal.Yield;
115
+ }
116
+ },
117
+
118
+ computeProgress() {
119
+
120
+ const loaded_fraction = totalTiles === 0 ? 0 : loadedTiles / totalTiles;
121
+
122
+ const timeout_fraction = (Date.now() - start_time) / timeout_milliseconds;
123
+
124
+ return clamp01(max2(loaded_fraction, timeout_fraction));
125
+ }
126
+ });
127
+
128
+ return task;
129
+ }
@@ -3,25 +3,23 @@
3
3
  */
4
4
  export class Camera {
5
5
  /**
6
+ * Whether clipping planes should be automatically calculated or not.
7
+ *
8
+ * **Nothing reads this.** The pass that tightened the planes measured the depth range of the
9
+ * renderer's own layers, which no renderer has offered since the three path was removed; the
10
+ * field stays because it is on the wire and a level carries it.
6
11
  *
7
- * @param {Camera|THREE.PerspectiveCamera|THREE.OrthographicCamera} camera
8
- * @param {number} x
9
- * @param {number} y
10
- * @param {Vector3} out_source
11
- * @param {Vector3} out_direction
12
- */
13
- static projectRay(camera: Camera | THREE.PerspectiveCamera | THREE.OrthographicCamera, x: number, y: number, out_source: Vector3, out_direction: Vector3): void;
14
- /**
15
- * Whether clipping planes should be automatically calculated or not
16
12
  * @type {boolean}
17
13
  */
18
14
  autoClip: boolean;
19
15
  /**
20
16
  * Tunable parameter to prevent clipping planes from thrashing. Clipping planes must move by a certain portion of the current span before frustum gets shrunken
17
+ *
18
+ * Inert for the same reason as {@link autoClip}, and kept for the same one.
19
+ *
21
20
  * @type {number}
22
21
  */
23
22
  autoClipHysteresis: number;
24
- object: any;
25
23
  /**
26
24
  *
27
25
  * @type {Vector1}
@@ -38,29 +36,44 @@ export class Camera {
38
36
  */
39
37
  active: ObservedBoolean;
40
38
  /**
41
- * Near clipping plane
39
+ * Far clipping plane
42
40
  * @type {number}
43
- * @private
44
41
  */
45
- private __clip_far;
42
+ clip_far: number;
46
43
  /**
47
- * Far clipping plane
44
+ * Near clipping plane
48
45
  * @type {number}
49
- * @private
50
46
  */
51
- private __clip_near;
47
+ clip_near: number;
48
+ /**
49
+ * The planes of the frame this camera last drew — six
50
+ * `[normal_x, normal_y, normal_z, constant]` tuples, the layout every frustum query in the tree
51
+ * reads — or `null` when it has not drawn one.
52
+ *
53
+ * A method rather than a property because it is not one: the inspector draws a row for every
54
+ * readable property a component has, and this is an answer the renderer gave, not a field
55
+ * anybody authors. The planes are rewritten under the caller every tick.
56
+ *
57
+ * @returns {Float32Array|null}
58
+ */
59
+ getFrustumPlanes(): Float32Array | null;
60
+ /**
61
+ * Record the planes the frame was drawn with.
62
+ *
63
+ * The renderer's camera is what computes them, because the frustum a gameplay query wants is
64
+ * the one the picture was actually drawn with; deriving a second one from the field of view
65
+ * here would need the aspect ratio, which belongs to whatever surface the frame is going out at
66
+ * and not to a camera entity.
67
+ *
68
+ * @param {Float32Array|number[]} planes six `[normal_x, normal_y, normal_z, constant]` tuples
69
+ */
70
+ publishFrustum(planes: Float32Array | number[]): void;
52
71
  /**
53
72
  *
54
73
  * @param {Quaternion} output
55
74
  * @param {Quaternion} input
56
75
  */
57
76
  getReciprocalRotation(output: Quaternion, input: Quaternion): void;
58
- set clip_far(arg: number);
59
- get clip_far(): number;
60
- set clip_near(arg: number);
61
- get clip_near(): number;
62
- updateMatrices(): void;
63
- projectRay(x: any, y: any, source: any, target: any): void;
64
77
  /**
65
78
  *
66
79
  * @param {Camera} other
@@ -76,31 +89,7 @@ export class Camera {
76
89
  active: boolean;
77
90
  };
78
91
  fromJSON(json: any): void;
79
- /**
80
- *
81
- * @param {Matrix4} result
82
- */
83
- computeProjectionMatrix(result: Matrix4): boolean;
84
- /**
85
- *
86
- * @param {Vector3} out
87
- * @param {number} origin_x
88
- * @param {number} origin_y
89
- * @param {number} origin_z
90
- * @param {number} direction_x
91
- * @param {number} direction_y
92
- * @param {number} direction_z
93
- * @param {number} plane_index
94
- */
95
- rayPlaneIntersection(out: Vector3, origin_x: number, origin_y: number, origin_z: number, direction_x: number, direction_y: number, direction_z: number, plane_index: number): void;
96
- /**
97
- *
98
- * @param {number} x
99
- * @param {number} y
100
- * @param {number} z
101
- * @param {Vector3} result
102
- */
103
- projectWorldPointOntoNearPlane(x: number, y: number, z: number, result: Vector3): void;
92
+ #private;
104
93
  }
105
94
  export namespace Camera {
106
95
  export let typeName: string;
@@ -108,6 +97,5 @@ export namespace Camera {
108
97
  }
109
98
  import Vector1 from "../../../../core/geom/Vector1.js";
110
99
  import ObservedBoolean from "../../../../core/model/ObservedBoolean.js";
111
- import Vector3 from "../../../../core/geom/Vector3.js";
112
100
  import { ProjectionType } from "./ProjectionType.js";
113
101
  //# sourceMappingURL=Camera.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Camera.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/camera/Camera.js"],"names":[],"mappings":"AAaA;;GAEG;AACH;IA8II;;;;;;;OAOG;IACH,0BANW,MAAM,GAAC,MAAM,iBAAiB,GAAC,MAAM,kBAAkB,KACvD,MAAM,KACN,MAAM,cACN,OAAO,iBACP,OAAO,QA+CjB;IAlMD;;;OAGG;IACH,UAFU,OAAO,CAEA;IAEjB;;;OAGG;IACH,oBAFU,MAAM,CAEU;IAE1B,YAAc;IAEd;;;OAGG;IACH,KAFU,OAAO,CAEK;IAEtB;;;OAGG;IACH,oBAA8E;IAE9E;;;OAGG;IACH,QAFU,eAAe,CAEU;IAEnC;;;;OAIG;IACH,mBAAiB;IAEjB;;;;OAIG;IACH,oBAAkB;IAElB;;;;OAIG;IACH,mEAEC;IAMD,0BAMC;IAVD,uBAEC;IAcD,2BAMC;IAVD,wBAEC;IAUD,uBAaC;IAED,2DAEC;IAED;;;OAGG;IACH,YAFW,MAAM,QAUhB;IAED;;;OAGG;IACH,SAFa,MAAM,CAQlB;IAED;;;MAKC;IAED,0BAQC;IAyDD;;;OAGG;IACH,kDAUC;IAED;;;;;;;;;;OAUG;IACH,0BATW,OAAO,YACP,MAAM,YACN,MAAM,YACN,MAAM,eACN,MAAM,eACN,MAAM,eACN,MAAM,eACN,MAAM,QAyBhB;IAED;;;;;;OAMG;IACH,kCALW,MAAM,KACN,MAAM,KACN,MAAM,UACN,OAAO,QAqBjB;CACJ;;;;;oBAhSmB,kCAAkC;4BAE1B,2CAA2C;oBADnD,kCAAkC;+BAIvB,qBAAqB"}
1
+ {"version":3,"file":"Camera.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/camera/Camera.js"],"names":[],"mappings":"AAMA;;GAEG;AACH;IACI;;;;;;;;OAQG;IACH,UAFU,OAAO,CAEA;IAEjB;;;;;;OAMG;IACH,oBAFU,MAAM,CAEU;IAY1B;;;OAGG;IACH,KAFU,OAAO,CAEK;IAEtB;;;OAGG;IACH,oBAA8E;IAE9E;;;OAGG;IACH,QAFU,eAAe,CAEU;IAEnC;;;OAGG;IACH,UAFU,MAAM,CAED;IAEf;;;OAGG;IACH,WAFU,MAAM,CAEA;IAEhB;;;;;;;;;;OAUG;IACH,oBAFa,YAAY,GAAC,IAAI,CAQ7B;IAED;;;;;;;;;OASG;IACH,uBAFW,YAAY,GAAC,MAAM,EAAE,QAM/B;IAED;;;;OAIG;IACH,mEAEC;IAED;;;OAGG;IACH,YAFW,MAAM,QAUhB;IAED;;;OAGG;IACH,SAFa,MAAM,CAQlB;IAED;;;MAKC;IAED,0BAQC;;CAEJ;;;;;oBA7JmB,kCAAkC;4BAC1B,2CAA2C;+BAExC,qBAAqB"}