@fps-games/editor 0.1.4-beta.4 → 0.1.4-beta.5
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/dist/build-info.json +45 -0
- package/dist/local-editor-harness.d.ts +2 -1
- package/dist/local-editor-harness.d.ts.map +1 -1
- package/dist/local-editor-harness.js +62 -0
- package/dist/local-editor-harness.js.map +1 -1
- package/dist/playable-babylon-facade.d.ts +4 -4
- package/dist/playable-babylon-facade.d.ts.map +1 -1
- package/dist/playable-babylon-facade.js +2 -2
- package/dist/playable-babylon-facade.js.map +1 -1
- package/dist/playable-babylon-rendering.d.ts +14 -2
- package/dist/playable-babylon-rendering.d.ts.map +1 -1
- package/dist/playable-babylon-rendering.js +48 -3
- package/dist/playable-babylon-rendering.js.map +1 -1
- package/dist/playable-local-editor-host.d.ts +2 -0
- package/dist/playable-local-editor-host.d.ts.map +1 -1
- package/dist/playable-local-editor-host.js.map +1 -1
- package/dist/playable-sdk-vite.d.ts +2 -0
- package/dist/playable-sdk-vite.d.ts.map +1 -0
- package/dist/playable-sdk-vite.js +2 -0
- package/dist/playable-sdk-vite.js.map +1 -0
- package/dist/playable-sdk.d.ts +4 -4
- package/dist/playable-sdk.d.ts.map +1 -1
- package/dist/playable-sdk.js +2 -2
- package/dist/playable-sdk.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts +3 -0
- package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/index.js +3 -0
- package/node_modules/@fps-games/babylon-renderer/dist/index.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.d.ts +5 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.d.ts.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.js +46 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-shaders.js.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.d.ts +5 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.d.ts.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.js +398 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/blob-shadow-system.js.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-system.d.ts +6 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-system.d.ts.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-system.js +717 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/static-projected-shadow-system.js.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.d.ts +131 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.js +76 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/types.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/package.json +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/index.d.ts +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/index.js +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.d.ts +49 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js +141 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +5 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.js +72 -5
- package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts +14 -3
- package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js +223 -8
- package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/package.json +5 -5
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +33 -6
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +3 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/package.json +3 -3
- package/node_modules/@fps-games/editor-core/package.json +2 -2
- package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.d.ts +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/schema.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js +8 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/field-schema/validators.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js +56 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +0 -4
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js +8 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js +412 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/profile.d.ts +6 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/profile.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/profile.js +272 -5
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/profile.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts +108 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.d.ts +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.js +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.d.ts +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +37 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/types.d.ts +15 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.d.ts +36 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.js +65 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-core.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.d.ts +4 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.js +87 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/build-info-node.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/index.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts +8 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +226 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +64 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/package.json +7 -3
- package/node_modules/@fps-games/editor-protocol/package.json +1 -1
- package/package.json +12 -8
|
@@ -1,12 +1,46 @@
|
|
|
1
|
-
import { createPlanarShadowSystem, } from '@fps-games/babylon-renderer';
|
|
1
|
+
import { createBlobShadowSystem, createPlanarShadowSystem, createStaticProjectedShadowSystem, } from '@fps-games/babylon-renderer';
|
|
2
|
+
const PLANAR_PREVIEW_ROOT_BOUNDARY_PATTERNS = ['root', 'scene_builder_root'];
|
|
2
3
|
export function createBabylonEditorShadowPreviewController(options) {
|
|
3
4
|
let currentOptions = normalizeShadowPreviewOptions(options.options);
|
|
5
|
+
let blobSystem = null;
|
|
6
|
+
let staticSystem = null;
|
|
7
|
+
let staticLight = null;
|
|
4
8
|
let planarSystem = null;
|
|
5
9
|
let planarLight = null;
|
|
10
|
+
const blobCasters = new Set();
|
|
11
|
+
const staticCasters = new Set();
|
|
12
|
+
const planarCasters = new Set();
|
|
13
|
+
const disposeBlob = () => {
|
|
14
|
+
blobSystem?.dispose();
|
|
15
|
+
blobSystem = null;
|
|
16
|
+
blobCasters.clear();
|
|
17
|
+
};
|
|
6
18
|
const disposePlanar = () => {
|
|
7
19
|
planarSystem?.dispose();
|
|
8
20
|
planarSystem = null;
|
|
9
21
|
planarLight = null;
|
|
22
|
+
planarCasters.clear();
|
|
23
|
+
};
|
|
24
|
+
const disposeStatic = () => {
|
|
25
|
+
staticSystem?.dispose();
|
|
26
|
+
staticSystem = null;
|
|
27
|
+
staticLight = null;
|
|
28
|
+
staticCasters.clear();
|
|
29
|
+
};
|
|
30
|
+
const syncBlob = () => {
|
|
31
|
+
const blobOptions = currentOptions.blob;
|
|
32
|
+
if (!blobOptions || blobOptions.enabled === false) {
|
|
33
|
+
disposeBlob();
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const nextOptions = disableBlobAutoDetection(blobOptions);
|
|
37
|
+
if (!blobSystem) {
|
|
38
|
+
blobSystem = createBlobShadowSystem(options.scene, nextOptions);
|
|
39
|
+
blobSystem.initialize();
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
blobSystem.setOptions(nextOptions);
|
|
43
|
+
}
|
|
10
44
|
};
|
|
11
45
|
const syncPlanar = () => {
|
|
12
46
|
const planarOptions = currentOptions.planar;
|
|
@@ -22,36 +56,217 @@ export function createBabylonEditorShadowPreviewController(options) {
|
|
|
22
56
|
if (!planarSystem || planarLight !== light) {
|
|
23
57
|
disposePlanar();
|
|
24
58
|
planarLight = light;
|
|
25
|
-
planarSystem = createPlanarShadowSystem(options.scene, light, { ...planarOptions, direction: { mode: 'follow-light' } });
|
|
59
|
+
planarSystem = createPlanarShadowSystem(options.scene, light, disablePlanarAutoDetection({ ...planarOptions, direction: { mode: 'follow-light' } }));
|
|
26
60
|
planarSystem.initialize();
|
|
27
61
|
return;
|
|
28
62
|
}
|
|
29
|
-
planarSystem.setOptions({ ...planarOptions, direction: { mode: 'follow-light' } });
|
|
30
|
-
planarSystem.refresh();
|
|
63
|
+
planarSystem.setOptions(disablePlanarAutoDetection({ ...planarOptions, direction: { mode: 'follow-light' } }));
|
|
31
64
|
};
|
|
32
|
-
|
|
65
|
+
const syncStatic = () => {
|
|
66
|
+
const staticOptions = currentOptions.staticProjected;
|
|
67
|
+
if (!staticOptions || staticOptions.enabled === false) {
|
|
68
|
+
disposeStatic();
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const light = resolveDirectionalLight(options.projection, staticOptions.directionalLightNodeId ?? null);
|
|
72
|
+
if (!light) {
|
|
73
|
+
disposeStatic();
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (!staticSystem || staticLight !== light) {
|
|
77
|
+
disposeStatic();
|
|
78
|
+
staticLight = light;
|
|
79
|
+
staticSystem = createStaticProjectedShadowSystem(options.scene, light, disableStaticAutoDetection({ ...staticOptions, direction: { mode: 'follow-light' } }));
|
|
80
|
+
staticSystem.initialize();
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
staticSystem.setOptions(disableStaticAutoDetection({ ...staticOptions, direction: { mode: 'follow-light' } }));
|
|
84
|
+
};
|
|
85
|
+
const syncRoutes = () => {
|
|
86
|
+
syncBlob();
|
|
87
|
+
syncStatic();
|
|
88
|
+
syncPlanar();
|
|
89
|
+
const meshes = readSceneMeshes(options.scene);
|
|
90
|
+
const nextBlobCasters = new Set();
|
|
91
|
+
const nextStaticCasters = new Set();
|
|
92
|
+
const nextPlanarCasters = new Set();
|
|
93
|
+
for (const mesh of meshes) {
|
|
94
|
+
const mode = resolvePreviewMeshShadowMode(mesh, currentOptions.defaultMode ?? 'static');
|
|
95
|
+
if (mode === 'blob' && blobSystem)
|
|
96
|
+
nextBlobCasters.add(mesh);
|
|
97
|
+
if (mode === 'static' && staticSystem)
|
|
98
|
+
nextStaticCasters.add(mesh);
|
|
99
|
+
if (mode === 'planar' && planarSystem)
|
|
100
|
+
nextPlanarCasters.add(mesh);
|
|
101
|
+
}
|
|
102
|
+
syncSystemCasters(blobSystem, blobCasters, nextBlobCasters);
|
|
103
|
+
syncSystemCasters(staticSystem, staticCasters, nextStaticCasters);
|
|
104
|
+
syncSystemCasters(planarSystem, planarCasters, nextPlanarCasters);
|
|
105
|
+
blobSystem?.refresh();
|
|
106
|
+
staticSystem?.refresh();
|
|
107
|
+
planarSystem?.refresh();
|
|
108
|
+
};
|
|
109
|
+
syncRoutes();
|
|
33
110
|
return {
|
|
34
111
|
setOptions(nextOptions) {
|
|
35
112
|
currentOptions = normalizeShadowPreviewOptions(nextOptions);
|
|
36
|
-
|
|
113
|
+
syncRoutes();
|
|
37
114
|
},
|
|
38
115
|
refresh() {
|
|
39
|
-
|
|
116
|
+
syncRoutes();
|
|
40
117
|
},
|
|
41
118
|
rebuild() {
|
|
119
|
+
disposeBlob();
|
|
120
|
+
disposeStatic();
|
|
42
121
|
disposePlanar();
|
|
43
|
-
|
|
122
|
+
syncRoutes();
|
|
44
123
|
},
|
|
45
124
|
dispose() {
|
|
125
|
+
disposeBlob();
|
|
126
|
+
disposeStatic();
|
|
46
127
|
disposePlanar();
|
|
47
128
|
},
|
|
48
129
|
};
|
|
49
130
|
}
|
|
50
131
|
function normalizeShadowPreviewOptions(options) {
|
|
51
132
|
return {
|
|
133
|
+
defaultMode: readPreviewDefaultMode(options?.defaultMode),
|
|
134
|
+
blob: options?.blob ?? null,
|
|
135
|
+
staticProjected: options?.staticProjected ?? null,
|
|
52
136
|
planar: options?.planar ?? null,
|
|
53
137
|
};
|
|
54
138
|
}
|
|
139
|
+
function disableBlobAutoDetection(options) {
|
|
140
|
+
return {
|
|
141
|
+
...options,
|
|
142
|
+
casters: {
|
|
143
|
+
...options.casters,
|
|
144
|
+
autoDetectAll: false,
|
|
145
|
+
includePatterns: [],
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function disablePlanarAutoDetection(options) {
|
|
150
|
+
return {
|
|
151
|
+
...options,
|
|
152
|
+
casters: {
|
|
153
|
+
...options.casters,
|
|
154
|
+
autoDetectAll: false,
|
|
155
|
+
includePatterns: [],
|
|
156
|
+
rootBoundaryPatterns: mergeUniquePatterns([
|
|
157
|
+
...(options.casters?.rootBoundaryPatterns ?? []),
|
|
158
|
+
...PLANAR_PREVIEW_ROOT_BOUNDARY_PATTERNS,
|
|
159
|
+
]),
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
function disableStaticAutoDetection(options) {
|
|
164
|
+
return {
|
|
165
|
+
...options,
|
|
166
|
+
casters: {
|
|
167
|
+
...options.casters,
|
|
168
|
+
autoDetectAll: false,
|
|
169
|
+
includePatterns: [],
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
function syncSystemCasters(system, current, next) {
|
|
174
|
+
for (const mesh of [...current]) {
|
|
175
|
+
if (!next.has(mesh)) {
|
|
176
|
+
system?.removeCaster(mesh);
|
|
177
|
+
current.delete(mesh);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (!system) {
|
|
181
|
+
current.clear();
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
for (const mesh of next) {
|
|
185
|
+
if (!current.has(mesh)) {
|
|
186
|
+
system.addCaster(mesh);
|
|
187
|
+
current.add(mesh);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
function readSceneMeshes(scene) {
|
|
192
|
+
return Array.isArray(scene?.meshes) ? scene.meshes : [];
|
|
193
|
+
}
|
|
194
|
+
function resolvePreviewMeshShadowMode(mesh, defaultMode) {
|
|
195
|
+
if (mesh.isDisposed?.())
|
|
196
|
+
return 'none';
|
|
197
|
+
if (hasGeneratedShadowDisabled(mesh))
|
|
198
|
+
return 'none';
|
|
199
|
+
const authoredMode = readProjectionShadowMode(mesh);
|
|
200
|
+
if (!authoredMode || authoredMode === 'default')
|
|
201
|
+
return defaultMode;
|
|
202
|
+
return authoredMode;
|
|
203
|
+
}
|
|
204
|
+
function readPreviewDefaultMode(value) {
|
|
205
|
+
return value === 'none' || value === 'blob' || value === 'static' || value === 'planar' || value === 'dynamic'
|
|
206
|
+
? value
|
|
207
|
+
: 'static';
|
|
208
|
+
}
|
|
209
|
+
function readProjectionShadowMode(mesh) {
|
|
210
|
+
for (const node of walkNodeAndParents(mesh)) {
|
|
211
|
+
const editorProjection = readEditorProjectionMetadata(node);
|
|
212
|
+
const mode = editorProjection?.shadowMode;
|
|
213
|
+
if (mode === 'default' || mode === 'none' || mode === 'blob' || mode === 'static' || mode === 'planar' || mode === 'dynamic')
|
|
214
|
+
return mode;
|
|
215
|
+
}
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
function hasGeneratedShadowDisabled(mesh) {
|
|
219
|
+
for (const node of walkNodeAndParents(mesh)) {
|
|
220
|
+
const metadata = readObject(node.metadata);
|
|
221
|
+
if (metadata?.blobShadowInternal === true
|
|
222
|
+
|| metadata?.staticProjectedShadowInternal === true
|
|
223
|
+
|| metadata?.planarShadowInternal === true)
|
|
224
|
+
return true;
|
|
225
|
+
const projection = readEditorProjectionMetadata(node);
|
|
226
|
+
if (projection?.runtimeKind === 'camera' || projection?.runtimeKind === 'light')
|
|
227
|
+
return true;
|
|
228
|
+
if (metadata?.disableBlobShadow === true
|
|
229
|
+
&& metadata?.disableStaticProjectedShadow === true
|
|
230
|
+
&& metadata?.disablePlanarShadow === true
|
|
231
|
+
&& projection?.nodeId !== 'root'
|
|
232
|
+
&& projection?.helperKind !== 'root') {
|
|
233
|
+
return true;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
function walkNodeAndParents(mesh) {
|
|
239
|
+
const nodes = [];
|
|
240
|
+
const seen = new Set();
|
|
241
|
+
let cursor = mesh;
|
|
242
|
+
while (cursor && typeof cursor === 'object' && !seen.has(cursor)) {
|
|
243
|
+
nodes.push(cursor);
|
|
244
|
+
seen.add(cursor);
|
|
245
|
+
cursor = cursor.parent;
|
|
246
|
+
}
|
|
247
|
+
return nodes;
|
|
248
|
+
}
|
|
249
|
+
function readEditorProjectionMetadata(node) {
|
|
250
|
+
return readObject(readObject(node?.metadata)?.editorProjection);
|
|
251
|
+
}
|
|
252
|
+
function readObject(value) {
|
|
253
|
+
return value && typeof value === 'object' && !Array.isArray(value)
|
|
254
|
+
? value
|
|
255
|
+
: null;
|
|
256
|
+
}
|
|
257
|
+
function mergeUniquePatterns(patterns) {
|
|
258
|
+
const normalized = [];
|
|
259
|
+
const seen = new Set();
|
|
260
|
+
for (const pattern of patterns) {
|
|
261
|
+
const trimmed = pattern.trim();
|
|
262
|
+
const key = trimmed.toLowerCase();
|
|
263
|
+
if (!trimmed || seen.has(key))
|
|
264
|
+
continue;
|
|
265
|
+
seen.add(key);
|
|
266
|
+
normalized.push(trimmed);
|
|
267
|
+
}
|
|
268
|
+
return normalized;
|
|
269
|
+
}
|
|
55
270
|
function resolveDirectionalLight(projection, nodeId) {
|
|
56
271
|
if (!nodeId)
|
|
57
272
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shadow-preview-controller.js","sourceRoot":"","sources":["../src/shadow-preview-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,
|
|
1
|
+
{"version":3,"file":"shadow-preview-controller.js","sourceRoot":"","sources":["../src/shadow-preview-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fps-games/editor-babylon",
|
|
3
|
-
"version": "0.1.4-beta.
|
|
3
|
+
"version": "0.1.4-beta.5",
|
|
4
4
|
"private": true,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "BabylonJS runtime integrations for fps-game-editor.",
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@fps-games/babylon-renderer": "0.1.4-beta.
|
|
22
|
-
"@fps-games/editor-browser": "0.1.4-beta.
|
|
23
|
-
"@fps-games/editor-core": "0.1.4-beta.
|
|
24
|
-
"@fps-games/editor-protocol": "0.1.4-beta.
|
|
21
|
+
"@fps-games/babylon-renderer": "0.1.4-beta.5",
|
|
22
|
+
"@fps-games/editor-browser": "0.1.4-beta.5",
|
|
23
|
+
"@fps-games/editor-core": "0.1.4-beta.5",
|
|
24
|
+
"@fps-games/editor-protocol": "0.1.4-beta.5"
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-editor-ui-panels.d.ts","sourceRoot":"","sources":["../src/local-editor-ui-panels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAG1B,wBAAwB,EAIxB,2CAA2C,EAC3C,gDAAgD,EAEhD,8CAA8C,EAC9C,+CAA+C,EAC/C,qCAAqC,EACrC,iCAAiC,EACjC,mCAAmC,EACnC,kCAAkC,
|
|
1
|
+
{"version":3,"file":"local-editor-ui-panels.d.ts","sourceRoot":"","sources":["../src/local-editor-ui-panels.ts"],"names":[],"mappings":"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"}
|
|
@@ -239,11 +239,12 @@ function tabHeaderButtonStyle(button) {
|
|
|
239
239
|
button.style.minWidth = '0';
|
|
240
240
|
}
|
|
241
241
|
function createRenderingSectionBlock(doc, section) {
|
|
242
|
+
const isListLayout = section.layout === 'list';
|
|
242
243
|
const block = doc.createElement('section');
|
|
243
244
|
block.dataset.editorRenderingSection = section.id;
|
|
244
245
|
block.style.cssText = [
|
|
245
246
|
'margin:0 0 10px',
|
|
246
|
-
'
|
|
247
|
+
`padding:${isListLayout ? '6px' : '8px'}`,
|
|
247
248
|
'border:1px solid var(--fps-editor-border)',
|
|
248
249
|
'border-radius:3px',
|
|
249
250
|
'background:var(--fps-editor-panel-soft)',
|
|
@@ -266,19 +267,38 @@ function createRenderingSectionBlock(doc, section) {
|
|
|
266
267
|
header.appendChild(createBadge(doc, `${section.systems.length}`, { compact: true }));
|
|
267
268
|
block.appendChild(header);
|
|
268
269
|
const list = doc.createElement('div');
|
|
269
|
-
list.style.cssText =
|
|
270
|
+
list.style.cssText = [
|
|
271
|
+
'display:flex',
|
|
272
|
+
'flex-direction:column',
|
|
273
|
+
`gap:${isListLayout ? '0' : '8px'}`,
|
|
274
|
+
...(isListLayout ? [
|
|
275
|
+
'border:1px solid var(--fps-editor-border)',
|
|
276
|
+
'border-radius:3px',
|
|
277
|
+
'overflow:hidden',
|
|
278
|
+
'background:rgba(0,0,0,0.08)',
|
|
279
|
+
] : []),
|
|
280
|
+
].join(';');
|
|
270
281
|
for (const system of section.systems) {
|
|
271
|
-
list.appendChild(createRenderingSystemBlock(doc, section.id, system));
|
|
282
|
+
list.appendChild(createRenderingSystemBlock(doc, section.id, system, section.layout));
|
|
272
283
|
}
|
|
273
284
|
block.appendChild(list);
|
|
274
285
|
return block;
|
|
275
286
|
}
|
|
276
|
-
function createRenderingSystemBlock(doc, sectionId, system) {
|
|
287
|
+
function createRenderingSystemBlock(doc, sectionId, system, layout = 'cards') {
|
|
288
|
+
const isListLayout = layout === 'list';
|
|
277
289
|
const block = createListItemBlock(doc);
|
|
278
290
|
block.dataset.editorRenderingSystem = system.id;
|
|
279
291
|
block.dataset.editorRenderingSystemKind = system.kind;
|
|
292
|
+
if (isListLayout) {
|
|
293
|
+
block.style.margin = '0';
|
|
294
|
+
block.style.border = '0';
|
|
295
|
+
block.style.borderRadius = '0';
|
|
296
|
+
block.style.borderBottom = '1px solid var(--fps-editor-border)';
|
|
297
|
+
block.style.background = 'transparent';
|
|
298
|
+
block.style.padding = '8px';
|
|
299
|
+
}
|
|
280
300
|
const header = doc.createElement('div');
|
|
281
|
-
header.style.cssText =
|
|
301
|
+
header.style.cssText = `display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin:0 0 ${isListLayout ? '6px' : '8px'}`;
|
|
282
302
|
const title = doc.createElement('div');
|
|
283
303
|
title.style.cssText = 'min-width:0';
|
|
284
304
|
const label = doc.createElement('div');
|
|
@@ -303,7 +323,14 @@ function createRenderingSystemBlock(doc, sectionId, system) {
|
|
|
303
323
|
header.appendChild(badges);
|
|
304
324
|
block.appendChild(header);
|
|
305
325
|
const propertyGrid = doc.createElement('div');
|
|
306
|
-
propertyGrid.style.cssText =
|
|
326
|
+
propertyGrid.style.cssText = [
|
|
327
|
+
'display:flex',
|
|
328
|
+
'flex-direction:column',
|
|
329
|
+
`gap:${isListLayout ? '5px' : '6px'}`,
|
|
330
|
+
...(isListLayout ? [
|
|
331
|
+
'padding-left:0',
|
|
332
|
+
] : []),
|
|
333
|
+
].join(';');
|
|
307
334
|
for (const property of system.properties) {
|
|
308
335
|
propertyGrid.appendChild(createRenderingPropertyRow(doc, sectionId, system.id, property, system.readOnly === true));
|
|
309
336
|
}
|