@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.
- package/editor/particles/rebuildParticleEmitter.js +8 -26
- package/editor/process/symbolic/CameraSymbolicDisplay.js +146 -146
- package/editor/tools/SelectionTool.js +1 -2
- package/editor/tools/TransformToolV2.js +2 -3
- package/editor/tools/v2/BlenderCameraOrientationGizmo.js +501 -501
- package/editor/tools/v2/TransformControls.js +1 -1
- package/package.json +95 -96
- package/src/core/geom/3d/mat4/m4_look_at.d.ts +25 -0
- package/src/core/geom/3d/mat4/m4_look_at.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_look_at.js +96 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_x.d.ts +18 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_x.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_x.js +47 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_y.d.ts +18 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_y.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_y.js +47 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_z.d.ts +18 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_z.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_z.js +47 -0
- package/src/core/geom/3d/mat4/m4_perspective.d.ts +25 -0
- package/src/core/geom/3d/mat4/m4_perspective.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_perspective.js +66 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +2045 -2052
- package/src/engine/ecs/gui/hud/testHudEdgeStick.js +2 -2
- package/src/engine/ecs/terrain/ecs/TerrainSystem.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/TerrainSystem.js +14 -27
- package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.d.ts.map +1 -1
- package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.js +129 -126
- package/src/engine/graphics/ecs/camera/Camera.d.ts +36 -48
- package/src/engine/graphics/ecs/camera/Camera.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/Camera.js +165 -303
- package/src/engine/graphics/ecs/camera/camera_active_frustum.d.ts +14 -0
- package/src/engine/graphics/ecs/camera/camera_active_frustum.d.ts.map +1 -0
- package/src/engine/graphics/ecs/camera/camera_active_frustum.js +25 -0
- package/src/engine/graphics/ecs/camera/camera_find_active.d.ts +16 -0
- package/src/engine/graphics/ecs/camera/camera_find_active.d.ts.map +1 -0
- package/src/engine/graphics/ecs/camera/camera_find_active.js +28 -0
- package/src/engine/graphics/ecs/camera/camera_traverse_active.d.ts +12 -0
- package/src/engine/graphics/ecs/camera/camera_traverse_active.d.ts.map +1 -0
- package/src/engine/graphics/ecs/camera/camera_traverse_active.js +18 -0
- package/src/engine/graphics/ecs/camera/pp/PerfectPanner.js +170 -170
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts +5 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +296 -281
- package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts +1 -1
- package/src/engine/graphics/ecs/render_layers_compute_depth_range.js +1 -1
- package/src/engine/graphics/geometry/AttributeData.d.ts +52 -0
- package/src/engine/graphics/geometry/AttributeData.d.ts.map +1 -0
- package/src/engine/graphics/geometry/AttributeData.js +84 -0
- package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts +1 -14
- package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/ParticularEngine.js +229 -253
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +25 -12
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +1149 -1194
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts +4 -8
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +472 -540
- package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts +19 -90
- package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +135 -514
- package/src/engine/graphics3/CameraSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/CameraSystem3.js +10 -1
- package/src/engine/graphics3/GraphicsEngine3.d.ts +3 -3
- package/src/engine/graphics3/GraphicsEngine3.js +3 -3
- package/src/engine/graphics3/ParticleEmitterSystem3.d.ts +11 -0
- package/src/engine/graphics3/ParticleEmitterSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/ParticleEmitterSystem3.js +289 -265
- package/src/engine/graphics3/ShadeCameraAdapter.d.ts +3 -3
- package/src/engine/graphics3/ShadeCameraAdapter.js +3 -3
- package/src/engine/graphics3/camera_sync_from_transform.d.ts +2 -2
- package/src/engine/graphics3/camera_sync_from_transform.js +2 -2
- package/src/engine/graphics3/shade_camera_projection_ray.js +2 -2
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/renderer/camera/Camera.d.ts +3 -5
- package/src/shade/renderer/camera/Camera.d.ts.map +1 -1
- package/src/shade/renderer/camera/Camera.js +281 -280
- package/src/shade/renderer/camera/GPUCameraContext.js +233 -233
- package/src/shade/renderer/loader/usd/parse_usda.js +1 -1
- package/src/shade/renderer/loader/usd/usd_build_scene.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/usd_build_scene.js +658 -652
- package/src/shade/renderer/loader/usd/usd_compose_transform.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/usd_compose_transform.js +58 -23
- package/src/shade/renderer/particles/prototypeParticleSystem.js +450 -443
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +7 -3
- package/src/view/minimap/dom/MinimapCameraView.d.ts +2 -2
- package/src/view/minimap/dom/MinimapCameraView.js +206 -206
- package/src/engine/graphics/ecs/camera/CameraSystem.d.ts +0 -74
- package/src/engine/graphics/ecs/camera/CameraSystem.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/CameraSystem.js +0 -331
- package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts +0 -10
- package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +0 -105
- package/src/engine/graphics/ecs/camera/build_three_camera_object.d.ts +0 -7
- package/src/engine/graphics/ecs/camera/build_three_camera_object.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/build_three_camera_object.js +0 -29
- package/src/engine/graphics/ecs/camera/frustum_from_camera.d.ts +0 -8
- package/src/engine/graphics/ecs/camera/frustum_from_camera.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/frustum_from_camera.js +0 -20
- package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.d.ts +0 -9
- package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.js +0 -46
- package/src/engine/graphics/ecs/camera/unprojectPoint.d.ts +0 -9
- package/src/engine/graphics/ecs/camera/unprojectPoint.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/unprojectPoint.js +0 -14
- package/src/engine/graphics/ecs/camera/update_camera_transform.d.ts +0 -6
- package/src/engine/graphics/ecs/camera/update_camera_transform.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/update_camera_transform.js +0 -17
- package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts +0 -67
- package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts.map +0 -1
- package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.js +0 -291
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.d.ts +0 -11
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.js +0 -497
- package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.d.ts +0 -40
- package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.js +0 -47
- package/src/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.d.ts +0 -7
- package/src/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.d.ts.map +0 -1
- 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 {
|
|
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 =
|
|
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":";
|
|
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 {
|
|
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
|
-
|
|
190
|
-
|
|
191
|
-
|
|
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
|
-
|
|
207
|
-
const tile_index = tiles[i];
|
|
192
|
+
const frustum = camera_active_frustum(ecd);
|
|
208
193
|
|
|
209
|
-
|
|
210
|
-
|
|
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
|
-
|
|
213
|
-
}
|
|
200
|
+
const tiles = [];
|
|
214
201
|
|
|
215
|
-
|
|
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,
|
|
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 {
|
|
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
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
*
|
|
39
|
+
* Far clipping plane
|
|
42
40
|
* @type {number}
|
|
43
|
-
* @private
|
|
44
41
|
*/
|
|
45
|
-
|
|
42
|
+
clip_far: number;
|
|
46
43
|
/**
|
|
47
|
-
*
|
|
44
|
+
* Near clipping plane
|
|
48
45
|
* @type {number}
|
|
49
|
-
* @private
|
|
50
46
|
*/
|
|
51
|
-
|
|
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":"
|
|
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"}
|