@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
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
export class ParticleEmitterSystem extends System<any> {
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
* @extends {System.<ParticleEmitter>}
|
|
5
|
-
* @constructor
|
|
6
|
-
* @param {Engine} engine
|
|
7
|
-
*/
|
|
8
|
-
constructor(engine: Engine);
|
|
9
|
-
dependencies: (typeof Transform | typeof ParticleEmitter)[];
|
|
10
|
-
components_used: ResourceAccessSpecification<typeof ParticleEmitter>[];
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
* @type {RenderLayer|null}
|
|
14
|
-
*/
|
|
15
|
-
renderLayer: RenderLayer | null;
|
|
16
|
-
__handlers: any[];
|
|
17
|
-
/**
|
|
18
|
-
* `output_resolution` observer installed in startup, kept so shutdown can detach it
|
|
19
|
-
* @type {Function|null}
|
|
20
|
-
* @private
|
|
21
|
-
*/
|
|
22
|
-
private __viewportSizeHook;
|
|
23
|
-
/**
|
|
24
|
-
* preRender hook installed in startup, kept so shutdown can detach it
|
|
25
|
-
* @type {Function|null}
|
|
26
|
-
* @private
|
|
27
|
-
*/
|
|
28
|
-
private __preRenderHook;
|
|
29
|
-
/**
|
|
30
|
-
*
|
|
31
|
-
* @type {GraphicsEngine}
|
|
32
|
-
*/
|
|
33
|
-
graphicsEngine: GraphicsEngine;
|
|
34
|
-
/**
|
|
35
|
-
*
|
|
36
|
-
* @type {AssetManager}
|
|
37
|
-
*/
|
|
38
|
-
assetManager: AssetManager;
|
|
39
|
-
/**
|
|
40
|
-
*
|
|
41
|
-
* @type {ParticularEngine}
|
|
42
|
-
*/
|
|
43
|
-
particleEngine: ParticularEngine;
|
|
44
|
-
startup(entityManager: any): Promise<void>;
|
|
45
|
-
shutdown(entityManager: any): Promise<void>;
|
|
46
|
-
/**
|
|
47
|
-
*
|
|
48
|
-
* @param {ParticleEmitter} emitter
|
|
49
|
-
* @param {Transform} transform
|
|
50
|
-
* @param entity
|
|
51
|
-
*/
|
|
52
|
-
link(emitter: ParticleEmitter, transform: Transform, entity: any): void;
|
|
53
|
-
/**
|
|
54
|
-
*
|
|
55
|
-
* @param {ParticleEmitter} emitter
|
|
56
|
-
* @param {Transform} transform
|
|
57
|
-
* @param entity
|
|
58
|
-
*/
|
|
59
|
-
unlink(emitter: ParticleEmitter, transform: Transform, entity: any): void;
|
|
60
|
-
update(timeDelta: any): void;
|
|
61
|
-
}
|
|
62
|
-
import { System } from "../../../ecs/System.js";
|
|
63
|
-
import { Transform } from "../../../ecs/transform/Transform.js";
|
|
64
|
-
import { ParticleEmitter } from "../particular/engine/emitter/ParticleEmitter.js";
|
|
65
|
-
import { ResourceAccessSpecification } from "../../../../core/model/ResourceAccessSpecification.js";
|
|
66
|
-
import { ParticularEngine } from "../particular/engine/ParticularEngine.js";
|
|
67
|
-
//# sourceMappingURL=ParticleEmitterSystem.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ParticleEmitterSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/particles/ecs/ParticleEmitterSystem.js"],"names":[],"mappings":"AAaA;IA6BI;;;;;OAKG;IACH,4BAwBC;IA1DD,4DAA4C;IAE5C,uEAEE;IAEF;;;OAGG;IACH,aAFU,cAAY,IAAI,CAEP;IAEnB,kBAAgB;IAEhB;;;;OAIG;IACH,2BAA0B;IAE1B;;;;OAIG;IACH,wBAAuB;IAcnB;;;OAGG;IACH,+BAAqC;IAErC;;;OAGG;IACH,2BAAuC;IAEvC;;;OAGG;IACH,gBAFU,gBAAgB,CAE2E;IAIzG,2CA8HC;IAED,4CAsBC;IAED;;;;;OAKG;IACH,cAJW,eAAe,aACf,SAAS,qBAoCnB;IAED;;;;;OAKG;IACH,gBAJW,eAAe,aACf,SAAS,qBAenB;IAED,6BAEC;CACJ;uBA7RsB,wBAAwB;0BACrB,qCAAqC;gCAG/B,iDAAiD;4CANrC,uDAAuD;iCAQlE,0CAA0C"}
|
|
@@ -1,291 +0,0 @@
|
|
|
1
|
-
import { assert } from "../../../../core/assert.js";
|
|
2
|
-
import { make_bvh_depth_range_computer } from "../../ecs/make_bvh_depth_range_computer.js";
|
|
3
|
-
import { ResourceAccessKind } from "../../../../core/model/ResourceAccessKind.js";
|
|
4
|
-
import { ResourceAccessSpecification } from "../../../../core/model/ResourceAccessSpecification.js";
|
|
5
|
-
import { ImageRGBADataLoader } from "../../../asset/loaders/image/ImageRGBADataLoader.js";
|
|
6
|
-
import { System } from "../../../ecs/System.js";
|
|
7
|
-
import { Transform } from "../../../ecs/transform/Transform.js";
|
|
8
|
-
import { make_bvh_visibility_builder } from "../../render/make_bvh_visibility_builder.js";
|
|
9
|
-
import { StandardFrameBuffers } from "../../StandardFrameBuffers.js";
|
|
10
|
-
import { ParticleEmitter } from "../particular/engine/emitter/ParticleEmitter.js";
|
|
11
|
-
import { ParticleEmitterFlag } from "../particular/engine/emitter/ParticleEmitterFlag.js";
|
|
12
|
-
import { ParticularEngine } from "../particular/engine/ParticularEngine.js";
|
|
13
|
-
|
|
14
|
-
export class ParticleEmitterSystem extends System {
|
|
15
|
-
dependencies = [ParticleEmitter, Transform];
|
|
16
|
-
|
|
17
|
-
components_used = [
|
|
18
|
-
ResourceAccessSpecification.from(ParticleEmitter, ResourceAccessKind.Read | ResourceAccessKind.Write)
|
|
19
|
-
];
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
23
|
-
* @type {RenderLayer|null}
|
|
24
|
-
*/
|
|
25
|
-
renderLayer = null;
|
|
26
|
-
|
|
27
|
-
__handlers = [];
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* `output_resolution` observer installed in startup, kept so shutdown can detach it
|
|
31
|
-
* @type {Function|null}
|
|
32
|
-
* @private
|
|
33
|
-
*/
|
|
34
|
-
__viewportSizeHook = null;
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* preRender hook installed in startup, kept so shutdown can detach it
|
|
38
|
-
* @type {Function|null}
|
|
39
|
-
* @private
|
|
40
|
-
*/
|
|
41
|
-
__preRenderHook = null;
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
*
|
|
45
|
-
* @extends {System.<ParticleEmitter>}
|
|
46
|
-
* @constructor
|
|
47
|
-
* @param {Engine} engine
|
|
48
|
-
*/
|
|
49
|
-
constructor(engine) {
|
|
50
|
-
super();
|
|
51
|
-
|
|
52
|
-
assert.defined(engine, 'engine');
|
|
53
|
-
assert.equal(engine.isEngine, true, 'engine.isEngine !== true');
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
*
|
|
57
|
-
* @type {GraphicsEngine}
|
|
58
|
-
*/
|
|
59
|
-
this.graphicsEngine = engine.graphics;
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
*
|
|
63
|
-
* @type {AssetManager}
|
|
64
|
-
*/
|
|
65
|
-
this.assetManager = engine.assetManager;
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
*
|
|
69
|
-
* @type {ParticularEngine}
|
|
70
|
-
*/
|
|
71
|
-
this.particleEngine = new ParticularEngine(engine.assetManager, engine.graphics.getMaterialManager());
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
async startup(entityManager) {
|
|
76
|
-
const am = this.assetManager;
|
|
77
|
-
|
|
78
|
-
if (!am.hasLoaderForType('image')) {
|
|
79
|
-
await am.registerLoader('image', new ImageRGBADataLoader());
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
const self = this;
|
|
83
|
-
|
|
84
|
-
this.entityManager = entityManager;
|
|
85
|
-
|
|
86
|
-
const graphicsEngine = this.graphicsEngine;
|
|
87
|
-
|
|
88
|
-
const renderLayer = graphicsEngine.layers.create('particles-system');
|
|
89
|
-
|
|
90
|
-
this.renderLayer = renderLayer;
|
|
91
|
-
|
|
92
|
-
renderLayer.buildVisibleSet = make_bvh_visibility_builder(
|
|
93
|
-
this.entityManager, this.particleEngine.bvh,
|
|
94
|
-
(destination, offset, entity, ecd) => {
|
|
95
|
-
const component = ecd.getComponent(entity, ParticleEmitter);
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
destination[offset] = component.mesh;
|
|
99
|
-
return 1;
|
|
100
|
-
}
|
|
101
|
-
);
|
|
102
|
-
|
|
103
|
-
renderLayer.compute_depth_range = make_bvh_depth_range_computer(this.particleEngine.bvh);
|
|
104
|
-
|
|
105
|
-
renderLayer.visibleSet.onAdded.add((points) => {
|
|
106
|
-
/**
|
|
107
|
-
*
|
|
108
|
-
* @type {ParticleEmitter}
|
|
109
|
-
*/
|
|
110
|
-
const emitter = points.__meep_ecs_component;
|
|
111
|
-
|
|
112
|
-
// wake up
|
|
113
|
-
emitter.clearFlag(ParticleEmitterFlag.Sleeping);
|
|
114
|
-
|
|
115
|
-
// console.log('Added', emitter, renderLayer.visibleSet.version);
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
renderLayer.visibleSet.onRemoved.add((points) => {
|
|
119
|
-
/**
|
|
120
|
-
*
|
|
121
|
-
* @type {ParticleEmitter}
|
|
122
|
-
*/
|
|
123
|
-
const emitter = points.__meep_ecs_component;
|
|
124
|
-
|
|
125
|
-
emitter.setFlag(ParticleEmitterFlag.Sleeping);
|
|
126
|
-
|
|
127
|
-
// console.log('Removed', emitter, renderLayer.visibleSet.version);
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
const depthBuffer = graphicsEngine.frameBuffers.getById(StandardFrameBuffers.ColorAndDepth);
|
|
132
|
-
|
|
133
|
-
const depthTexture = depthBuffer.renderTarget.depthTexture;
|
|
134
|
-
|
|
135
|
-
this.particleEngine.setDepthTexture(depthTexture);
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
// device pixels, not CSS pixels. The billboard shader spends this value on the render target's
|
|
139
|
-
// own grid twice over: `gl_FragCoord.xy / resolution` reads the depth attachment acquired just
|
|
140
|
-
// above, and `gl_PointSize` is measured in framebuffer pixels. `output_resolution` is what that
|
|
141
|
-
// attachment is sized from -- rebuilding it here from the CSS size and a freshly read
|
|
142
|
-
// `window.devicePixelRatio` matched only up to rounding, and only until the DPR moved without
|
|
143
|
-
// a resize behind it
|
|
144
|
-
function updateViewportSize(x, y) {
|
|
145
|
-
self.particleEngine.setViewportSize(x, y);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
this.__viewportSizeHook = updateViewportSize;
|
|
149
|
-
graphicsEngine.output_resolution.process(updateViewportSize);
|
|
150
|
-
|
|
151
|
-
function preRenderHook(renderer, camera, scene) {
|
|
152
|
-
//update camera
|
|
153
|
-
self.particleEngine.setCamera(camera);
|
|
154
|
-
//update shaders
|
|
155
|
-
self.particleEngine.shaderManager.update();
|
|
156
|
-
|
|
157
|
-
const visibleSet = renderLayer.visibleSet;
|
|
158
|
-
const visible_emitter_count = visibleSet.size;
|
|
159
|
-
|
|
160
|
-
if (visible_emitter_count > 0) {
|
|
161
|
-
depthBuffer.referenceCount++;
|
|
162
|
-
self.graphicsEngine.on.postRender.addOne(function () {
|
|
163
|
-
depthBuffer.referenceCount--;
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
for (let i = 0; i < visible_emitter_count; i++) {
|
|
169
|
-
/**
|
|
170
|
-
*
|
|
171
|
-
* @type {Object3D}
|
|
172
|
-
*/
|
|
173
|
-
const points = visibleSet.elements[i];
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
*
|
|
177
|
-
* @type {ParticleEmitter}
|
|
178
|
-
*/
|
|
179
|
-
const emitter = points.__meep_ecs_component;
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
//update particle geometry
|
|
183
|
-
emitter.update();
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
if (emitter.getFlag(ParticleEmitterFlag.DepthSorting)) {
|
|
187
|
-
|
|
188
|
-
/*
|
|
189
|
-
sort particles.
|
|
190
|
-
|
|
191
|
-
NOTE: It is important that update is done first before sort, as sort assumes that all particles in the
|
|
192
|
-
pool are alive. If this assumption is broken - corruption of the pool may occur
|
|
193
|
-
*/
|
|
194
|
-
emitter.sort(camera);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
this.__preRenderHook = preRenderHook;
|
|
200
|
-
graphicsEngine.on.preRender.add(preRenderHook);
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
async shutdown(entityManager) {
|
|
204
|
-
const graphicsEngine = this.graphicsEngine;
|
|
205
|
-
|
|
206
|
-
if (this.__viewportSizeHook !== null) {
|
|
207
|
-
graphicsEngine.output_resolution.onChanged.remove(this.__viewportSizeHook);
|
|
208
|
-
this.__viewportSizeHook = null;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
if (this.__preRenderHook !== null) {
|
|
212
|
-
// left attached, the hook keeps driving the particle simulation for a system that is gone, and
|
|
213
|
-
// keeps taking a reference on the ColorAndDepth frame buffer every frame the last visible set
|
|
214
|
-
// was non-empty, so FrameBufferManager goes on rendering that buffer for nobody
|
|
215
|
-
graphicsEngine.on.preRender.remove(this.__preRenderHook);
|
|
216
|
-
this.__preRenderHook = null;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
graphicsEngine.layers.remove(this.renderLayer);
|
|
220
|
-
|
|
221
|
-
// every emitter has already been unlinked by this point: both teardown paths detach the dataset
|
|
222
|
-
// (EntityManager#shutdown) or remove the system observer (EntityManager#removeSystem) before
|
|
223
|
-
// calling shutdown, so `unlink` has run for each one
|
|
224
|
-
this.particleEngine.dispose();
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
*
|
|
229
|
-
* @param {ParticleEmitter} emitter
|
|
230
|
-
* @param {Transform} transform
|
|
231
|
-
* @param entity
|
|
232
|
-
*/
|
|
233
|
-
link(emitter, transform, entity) {
|
|
234
|
-
function handlePositionChange(x, y, z) {
|
|
235
|
-
emitter.position.set(x, y, z);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
transform.position.process(handlePositionChange);
|
|
239
|
-
|
|
240
|
-
function handleRotationChange(x, y, z, w) {
|
|
241
|
-
emitter.rotation.set(x, y, z, w);
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
transform.rotation.process(handleRotationChange);
|
|
245
|
-
|
|
246
|
-
function handleScaleChange(x, y, z) {
|
|
247
|
-
emitter.scale.set(x, y, z);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
transform.scale.process(handleScaleChange);
|
|
251
|
-
|
|
252
|
-
this.__handlers[entity] = {
|
|
253
|
-
handlePositionChange,
|
|
254
|
-
handleRotationChange,
|
|
255
|
-
handleScaleChange
|
|
256
|
-
};
|
|
257
|
-
|
|
258
|
-
//initialize emitter as suspended to prevent needless updates
|
|
259
|
-
emitter.setFlag(ParticleEmitterFlag.Sleeping);
|
|
260
|
-
|
|
261
|
-
emitter.id = entity;
|
|
262
|
-
|
|
263
|
-
// emitter.bvhLeaf.entity = entity; //this line makes emitter selectable via bounding box in editor
|
|
264
|
-
|
|
265
|
-
this.particleEngine.add(emitter);
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
/**
|
|
269
|
-
*
|
|
270
|
-
* @param {ParticleEmitter} emitter
|
|
271
|
-
* @param {Transform} transform
|
|
272
|
-
* @param entity
|
|
273
|
-
*/
|
|
274
|
-
unlink(emitter, transform, entity) {
|
|
275
|
-
const handler = this.__handlers[entity];
|
|
276
|
-
|
|
277
|
-
transform.position.onChanged.remove(handler.handlePositionChange);
|
|
278
|
-
transform.rotation.onChanged.remove(handler.handleRotationChange);
|
|
279
|
-
transform.scale.onChanged.remove(handler.handleScaleChange);
|
|
280
|
-
|
|
281
|
-
delete this.__handlers[entity];
|
|
282
|
-
|
|
283
|
-
this.particleEngine.remove(emitter);
|
|
284
|
-
|
|
285
|
-
emitter.dispose();
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
update(timeDelta) {
|
|
289
|
-
this.particleEngine.advance(timeDelta);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NOTES:
|
|
3
|
-
* - To implement per-particle blend modes, we need to have access to what we're blending on to, that is - the color buffer
|
|
4
|
-
* Having the color buffer - we can do just about any kind of a blend
|
|
5
|
-
*
|
|
6
|
-
* - Support animation by adding animation sprite sheet to the main sprite atlas, record resolution of the sheet (in frames X,Y) and interpolate over tiles based on some parameter
|
|
7
|
-
* @param {boolean} [lights]
|
|
8
|
-
*/
|
|
9
|
-
export function make_particle_billboard_shader({ lights }?: boolean): ShaderMaterial;
|
|
10
|
-
import { ShaderMaterial } from "three";
|
|
11
|
-
//# sourceMappingURL=ParticleBillboardMaterial.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ParticleBillboardMaterial.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.js"],"names":[],"mappings":"AA+ZA;;;;;;;GAOG;AACH,4DAFW,OAAO,kBA2EjB;+BAreM,OAAO"}
|