@needle-tools/engine 2.67.7-pre → 2.67.8-pre.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/CHANGELOG.md +8 -0
- package/dist/needle-engine.js +235 -231
- package/dist/needle-engine.umd.cjs +21 -21
- package/lib/engine/engine_mainloop_utils.js +13 -3
- package/lib/engine/engine_mainloop_utils.js.map +1 -1
- package/package.json +1 -1
- package/plugins/vite/drop.js +1 -0
- package/plugins/vite/editor-connection.js +1 -1
- package/plugins/vite/poster.js +1 -1
- package/plugins/vite/reload.js +1 -1
- package/src/engine/engine_mainloop_utils.ts +13 -3
- package/src/engine-components/postprocessing/Volume.ts +213 -213
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as utils from "./engine_generic_utils";
|
|
2
2
|
import * as constants from "./engine_constants";
|
|
3
3
|
import { getParam } from './engine_utils';
|
|
4
|
-
import { CubeCamera, WebGLCubeRenderTarget } from 'three';
|
|
4
|
+
import { CubeCamera, Scene, WebGLCubeRenderTarget } from 'three';
|
|
5
5
|
import { isActiveSelf } from './engine_gameobject';
|
|
6
6
|
import { ContextRegistry } from "./engine_context_registry";
|
|
7
7
|
const debug = getParam("debugnewscripts");
|
|
@@ -223,7 +223,8 @@ export function updateIsActive(obj) {
|
|
|
223
223
|
console.trace("Invalid call - no current context.");
|
|
224
224
|
return;
|
|
225
225
|
}
|
|
226
|
-
const
|
|
226
|
+
const activeSelf = isActiveSelf(obj);
|
|
227
|
+
const wasSuccessful = updateIsActiveInHierarchyRecursiveRuntime(obj, activeSelf, true);
|
|
227
228
|
if (!wasSuccessful) {
|
|
228
229
|
console.error("Failed to update active state in hierarchy of \"" + obj.name + "\"", obj);
|
|
229
230
|
console.warn(" ↑ this error might be caused by circular references. Please make sure you don't have files with circular references (e.g. one GLB 1 is loading GLB 2 which is then loading GLB 1 again).");
|
|
@@ -239,7 +240,16 @@ function updateIsActiveInHierarchyRecursiveRuntime(go, activeInHierarchy, allowE
|
|
|
239
240
|
activeInHierarchy = isActive;
|
|
240
241
|
// IF we update activeInHierarchy within a disabled hierarchy we need to check the parent
|
|
241
242
|
if (activeInHierarchy && go.parent) {
|
|
242
|
-
|
|
243
|
+
const parent = go.parent;
|
|
244
|
+
activeInHierarchy = parent[constants.activeInHierarchyFieldName];
|
|
245
|
+
if (activeInHierarchy === undefined) {
|
|
246
|
+
// TODO: come up with a better solution for this. When we are in a r3f hierarchy (externally managed) and the parent flag is undefined we set it to true if the parent is NOT a scene. This activates the object by default. We should probably walk up the stack and check if we can find either the root Scene or any object that is disabled and use that to set the activeInHierarchy flag.
|
|
247
|
+
if (parent instanceof Scene) {
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
activeInHierarchy = true;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
243
253
|
}
|
|
244
254
|
}
|
|
245
255
|
const prevActive = go[constants.activeInHierarchyFieldName];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine_mainloop_utils.js","sourceRoot":"","sources":["../../../src/engine/engine_mainloop_utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine_mainloop_utils.js","sourceRoot":"","sources":["../../../src/engine/engine_mainloop_utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@needle-tools/engine",
|
|
3
|
-
"version": "2.67.
|
|
3
|
+
"version": "2.67.8-pre.1",
|
|
4
4
|
"description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development, and can be deployed anywhere. It is flexible, extensible, and collaboration and XR come naturally.",
|
|
5
5
|
"main": "dist/needle-engine.umd.cjs",
|
|
6
6
|
"module": "lib/needle-engine.js",
|
package/plugins/vite/drop.js
CHANGED
|
@@ -54,7 +54,7 @@ export const editorConnection = async (command, config, userSettings, pluginsArr
|
|
|
54
54
|
|
|
55
55
|
function createPlugin(isInstalled) {
|
|
56
56
|
return {
|
|
57
|
-
|
|
57
|
+
name: "needle-editor-connection",
|
|
58
58
|
// Setup HMR port for connecting to the editor
|
|
59
59
|
config(config) {
|
|
60
60
|
if (!isInstalled) {
|
package/plugins/vite/poster.js
CHANGED
|
@@ -14,7 +14,7 @@ export const needlePoster = (command) => {
|
|
|
14
14
|
if (command === 'build') return [];
|
|
15
15
|
|
|
16
16
|
return {
|
|
17
|
-
name: '
|
|
17
|
+
name: 'needle-poster',
|
|
18
18
|
configureServer(server) {
|
|
19
19
|
server.ws.on('needle:screenshot', async (data, client) => {
|
|
20
20
|
if(!data?.data){
|
package/plugins/vite/reload.js
CHANGED
|
@@ -36,7 +36,7 @@ export const needleReload = (command, config, userSettings) => {
|
|
|
36
36
|
if (projectConfig?.codegenDirectory?.length) ignorePatterns.push(`${projectConfig?.codegenDirectory}/**/*`);
|
|
37
37
|
|
|
38
38
|
return {
|
|
39
|
-
name: 'reload',
|
|
39
|
+
name: 'needle-reload',
|
|
40
40
|
config(config) {
|
|
41
41
|
if (!config.server) config.server = { watch: { ignored: [] } };
|
|
42
42
|
else if (!config.server.watch) config.server.watch = { ignored: [] };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as utils from "./engine_generic_utils";
|
|
2
2
|
import * as constants from "./engine_constants";
|
|
3
3
|
import { getParam } from './engine_utils';
|
|
4
|
-
import { CubeCamera, Object3D, WebGLCubeRenderTarget } from 'three';
|
|
4
|
+
import { CubeCamera, Object3D, Scene, WebGLCubeRenderTarget } from 'three';
|
|
5
5
|
import { IComponent, IContext } from './engine_types';
|
|
6
6
|
import { isActiveSelf } from './engine_gameobject';
|
|
7
7
|
import { ContextRegistry } from "./engine_context_registry";
|
|
@@ -222,7 +222,8 @@ export function updateIsActive(obj?: Object3D) {
|
|
|
222
222
|
console.trace("Invalid call - no current context.");
|
|
223
223
|
return;
|
|
224
224
|
}
|
|
225
|
-
const
|
|
225
|
+
const activeSelf = isActiveSelf(obj);
|
|
226
|
+
const wasSuccessful = updateIsActiveInHierarchyRecursiveRuntime(obj, activeSelf, true);
|
|
226
227
|
if (!wasSuccessful) {
|
|
227
228
|
console.error("Failed to update active state in hierarchy of \"" + obj.name + "\"", obj);
|
|
228
229
|
console.warn(" ↑ this error might be caused by circular references. Please make sure you don't have files with circular references (e.g. one GLB 1 is loading GLB 2 which is then loading GLB 1 again).")
|
|
@@ -240,7 +241,16 @@ function updateIsActiveInHierarchyRecursiveRuntime(go: THREE.Object3D, activeInH
|
|
|
240
241
|
activeInHierarchy = isActive;
|
|
241
242
|
// IF we update activeInHierarchy within a disabled hierarchy we need to check the parent
|
|
242
243
|
if (activeInHierarchy && go.parent) {
|
|
243
|
-
|
|
244
|
+
const parent = go.parent;
|
|
245
|
+
activeInHierarchy = parent[constants.activeInHierarchyFieldName];
|
|
246
|
+
if (activeInHierarchy === undefined) {
|
|
247
|
+
// TODO: come up with a better solution for this. When we are in a r3f hierarchy (externally managed) and the parent flag is undefined we set it to true if the parent is NOT a scene. This activates the object by default. We should probably walk up the stack and check if we can find either the root Scene or any object that is disabled and use that to set the activeInHierarchy flag.
|
|
248
|
+
if (parent instanceof Scene) {
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
activeInHierarchy = true;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
244
254
|
}
|
|
245
255
|
}
|
|
246
256
|
|
|
@@ -1,213 +1,213 @@
|
|
|
1
|
-
import { Behaviour, GameObject } from "../Component";
|
|
2
|
-
import { serializeable } from "../../engine/engine_serialization_decorator";
|
|
3
|
-
import { getParam } from "../../engine/engine_utils";
|
|
4
|
-
import { VolumeProfile } from "./VolumeProfile";
|
|
5
|
-
import { EditorModification, IEditorModification as IEditorModificationReceiver } from "../../engine/engine_editor-sync";
|
|
6
|
-
import { PostProcessingHandler } from "./PostProcessingHandler";
|
|
7
|
-
import { PostProcessingEffect } from "./PostProcessingEffect";
|
|
8
|
-
import { VolumeParameter } from "./VolumeParameter";
|
|
9
|
-
import { getEditorModificationCache } from "../../engine/engine_editor-sync";
|
|
10
|
-
import { isDevEnvironment } from "../../engine/debug";
|
|
11
|
-
import { EffectComposer } from "postprocessing";
|
|
12
|
-
|
|
13
|
-
const debug = getParam("debugpost");
|
|
14
|
-
|
|
15
|
-
export class Volume extends Behaviour implements IEditorModificationReceiver {
|
|
16
|
-
|
|
17
|
-
@serializeable(VolumeProfile)
|
|
18
|
-
sharedProfile?: VolumeProfile;
|
|
19
|
-
|
|
20
|
-
private _postprocessing?: PostProcessingHandler;
|
|
21
|
-
private _effects: PostProcessingEffect[] = [];
|
|
22
|
-
|
|
23
|
-
awake() {
|
|
24
|
-
// ensure the profile is initialized
|
|
25
|
-
this.sharedProfile?.init();
|
|
26
|
-
|
|
27
|
-
if (debug) {
|
|
28
|
-
console.log(this);
|
|
29
|
-
console.log("Press P to toggle post processing");
|
|
30
|
-
window.addEventListener("keydown", (e) => {
|
|
31
|
-
if (e.key === "p") {
|
|
32
|
-
console.log("Toggle volume: " + this.name, !this.enabled);
|
|
33
|
-
this.enabled = !this.enabled;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
onDisable() {
|
|
40
|
-
this._postprocessing?.unapply();
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
onBeforeRender(): void {
|
|
44
|
-
if (!this.context.isInXR) {
|
|
45
|
-
|
|
46
|
-
if (this.context.composer && (this.context.composer instanceof EffectComposer) === false) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// Wait for the first frame to be rendered before creating because then we know we have a camera (issue 135)
|
|
51
|
-
if (this.context.mainCamera) {
|
|
52
|
-
if (!this._postprocessing || !this._postprocessing.isActive) {
|
|
53
|
-
this.apply();
|
|
54
|
-
// TODO: remove this workaround for postprocessing rendering not working correctly when applied for the first time
|
|
55
|
-
this.apply();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
if (this.context.composer) {
|
|
60
|
-
this.context.composer.setRenderer(this.context.renderer);
|
|
61
|
-
this.context.composer.setMainScene(this.context.scene);
|
|
62
|
-
if (this.context.mainCamera)
|
|
63
|
-
this.context.composer.setMainCamera(this.context.mainCamera);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
onDestroy(): void {
|
|
69
|
-
this._postprocessing?.dispose();
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
private _lastApplyTime?: number;
|
|
73
|
-
private _rapidApplyCount = 0;
|
|
74
|
-
|
|
75
|
-
private apply() {
|
|
76
|
-
if (debug) console.log("Apply PostProcessing", this, this.context.mainCamera?.name);
|
|
77
|
-
|
|
78
|
-
if (isDevEnvironment()) {
|
|
79
|
-
if (this._lastApplyTime !== undefined && Date.now() - this._lastApplyTime < 100) {
|
|
80
|
-
this._rapidApplyCount++;
|
|
81
|
-
if (this._rapidApplyCount === 5)
|
|
82
|
-
console.warn("Detected rapid post processing modifications - this might be a bug", this);
|
|
83
|
-
}
|
|
84
|
-
this._lastApplyTime = Date.now();
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
this.unapply();
|
|
89
|
-
|
|
90
|
-
this._effects.length = 0;
|
|
91
|
-
// get from profile
|
|
92
|
-
if (this.sharedProfile?.components) {
|
|
93
|
-
this._effects.push(...this.sharedProfile.components);
|
|
94
|
-
}
|
|
95
|
-
// get additional effects
|
|
96
|
-
const additionalComponents = this.gameObject.getComponentsInChildren(PostProcessingEffect);
|
|
97
|
-
if (debug && additionalComponents?.length)
|
|
98
|
-
console.log("Additional", additionalComponents);
|
|
99
|
-
if (additionalComponents) {
|
|
100
|
-
for (const comp of additionalComponents) {
|
|
101
|
-
if (comp.active) this._effects.push(comp);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
if (this._effects.length > 0) {
|
|
106
|
-
if (!this._postprocessing)
|
|
107
|
-
this._postprocessing = new PostProcessingHandler(this.context);
|
|
108
|
-
this._postprocessing.apply(this._effects);
|
|
109
|
-
this._applyPostQueue();
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
private unapply() {
|
|
115
|
-
this._postprocessing?.unapply();
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
private _applyPostQueue() {
|
|
120
|
-
if (this._modificationQueue) {
|
|
121
|
-
for (const entry of this._modificationQueue.values()) this.onEditorModification(entry);
|
|
122
|
-
this._modificationQueue.clear();
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/** called from needle editor sync package if its active */
|
|
127
|
-
onEditorModification(modification: EditorModification): void | boolean | undefined {
|
|
128
|
-
|
|
129
|
-
if (modification.propertyName.startsWith("postprocessing.")) {
|
|
130
|
-
|
|
131
|
-
if (!this._postprocessing) {
|
|
132
|
-
if (!this._modificationQueue) this._modificationQueue = new Map<string, EditorModification>();
|
|
133
|
-
this._modificationQueue.set(modification.propertyName, modification);
|
|
134
|
-
return true;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
if (!this._effects?.length) return;
|
|
138
|
-
const path = modification.propertyName.split(".");
|
|
139
|
-
if (path.length === 3 || path.length === 4) {
|
|
140
|
-
const componentName = path[1];
|
|
141
|
-
const propertyName = path[2];
|
|
142
|
-
for (const comp of this._effects) {
|
|
143
|
-
if (comp.typeName?.toLowerCase() === componentName.toLowerCase()) {
|
|
144
|
-
|
|
145
|
-
if (propertyName === "active") {
|
|
146
|
-
comp.active = modification.value;
|
|
147
|
-
this.scheduleRecreate();
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// cache the volume parameters
|
|
152
|
-
if (!effectVolumeProperties.has(componentName)) {
|
|
153
|
-
const volumeParameterKeys = new Array<string>();
|
|
154
|
-
effectVolumeProperties.set(componentName, volumeParameterKeys);
|
|
155
|
-
const keys = Object.keys(comp);
|
|
156
|
-
for (const key of keys) {
|
|
157
|
-
const prop = comp[key];
|
|
158
|
-
if (prop instanceof VolumeParameter) {
|
|
159
|
-
volumeParameterKeys.push(key);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
if (effectVolumeProperties.has(componentName)) {
|
|
165
|
-
const paramName = propertyName.toLowerCase();
|
|
166
|
-
const volumeParameterKeys = effectVolumeProperties.get(componentName)!;
|
|
167
|
-
for (const key of volumeParameterKeys) {
|
|
168
|
-
if (key.toLowerCase() === paramName) {
|
|
169
|
-
const prop = comp[key] as VolumeParameter;
|
|
170
|
-
if (prop instanceof VolumeParameter) {
|
|
171
|
-
const isActiveStateChange = path.length === 4 && path[3] === "active";
|
|
172
|
-
if (isActiveStateChange) {
|
|
173
|
-
prop.overrideState = modification.value;
|
|
174
|
-
this.scheduleRecreate();
|
|
175
|
-
}
|
|
176
|
-
else if (prop && prop.value !== undefined) {
|
|
177
|
-
prop.value = modification.value;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
console.warn("Unknown modification", propertyName);
|
|
186
|
-
return;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
return true;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
return false;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
private _modificationQueue?: Map<string, EditorModification>;
|
|
197
|
-
|
|
198
|
-
private _recreateId: number = -1;
|
|
199
|
-
private scheduleRecreate() {
|
|
200
|
-
// When the editor modifications come in with changed active effects we want/need to re-create the effects
|
|
201
|
-
// We defer it slightly because multiple active changes could be made and we dont want to recreate the full effect stack multiple times
|
|
202
|
-
const id = ++this._recreateId;
|
|
203
|
-
setTimeout(() => {
|
|
204
|
-
if (id !== this._recreateId) return;
|
|
205
|
-
this.onDisable();
|
|
206
|
-
this.onEnable();
|
|
207
|
-
}, 200);
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
/** cached VolumeParameter keys per object */
|
|
213
|
-
const effectVolumeProperties: Map<string, string[]> = new Map<string, string[]>();
|
|
1
|
+
import { Behaviour, GameObject } from "../Component";
|
|
2
|
+
import { serializeable } from "../../engine/engine_serialization_decorator";
|
|
3
|
+
import { getParam } from "../../engine/engine_utils";
|
|
4
|
+
import { VolumeProfile } from "./VolumeProfile";
|
|
5
|
+
import { EditorModification, IEditorModification as IEditorModificationReceiver } from "../../engine/engine_editor-sync";
|
|
6
|
+
import { PostProcessingHandler } from "./PostProcessingHandler";
|
|
7
|
+
import { PostProcessingEffect } from "./PostProcessingEffect";
|
|
8
|
+
import { VolumeParameter } from "./VolumeParameter";
|
|
9
|
+
import { getEditorModificationCache } from "../../engine/engine_editor-sync";
|
|
10
|
+
import { isDevEnvironment } from "../../engine/debug";
|
|
11
|
+
import { EffectComposer } from "postprocessing";
|
|
12
|
+
|
|
13
|
+
const debug = getParam("debugpost");
|
|
14
|
+
|
|
15
|
+
export class Volume extends Behaviour implements IEditorModificationReceiver {
|
|
16
|
+
|
|
17
|
+
@serializeable(VolumeProfile)
|
|
18
|
+
sharedProfile?: VolumeProfile;
|
|
19
|
+
|
|
20
|
+
private _postprocessing?: PostProcessingHandler;
|
|
21
|
+
private _effects: PostProcessingEffect[] = [];
|
|
22
|
+
|
|
23
|
+
awake() {
|
|
24
|
+
// ensure the profile is initialized
|
|
25
|
+
this.sharedProfile?.init();
|
|
26
|
+
|
|
27
|
+
if (debug) {
|
|
28
|
+
console.log(this);
|
|
29
|
+
console.log("Press P to toggle post processing");
|
|
30
|
+
window.addEventListener("keydown", (e) => {
|
|
31
|
+
if (e.key === "p") {
|
|
32
|
+
console.log("Toggle volume: " + this.name, !this.enabled);
|
|
33
|
+
this.enabled = !this.enabled;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
onDisable() {
|
|
40
|
+
this._postprocessing?.unapply();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
onBeforeRender(): void {
|
|
44
|
+
if (!this.context.isInXR) {
|
|
45
|
+
|
|
46
|
+
if (this.context.composer && (this.context.composer instanceof EffectComposer) === false) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Wait for the first frame to be rendered before creating because then we know we have a camera (issue 135)
|
|
51
|
+
if (this.context.mainCamera) {
|
|
52
|
+
if (!this._postprocessing || !this._postprocessing.isActive) {
|
|
53
|
+
this.apply();
|
|
54
|
+
// TODO: remove this workaround for postprocessing rendering not working correctly when applied for the first time
|
|
55
|
+
this.apply();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (this.context.composer) {
|
|
60
|
+
this.context.composer.setRenderer(this.context.renderer);
|
|
61
|
+
this.context.composer.setMainScene(this.context.scene);
|
|
62
|
+
if (this.context.mainCamera)
|
|
63
|
+
this.context.composer.setMainCamera(this.context.mainCamera);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
onDestroy(): void {
|
|
69
|
+
this._postprocessing?.dispose();
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
private _lastApplyTime?: number;
|
|
73
|
+
private _rapidApplyCount = 0;
|
|
74
|
+
|
|
75
|
+
private apply() {
|
|
76
|
+
if (debug) console.log("Apply PostProcessing", this, this.context.mainCamera?.name);
|
|
77
|
+
|
|
78
|
+
if (isDevEnvironment()) {
|
|
79
|
+
if (this._lastApplyTime !== undefined && Date.now() - this._lastApplyTime < 100) {
|
|
80
|
+
this._rapidApplyCount++;
|
|
81
|
+
if (this._rapidApplyCount === 5)
|
|
82
|
+
console.warn("Detected rapid post processing modifications - this might be a bug", this);
|
|
83
|
+
}
|
|
84
|
+
this._lastApplyTime = Date.now();
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
this.unapply();
|
|
89
|
+
|
|
90
|
+
this._effects.length = 0;
|
|
91
|
+
// get from profile
|
|
92
|
+
if (this.sharedProfile?.components) {
|
|
93
|
+
this._effects.push(...this.sharedProfile.components);
|
|
94
|
+
}
|
|
95
|
+
// get additional effects
|
|
96
|
+
const additionalComponents = this.gameObject.getComponentsInChildren(PostProcessingEffect);
|
|
97
|
+
if (debug && additionalComponents?.length)
|
|
98
|
+
console.log("Additional", additionalComponents);
|
|
99
|
+
if (additionalComponents) {
|
|
100
|
+
for (const comp of additionalComponents) {
|
|
101
|
+
if (comp.active) this._effects.push(comp);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (this._effects.length > 0) {
|
|
106
|
+
if (!this._postprocessing)
|
|
107
|
+
this._postprocessing = new PostProcessingHandler(this.context);
|
|
108
|
+
this._postprocessing.apply(this._effects);
|
|
109
|
+
this._applyPostQueue();
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
private unapply() {
|
|
115
|
+
this._postprocessing?.unapply();
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
private _applyPostQueue() {
|
|
120
|
+
if (this._modificationQueue) {
|
|
121
|
+
for (const entry of this._modificationQueue.values()) this.onEditorModification(entry);
|
|
122
|
+
this._modificationQueue.clear();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/** called from needle editor sync package if its active */
|
|
127
|
+
onEditorModification(modification: EditorModification): void | boolean | undefined {
|
|
128
|
+
|
|
129
|
+
if (modification.propertyName.startsWith("postprocessing.")) {
|
|
130
|
+
|
|
131
|
+
if (!this._postprocessing) {
|
|
132
|
+
if (!this._modificationQueue) this._modificationQueue = new Map<string, EditorModification>();
|
|
133
|
+
this._modificationQueue.set(modification.propertyName, modification);
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (!this._effects?.length) return;
|
|
138
|
+
const path = modification.propertyName.split(".");
|
|
139
|
+
if (path.length === 3 || path.length === 4) {
|
|
140
|
+
const componentName = path[1];
|
|
141
|
+
const propertyName = path[2];
|
|
142
|
+
for (const comp of this._effects) {
|
|
143
|
+
if (comp.typeName?.toLowerCase() === componentName.toLowerCase()) {
|
|
144
|
+
|
|
145
|
+
if (propertyName === "active") {
|
|
146
|
+
comp.active = modification.value;
|
|
147
|
+
this.scheduleRecreate();
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// cache the volume parameters
|
|
152
|
+
if (!effectVolumeProperties.has(componentName)) {
|
|
153
|
+
const volumeParameterKeys = new Array<string>();
|
|
154
|
+
effectVolumeProperties.set(componentName, volumeParameterKeys);
|
|
155
|
+
const keys = Object.keys(comp);
|
|
156
|
+
for (const key of keys) {
|
|
157
|
+
const prop = comp[key];
|
|
158
|
+
if (prop instanceof VolumeParameter) {
|
|
159
|
+
volumeParameterKeys.push(key);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (effectVolumeProperties.has(componentName)) {
|
|
165
|
+
const paramName = propertyName.toLowerCase();
|
|
166
|
+
const volumeParameterKeys = effectVolumeProperties.get(componentName)!;
|
|
167
|
+
for (const key of volumeParameterKeys) {
|
|
168
|
+
if (key.toLowerCase() === paramName) {
|
|
169
|
+
const prop = comp[key] as VolumeParameter;
|
|
170
|
+
if (prop instanceof VolumeParameter) {
|
|
171
|
+
const isActiveStateChange = path.length === 4 && path[3] === "active";
|
|
172
|
+
if (isActiveStateChange) {
|
|
173
|
+
prop.overrideState = modification.value;
|
|
174
|
+
this.scheduleRecreate();
|
|
175
|
+
}
|
|
176
|
+
else if (prop && prop.value !== undefined) {
|
|
177
|
+
prop.value = modification.value;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
console.warn("Unknown modification", propertyName);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
private _modificationQueue?: Map<string, EditorModification>;
|
|
197
|
+
|
|
198
|
+
private _recreateId: number = -1;
|
|
199
|
+
private scheduleRecreate() {
|
|
200
|
+
// When the editor modifications come in with changed active effects we want/need to re-create the effects
|
|
201
|
+
// We defer it slightly because multiple active changes could be made and we dont want to recreate the full effect stack multiple times
|
|
202
|
+
const id = ++this._recreateId;
|
|
203
|
+
setTimeout(() => {
|
|
204
|
+
if (id !== this._recreateId) return;
|
|
205
|
+
this.onDisable();
|
|
206
|
+
this.onEnable();
|
|
207
|
+
}, 200);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/** cached VolumeParameter keys per object */
|
|
213
|
+
const effectVolumeProperties: Map<string, string[]> = new Map<string, string[]>();
|