@fps-games/editor 0.1.5-beta.4 → 0.1.6-beta.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/dist/build-info.json +16 -16
- package/dist/local-editor-agent-actions.d.ts +8 -1
- package/dist/local-editor-agent-actions.d.ts.map +1 -1
- package/dist/local-editor-agent-actions.js +171 -12
- package/dist/local-editor-agent-actions.js.map +1 -1
- package/dist/local-editor-agent-context.d.ts +29 -1
- package/dist/local-editor-agent-context.d.ts.map +1 -1
- package/dist/local-editor-agent-context.js +403 -0
- package/dist/local-editor-agent-context.js.map +1 -1
- package/dist/local-editor-harness.d.ts +103 -5
- package/dist/local-editor-harness.d.ts.map +1 -1
- package/dist/local-editor-harness.js +1982 -101
- package/dist/local-editor-harness.js.map +1 -1
- package/dist/local-editor-marker-graph.d.ts +92 -0
- package/dist/local-editor-marker-graph.d.ts.map +1 -0
- package/dist/local-editor-marker-graph.js +1432 -0
- package/dist/local-editor-marker-graph.js.map +1 -0
- package/dist/local-editor-performance-stats.js +1 -1
- package/dist/local-editor-performance-stats.js.map +1 -1
- package/dist/playable-babylon-facade.d.ts +2 -2
- package/dist/playable-babylon-facade.d.ts.map +1 -1
- package/dist/playable-babylon-facade.js +1 -1
- package/dist/playable-babylon-facade.js.map +1 -1
- package/dist/playable-local-editor-host.d.ts +52 -7
- package/dist/playable-local-editor-host.d.ts.map +1 -1
- package/dist/playable-local-editor-host.js +23 -1
- package/dist/playable-local-editor-host.js.map +1 -1
- package/dist/playable-sdk.d.ts +4 -2
- package/dist/playable-sdk.d.ts.map +1 -1
- package/dist/playable-sdk.js +2 -1
- package/dist/playable-sdk.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/package.json +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/camera-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js +11 -0
- package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/editor-sky.d.ts +3 -1
- package/node_modules/@fps-games/editor-babylon/dist/editor-sky.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/editor-sky.js +114 -18
- package/node_modules/@fps-games/editor-babylon/dist/editor-sky.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/editor-world.d.ts +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/editor-world.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/editor-world.js +3 -0
- package/node_modules/@fps-games/editor-babylon/dist/editor-world.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/index.d.ts +3 -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 +3 -0
- package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.d.ts +52 -0
- package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js +1395 -0
- package/node_modules/@fps-games/editor-babylon/dist/marker-overlay.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js +4 -65
- package/node_modules/@fps-games/editor-babylon/dist/material-property-adapter.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.d.ts +28 -0
- package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js +235 -0
- package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts +37 -0
- package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js +451 -0
- package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js +24 -10
- package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.d.ts +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.js +20 -4
- package/node_modules/@fps-games/editor-babylon/dist/projection-pick-resolver.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.d.ts +9 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.js +64 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection-source-owner-path.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +44 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.js +311 -70
- package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/package.json +5 -5
- package/node_modules/@fps-games/editor-browser/dist/index.d.ts +5 -2
- package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/index.js +2 -0
- package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts +5 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js +23 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js +69 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +2 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +38 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +8 -2
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js +7 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.js +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panel-registry.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +4 -0
- 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 +1471 -29
- 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-prefab-stage.d.ts +52 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js +131 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js +9 -2
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +234 -3
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts +10 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js +3 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +4 -3
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +1274 -55
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/package.json +3 -3
- package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts +1 -1
- package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts +2 -0
- package/node_modules/@fps-games/editor-core/dist/viewport-tools.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/viewport-tools.js +1 -0
- package/node_modules/@fps-games/editor-core/dist/viewport-tools.js.map +1 -1
- 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/asset-library/catalog.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js +17 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/types.d.ts +3 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.js +68 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/document.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.d.ts +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.js +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-placement/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts +56 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +531 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts +103 -2
- 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 +9 -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 +3 -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/local-harness/lifecycle.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +3 -7
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js +6 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/binding.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.d.ts +2 -10
- package/node_modules/@fps-games/editor-playable-sdk/dist/material-binding/types.d.ts.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 -0
- 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/runtime-preview/nodes.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js +66 -31
- 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/scene-source/protocol.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js +40 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.js +20 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/descriptors.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js +68 -27
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.js +7 -4
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/object.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.js +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/package.json +3 -3
- package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts +57 -3
- package/node_modules/@fps-games/editor-protocol/dist/agent.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent.js.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +19 -0
- package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/index.js +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/marker-graph.d.ts +128 -0
- package/node_modules/@fps-games/editor-protocol/dist/marker-graph.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/marker-graph.js +2 -0
- package/node_modules/@fps-games/editor-protocol/dist/marker-graph.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/package.json +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
const MAIN_CAMERA_LAYER_MASK = 0x0fffffff;
|
|
2
|
+
const MESH_CLONE_LAYER_MASK = 0x10000000;
|
|
3
|
+
const INSTANCED_MESH_LAYER_MASK = 0x20000000;
|
|
4
|
+
const COMPARISON_LAYER_MASK = MESH_CLONE_LAYER_MASK | INSTANCED_MESH_LAYER_MASK;
|
|
5
|
+
const ORBIT_POINTER_PIXEL_TO_RADIAN = 0.008;
|
|
6
|
+
const ZOOM_WHEEL_DELTA_TO_SCALE = 0.0012;
|
|
7
|
+
export function createBabylonPrefabComparisonPreviewController(options) {
|
|
8
|
+
const cameras = new Map();
|
|
9
|
+
const viewState = createInitialComparisonViewState();
|
|
10
|
+
let active = false;
|
|
11
|
+
let disposed = false;
|
|
12
|
+
let savedActiveCamera = null;
|
|
13
|
+
let savedActiveCameras;
|
|
14
|
+
let savedEditorCameraLayerMask = null;
|
|
15
|
+
let savedEditorCameraViewport = null;
|
|
16
|
+
let savedSkyLayerMask = null;
|
|
17
|
+
function sync(surfaces) {
|
|
18
|
+
if (disposed)
|
|
19
|
+
return false;
|
|
20
|
+
const canvasRect = readRenderCanvasRect(options.scene);
|
|
21
|
+
if (!canvasRect || surfaces.length === 0)
|
|
22
|
+
return clear({ resetViewState: false });
|
|
23
|
+
const visibleProjectionIds = new Set();
|
|
24
|
+
let changed = false;
|
|
25
|
+
for (const surface of surfaces) {
|
|
26
|
+
const projectedNode = options.projection.getProjectedNode(surface.projectionNodeId);
|
|
27
|
+
const viewport = resolveSurfaceViewport(surface.rect, canvasRect);
|
|
28
|
+
const layerMask = resolveComparisonLayerMask(surface);
|
|
29
|
+
if (!projectedNode || !viewport || layerMask == null)
|
|
30
|
+
continue;
|
|
31
|
+
const fit = resolveProjectionFit(options.babylon, projectedNode);
|
|
32
|
+
visibleProjectionIds.add(surface.projectionNodeId);
|
|
33
|
+
applyProjectionLayerMask(projectedNode, layerMask);
|
|
34
|
+
const existing = cameras.get(surface.projectionNodeId);
|
|
35
|
+
const cameraState = ensureCamera(surface, layerMask);
|
|
36
|
+
if (!cameraState)
|
|
37
|
+
continue;
|
|
38
|
+
if (!existing)
|
|
39
|
+
changed = true;
|
|
40
|
+
if (cameraState.layerMask !== layerMask)
|
|
41
|
+
changed = true;
|
|
42
|
+
if (!viewportsEqual(cameraState.viewport, viewport))
|
|
43
|
+
changed = true;
|
|
44
|
+
cameraState.projectionNodeId = surface.projectionNodeId;
|
|
45
|
+
cameraState.layerMask = layerMask;
|
|
46
|
+
cameraState.viewport = viewport;
|
|
47
|
+
if (!vectorsEqual(cameraState.target, fit.target))
|
|
48
|
+
changed = true;
|
|
49
|
+
if (Math.abs(cameraState.requiredRadius - fit.requiredRadius) > 0.0001)
|
|
50
|
+
changed = true;
|
|
51
|
+
cameraState.target = fit.target;
|
|
52
|
+
cameraState.requiredRadius = fit.requiredRadius;
|
|
53
|
+
cameraState.camera.layerMask = layerMask;
|
|
54
|
+
applyCameraViewport(options.babylon, cameraState.camera, viewport);
|
|
55
|
+
}
|
|
56
|
+
for (const [projectionNodeId, cameraState] of cameras) {
|
|
57
|
+
if (visibleProjectionIds.has(projectionNodeId))
|
|
58
|
+
continue;
|
|
59
|
+
cameraState.camera.dispose?.();
|
|
60
|
+
cameras.delete(projectionNodeId);
|
|
61
|
+
changed = true;
|
|
62
|
+
}
|
|
63
|
+
if (cameras.size === 0)
|
|
64
|
+
return clear() || changed;
|
|
65
|
+
if (syncSharedComparisonViewState())
|
|
66
|
+
changed = true;
|
|
67
|
+
applyComparisonCameraFrames();
|
|
68
|
+
if (!active)
|
|
69
|
+
changed = true;
|
|
70
|
+
activateSceneCameras();
|
|
71
|
+
return changed;
|
|
72
|
+
}
|
|
73
|
+
function prepareFrame() {
|
|
74
|
+
if (disposed || !active)
|
|
75
|
+
return;
|
|
76
|
+
ensureSceneCamerasActive();
|
|
77
|
+
applyComparisonCameraFrames();
|
|
78
|
+
applySkyLayerMask();
|
|
79
|
+
}
|
|
80
|
+
function adjustView(input) {
|
|
81
|
+
if (disposed || !active || cameras.size === 0)
|
|
82
|
+
return false;
|
|
83
|
+
if (input.kind === 'orbit') {
|
|
84
|
+
if (!Number.isFinite(input.deltaX) || !Number.isFinite(input.deltaY))
|
|
85
|
+
return false;
|
|
86
|
+
if (Math.abs(input.deltaX) < 0.001 && Math.abs(input.deltaY) < 0.001)
|
|
87
|
+
return false;
|
|
88
|
+
viewState.alpha -= input.deltaX * ORBIT_POINTER_PIXEL_TO_RADIAN;
|
|
89
|
+
viewState.beta = clamp(viewState.beta + input.deltaY * ORBIT_POINTER_PIXEL_TO_RADIAN, 0.08, Math.PI - 0.08);
|
|
90
|
+
viewState.userAdjusted = true;
|
|
91
|
+
applyComparisonCameraFrames();
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
if (!Number.isFinite(input.deltaY) || Math.abs(input.deltaY) < 0.001)
|
|
95
|
+
return false;
|
|
96
|
+
const nextRadius = clamp(viewState.radius * Math.exp(input.deltaY * ZOOM_WHEEL_DELTA_TO_SCALE), viewState.minRadius, viewState.maxRadius);
|
|
97
|
+
if (Math.abs(nextRadius - viewState.radius) < 0.0001)
|
|
98
|
+
return false;
|
|
99
|
+
viewState.radius = nextRadius;
|
|
100
|
+
viewState.userAdjusted = true;
|
|
101
|
+
applyComparisonCameraFrames();
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
function clear(clearOptions = {}) {
|
|
105
|
+
if (disposed)
|
|
106
|
+
return false;
|
|
107
|
+
const hadState = active || cameras.size > 0;
|
|
108
|
+
for (const cameraState of cameras.values())
|
|
109
|
+
cameraState.camera.dispose?.();
|
|
110
|
+
cameras.clear();
|
|
111
|
+
restoreSceneCameras();
|
|
112
|
+
restoreSkyLayerMask();
|
|
113
|
+
if (clearOptions.resetViewState !== false)
|
|
114
|
+
resetComparisonViewState(viewState);
|
|
115
|
+
return hadState;
|
|
116
|
+
}
|
|
117
|
+
function dispose() {
|
|
118
|
+
if (disposed)
|
|
119
|
+
return;
|
|
120
|
+
clear();
|
|
121
|
+
disposed = true;
|
|
122
|
+
}
|
|
123
|
+
function ensureCamera(surface, layerMask) {
|
|
124
|
+
const existing = cameras.get(surface.projectionNodeId);
|
|
125
|
+
if (existing)
|
|
126
|
+
return existing;
|
|
127
|
+
const camera = createComparisonCamera(options.babylon, options.scene, surface.projectionNodeId);
|
|
128
|
+
if (!camera)
|
|
129
|
+
return null;
|
|
130
|
+
camera.layerMask = layerMask;
|
|
131
|
+
camera.inertia = 0;
|
|
132
|
+
const state = {
|
|
133
|
+
previewId: surface.previewId,
|
|
134
|
+
projectionNodeId: surface.projectionNodeId,
|
|
135
|
+
layerMask,
|
|
136
|
+
viewport: null,
|
|
137
|
+
camera,
|
|
138
|
+
target: { x: 0, y: 0, z: 0 },
|
|
139
|
+
requiredRadius: 9,
|
|
140
|
+
};
|
|
141
|
+
cameras.set(surface.projectionNodeId, state);
|
|
142
|
+
return state;
|
|
143
|
+
}
|
|
144
|
+
function activateSceneCameras() {
|
|
145
|
+
if (!active) {
|
|
146
|
+
savedActiveCamera = options.scene.activeCamera ?? options.editorCamera;
|
|
147
|
+
savedActiveCameras = Array.isArray(options.scene.activeCameras)
|
|
148
|
+
? [...options.scene.activeCameras]
|
|
149
|
+
: options.scene.activeCameras ?? null;
|
|
150
|
+
savedEditorCameraLayerMask = typeof options.editorCamera.layerMask === 'number'
|
|
151
|
+
? options.editorCamera.layerMask
|
|
152
|
+
: null;
|
|
153
|
+
savedEditorCameraViewport = options.editorCamera.viewport ?? null;
|
|
154
|
+
active = true;
|
|
155
|
+
}
|
|
156
|
+
ensureSceneCamerasActive();
|
|
157
|
+
applySkyLayerMask();
|
|
158
|
+
}
|
|
159
|
+
function ensureSceneCamerasActive() {
|
|
160
|
+
if (!active)
|
|
161
|
+
return;
|
|
162
|
+
options.editorCamera.layerMask = MAIN_CAMERA_LAYER_MASK;
|
|
163
|
+
options.scene.activeCamera = options.editorCamera;
|
|
164
|
+
options.scene.activeCameras = [options.editorCamera, ...[...cameras.values()].map(state => state.camera)];
|
|
165
|
+
}
|
|
166
|
+
function restoreSceneCameras() {
|
|
167
|
+
if (!active)
|
|
168
|
+
return;
|
|
169
|
+
if (savedEditorCameraLayerMask != null)
|
|
170
|
+
options.editorCamera.layerMask = savedEditorCameraLayerMask;
|
|
171
|
+
if (savedEditorCameraViewport != null)
|
|
172
|
+
options.editorCamera.viewport = savedEditorCameraViewport;
|
|
173
|
+
options.scene.activeCamera = savedActiveCamera ?? options.editorCamera;
|
|
174
|
+
if (savedActiveCameras === undefined) {
|
|
175
|
+
delete options.scene.activeCameras;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
options.scene.activeCameras = savedActiveCameras;
|
|
179
|
+
}
|
|
180
|
+
savedActiveCamera = null;
|
|
181
|
+
savedActiveCameras = undefined;
|
|
182
|
+
savedEditorCameraLayerMask = null;
|
|
183
|
+
savedEditorCameraViewport = null;
|
|
184
|
+
active = false;
|
|
185
|
+
}
|
|
186
|
+
function syncSharedComparisonViewState() {
|
|
187
|
+
if (cameras.size === 0)
|
|
188
|
+
return false;
|
|
189
|
+
const cameraStates = [...cameras.values()];
|
|
190
|
+
const requiredRadius = Math.max(...cameraStates.map(state => state.requiredRadius), 2);
|
|
191
|
+
const minRadius = Math.max(0.1, requiredRadius * 0.12);
|
|
192
|
+
const maxRadius = Math.max(requiredRadius * 8, minRadius + 1);
|
|
193
|
+
const fitKey = cameraStates
|
|
194
|
+
.map(state => `${state.projectionNodeId}:${formatComparisonNumber(state.target.x)},${formatComparisonNumber(state.target.y)},${formatComparisonNumber(state.target.z)}:${formatComparisonNumber(state.requiredRadius)}`)
|
|
195
|
+
.sort()
|
|
196
|
+
.join('|');
|
|
197
|
+
const shouldRefit = !viewState.initialized || (!viewState.userAdjusted && viewState.fitKey !== fitKey);
|
|
198
|
+
let changed = false;
|
|
199
|
+
if (viewState.minRadius !== minRadius || viewState.maxRadius !== maxRadius) {
|
|
200
|
+
viewState.minRadius = minRadius;
|
|
201
|
+
viewState.maxRadius = maxRadius;
|
|
202
|
+
changed = true;
|
|
203
|
+
}
|
|
204
|
+
if (shouldRefit) {
|
|
205
|
+
if (Math.abs(viewState.radius - requiredRadius) > 0.0001)
|
|
206
|
+
changed = true;
|
|
207
|
+
viewState.radius = requiredRadius;
|
|
208
|
+
viewState.initialized = true;
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
const clampedRadius = clamp(viewState.radius, minRadius, maxRadius);
|
|
212
|
+
if (Math.abs(viewState.radius - clampedRadius) > 0.0001)
|
|
213
|
+
changed = true;
|
|
214
|
+
viewState.radius = clampedRadius;
|
|
215
|
+
}
|
|
216
|
+
if (viewState.fitKey !== fitKey) {
|
|
217
|
+
viewState.fitKey = fitKey;
|
|
218
|
+
changed = true;
|
|
219
|
+
}
|
|
220
|
+
return changed;
|
|
221
|
+
}
|
|
222
|
+
function applyComparisonCameraFrames() {
|
|
223
|
+
for (const cameraState of cameras.values()) {
|
|
224
|
+
applyComparisonCameraFrame(options.babylon, cameraState.camera, cameraState.target, viewState);
|
|
225
|
+
cameraState.camera.layerMask = cameraState.layerMask;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
function applySkyLayerMask() {
|
|
229
|
+
const mesh = options.getSkyBackdrop?.()?.mesh;
|
|
230
|
+
if (!mesh || typeof mesh !== 'object')
|
|
231
|
+
return;
|
|
232
|
+
if (savedSkyLayerMask == null && typeof mesh.layerMask === 'number') {
|
|
233
|
+
savedSkyLayerMask = mesh.layerMask;
|
|
234
|
+
}
|
|
235
|
+
const baseMask = typeof mesh.layerMask === 'number' ? mesh.layerMask : MAIN_CAMERA_LAYER_MASK;
|
|
236
|
+
mesh.layerMask = baseMask | COMPARISON_LAYER_MASK;
|
|
237
|
+
}
|
|
238
|
+
function restoreSkyLayerMask() {
|
|
239
|
+
const mesh = options.getSkyBackdrop?.()?.mesh;
|
|
240
|
+
if (mesh && savedSkyLayerMask != null)
|
|
241
|
+
mesh.layerMask = savedSkyLayerMask;
|
|
242
|
+
savedSkyLayerMask = null;
|
|
243
|
+
}
|
|
244
|
+
return {
|
|
245
|
+
sync,
|
|
246
|
+
prepareFrame,
|
|
247
|
+
adjustView,
|
|
248
|
+
clear,
|
|
249
|
+
dispose,
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
function createInitialComparisonViewState() {
|
|
253
|
+
return {
|
|
254
|
+
alpha: Math.PI / 4,
|
|
255
|
+
beta: Math.PI / 3,
|
|
256
|
+
radius: 9,
|
|
257
|
+
minRadius: 0.5,
|
|
258
|
+
maxRadius: 72,
|
|
259
|
+
initialized: false,
|
|
260
|
+
userAdjusted: false,
|
|
261
|
+
fitKey: '',
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
function resetComparisonViewState(viewState) {
|
|
265
|
+
const initial = createInitialComparisonViewState();
|
|
266
|
+
viewState.alpha = initial.alpha;
|
|
267
|
+
viewState.beta = initial.beta;
|
|
268
|
+
viewState.radius = initial.radius;
|
|
269
|
+
viewState.minRadius = initial.minRadius;
|
|
270
|
+
viewState.maxRadius = initial.maxRadius;
|
|
271
|
+
viewState.initialized = initial.initialized;
|
|
272
|
+
viewState.userAdjusted = initial.userAdjusted;
|
|
273
|
+
viewState.fitKey = initial.fitKey;
|
|
274
|
+
}
|
|
275
|
+
function createComparisonCamera(babylon, scene, projectionNodeId) {
|
|
276
|
+
const Vector3 = babylon.Vector3;
|
|
277
|
+
if (!Vector3)
|
|
278
|
+
return null;
|
|
279
|
+
if (babylon.ArcRotateCamera) {
|
|
280
|
+
return new babylon.ArcRotateCamera(`prefab-comparison-preview:${projectionNodeId}`, Math.PI / 4, Math.PI / 3, 9, new Vector3(0, 0, 0), scene);
|
|
281
|
+
}
|
|
282
|
+
if (!babylon.UniversalCamera)
|
|
283
|
+
return null;
|
|
284
|
+
return new babylon.UniversalCamera(`prefab-comparison-preview:${projectionNodeId}`, new Vector3(0, 0, -9), scene);
|
|
285
|
+
}
|
|
286
|
+
function applyComparisonCameraFrame(babylon, camera, target, viewState) {
|
|
287
|
+
const beta = clamp(viewState.beta, 0.05, Math.PI - 0.05);
|
|
288
|
+
const radius = clamp(viewState.radius, viewState.minRadius, viewState.maxRadius);
|
|
289
|
+
if (typeof camera.alpha === 'number' && typeof camera.beta === 'number' && typeof camera.radius === 'number') {
|
|
290
|
+
camera.alpha = viewState.alpha;
|
|
291
|
+
camera.beta = beta;
|
|
292
|
+
camera.radius = radius;
|
|
293
|
+
setCameraTarget(babylon, camera, target);
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
if (camera.position) {
|
|
297
|
+
const position = sphericalToPosition(target, viewState.alpha, beta, radius);
|
|
298
|
+
copyPlainVec3ToVectorLike(position, camera.position);
|
|
299
|
+
}
|
|
300
|
+
setCameraTarget(babylon, camera, target);
|
|
301
|
+
}
|
|
302
|
+
function cloneVector3(babylon, value) {
|
|
303
|
+
const Vector3 = babylon.Vector3;
|
|
304
|
+
if (!Vector3)
|
|
305
|
+
return { x: value.x ?? 0, y: value.y ?? 0, z: value.z ?? 0 };
|
|
306
|
+
return new Vector3(value.x ?? 0, value.y ?? 0, value.z ?? 0);
|
|
307
|
+
}
|
|
308
|
+
function setCameraTarget(babylon, camera, target) {
|
|
309
|
+
const cloned = cloneVector3(babylon, target);
|
|
310
|
+
if (typeof camera.setTarget === 'function') {
|
|
311
|
+
camera.setTarget(cloned);
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
camera.target = cloned;
|
|
315
|
+
}
|
|
316
|
+
function copyPlainVec3ToVectorLike(source, target) {
|
|
317
|
+
if (!target || typeof target !== 'object')
|
|
318
|
+
return;
|
|
319
|
+
const to = target;
|
|
320
|
+
if (typeof to.copyFrom === 'function') {
|
|
321
|
+
to.copyFrom(source);
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
to.x = source.x;
|
|
325
|
+
to.y = source.y;
|
|
326
|
+
to.z = source.z;
|
|
327
|
+
}
|
|
328
|
+
function sphericalToPosition(target, alpha, beta, radius) {
|
|
329
|
+
const sinBeta = Math.sin(beta);
|
|
330
|
+
return {
|
|
331
|
+
x: target.x + radius * sinBeta * Math.cos(alpha),
|
|
332
|
+
y: target.y + radius * Math.cos(beta),
|
|
333
|
+
z: target.z + radius * sinBeta * Math.sin(alpha),
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
function applyCameraViewport(babylon, camera, viewport) {
|
|
337
|
+
camera.viewport = babylon.Viewport
|
|
338
|
+
? new babylon.Viewport(viewport.x, viewport.y, viewport.width, viewport.height)
|
|
339
|
+
: viewport;
|
|
340
|
+
}
|
|
341
|
+
function viewportsEqual(left, right) {
|
|
342
|
+
return !!left
|
|
343
|
+
&& Math.abs(left.x - right.x) < 0.0001
|
|
344
|
+
&& Math.abs(left.y - right.y) < 0.0001
|
|
345
|
+
&& Math.abs(left.width - right.width) < 0.0001
|
|
346
|
+
&& Math.abs(left.height - right.height) < 0.0001;
|
|
347
|
+
}
|
|
348
|
+
function resolveSurfaceViewport(surfaceRect, canvasRect) {
|
|
349
|
+
const canvasWidth = Math.max(1, canvasRect.width);
|
|
350
|
+
const canvasHeight = Math.max(1, canvasRect.height);
|
|
351
|
+
const left = clamp01((surfaceRect.left - canvasRect.left) / canvasWidth);
|
|
352
|
+
const top = clamp01((surfaceRect.top - canvasRect.top) / canvasHeight);
|
|
353
|
+
const right = clamp01((surfaceRect.right - canvasRect.left) / canvasWidth);
|
|
354
|
+
const bottom = clamp01((surfaceRect.bottom - canvasRect.top) / canvasHeight);
|
|
355
|
+
const width = right - left;
|
|
356
|
+
const height = bottom - top;
|
|
357
|
+
if (width <= 0 || height <= 0)
|
|
358
|
+
return null;
|
|
359
|
+
return {
|
|
360
|
+
x: left,
|
|
361
|
+
y: 1 - bottom,
|
|
362
|
+
width,
|
|
363
|
+
height,
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
function resolveComparisonLayerMask(surface) {
|
|
367
|
+
if (surface.previewId === 'mesh-clone' || surface.projectionNodeId.endsWith(':compare-clone')) {
|
|
368
|
+
return MESH_CLONE_LAYER_MASK;
|
|
369
|
+
}
|
|
370
|
+
if (surface.previewId === 'instanced-mesh' || surface.projectionNodeId.endsWith(':compare-instance')) {
|
|
371
|
+
return INSTANCED_MESH_LAYER_MASK;
|
|
372
|
+
}
|
|
373
|
+
return null;
|
|
374
|
+
}
|
|
375
|
+
function applyProjectionLayerMask(projection, layerMask) {
|
|
376
|
+
applyNodeLayerMask(projection.root, layerMask);
|
|
377
|
+
for (const mesh of projection.outlineMeshes ?? [])
|
|
378
|
+
applyNodeLayerMask(mesh, layerMask);
|
|
379
|
+
}
|
|
380
|
+
function resolveProjectionFit(babylon, projection) {
|
|
381
|
+
const bounds = projection.root?.getHierarchyBoundingVectors?.();
|
|
382
|
+
if (bounds?.min && bounds?.max) {
|
|
383
|
+
const min = readComparisonVec3(bounds.min);
|
|
384
|
+
const max = readComparisonVec3(bounds.max);
|
|
385
|
+
const target = {
|
|
386
|
+
x: (min.x + max.x) / 2,
|
|
387
|
+
y: (min.y + max.y) / 2,
|
|
388
|
+
z: (min.z + max.z) / 2,
|
|
389
|
+
};
|
|
390
|
+
const size = {
|
|
391
|
+
x: Math.max(0, max.x - min.x),
|
|
392
|
+
y: Math.max(0, max.y - min.y),
|
|
393
|
+
z: Math.max(0, max.z - min.z),
|
|
394
|
+
};
|
|
395
|
+
const diagonal = Math.hypot(size.x, size.y, size.z);
|
|
396
|
+
return {
|
|
397
|
+
target,
|
|
398
|
+
requiredRadius: Number.isFinite(diagonal) && diagonal > 0 ? Math.max(diagonal * 1.6, 2) : 2,
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
return {
|
|
402
|
+
target: readComparisonVec3(projection.root?.position, { x: 0, y: 0, z: 0 }),
|
|
403
|
+
requiredRadius: 4,
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
function readComparisonVec3(value, fallback = { x: 0, y: 0, z: 0 }) {
|
|
407
|
+
if (!value || typeof value !== 'object')
|
|
408
|
+
return fallback;
|
|
409
|
+
const input = value;
|
|
410
|
+
return {
|
|
411
|
+
x: typeof input.x === 'number' && Number.isFinite(input.x) ? input.x : fallback.x,
|
|
412
|
+
y: typeof input.y === 'number' && Number.isFinite(input.y) ? input.y : fallback.y,
|
|
413
|
+
z: typeof input.z === 'number' && Number.isFinite(input.z) ? input.z : fallback.z,
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
function vectorsEqual(left, right) {
|
|
417
|
+
return Math.abs(left.x - right.x) < 0.0001
|
|
418
|
+
&& Math.abs(left.y - right.y) < 0.0001
|
|
419
|
+
&& Math.abs(left.z - right.z) < 0.0001;
|
|
420
|
+
}
|
|
421
|
+
function formatComparisonNumber(value) {
|
|
422
|
+
return Number.isFinite(value) ? value.toFixed(4) : '0.0000';
|
|
423
|
+
}
|
|
424
|
+
function applyNodeLayerMask(node, layerMask) {
|
|
425
|
+
if (!node || typeof node !== 'object')
|
|
426
|
+
return;
|
|
427
|
+
node.layerMask = layerMask;
|
|
428
|
+
const childMeshes = node.getChildMeshes?.(false) ?? [];
|
|
429
|
+
for (const child of childMeshes) {
|
|
430
|
+
if (child && typeof child === 'object')
|
|
431
|
+
child.layerMask = layerMask;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
function readRenderCanvasRect(scene) {
|
|
435
|
+
const canvas = scene.getEngine?.()?.getRenderingCanvas?.();
|
|
436
|
+
const rect = canvas?.getBoundingClientRect?.();
|
|
437
|
+
if (!rect || rect.width <= 0 || rect.height <= 0)
|
|
438
|
+
return null;
|
|
439
|
+
return rect;
|
|
440
|
+
}
|
|
441
|
+
function clamp01(value) {
|
|
442
|
+
if (!Number.isFinite(value))
|
|
443
|
+
return 0;
|
|
444
|
+
return Math.max(0, Math.min(1, value));
|
|
445
|
+
}
|
|
446
|
+
function clamp(value, min, max) {
|
|
447
|
+
if (!Number.isFinite(value))
|
|
448
|
+
return min;
|
|
449
|
+
return Math.max(min, Math.min(max, value));
|
|
450
|
+
}
|
|
451
|
+
//# sourceMappingURL=prefab-comparison-preview-controller.js.map
|
package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefab-comparison-preview-controller.js","sourceRoot":"","sources":["../src/prefab-comparison-preview-controller.ts"],"names":[],"mappings":"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"}
|
package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projection-asset-container-importer.d.ts","sourceRoot":"","sources":["../src/projection-asset-container-importer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oCAAoC,EACpC,+BAA+B,EAEhC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"projection-asset-container-importer.d.ts","sourceRoot":"","sources":["../src/projection-asset-container-importer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oCAAoC,EACpC,+BAA+B,EAEhC,MAAM,cAAc,CAAC;AAMtB,MAAM,WAAW,wCAAwC;IACvD,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IACtB,wBAAwB,CAAC,EAAE,CACzB,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,EAC7C,cAAc,CAAC,EAAE,OAAO,EACxB,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,KACrC,kDAAkD,CAAC;CACzD;AAED,MAAM,WAAW,kDAAkD;IACjE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,0CAA0C,GAClD;IACE,IAAI,EAAE,sBAAsB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,oCAAoC,CAAC;CAC/C,GACD;IACE,IAAI,EAAE,wBAAwB,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,oCAAoC,CAAC;CAC/C,GACD;IACE,IAAI,EAAE,wBAAwB,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,oCAAoC,CAAC;IAC9C,KAAK,EAAE,OAAO,CAAC;CAChB,GACD;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,oCAAoC,CAAC;CAC/C,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,oCAAoC,CAAC;IAC9C,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEN,MAAM,WAAW,8CAA8C;IAC7D,aAAa,CAAC,OAAO,EAAE,oCAAoC,GAAG,OAAO,CAAC,wCAAwC,CAAC,CAAC;IAChH,eAAe,CAAC,CAAC,OAAO,EAAE,oCAAoC,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAChI,iBAAiB,CAAC,CAAC,OAAO,EAAE,oCAAoC,GAAG,OAAO,CAAC;IAC3E,kBAAkB,CAAC,CAAC,KAAK,EAAE;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,oCAAoC,CAAC;KAC/C,GAAG,MAAM,CAAC;IACX,OAAO,CAAC,CAAC,KAAK,EAAE,0CAA0C,GAAG,IAAI,CAAC;CACnE;AAID,wBAAgB,6CAA6C,CAC3D,OAAO,EAAE,8CAA8C,GACtD,+BAA+B,CA2BjC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { assignProjectionSourceNodeMetadata, createProjectionSourceNameMapper, } from './projection-source-owner-path.js';
|
|
1
2
|
export function createBabylonAssetContainerProjectionImporter(options) {
|
|
2
3
|
const sceneCaches = new WeakMap();
|
|
3
4
|
return async (context) => {
|
|
@@ -10,14 +11,24 @@ export function createBabylonAssetContainerProjectionImporter(options) {
|
|
|
10
11
|
}
|
|
11
12
|
const container = await containerPromise;
|
|
12
13
|
ensureProjectionContainerResourcesInScene(container, context.scene);
|
|
13
|
-
const doNotInstantiate = options
|
|
14
|
-
?? hasProjectionSlotMaterialProfiles(context);
|
|
14
|
+
const doNotInstantiate = resolveProjectionInstantiationDoNotInstantiate(options, context);
|
|
15
15
|
options.onEvent?.({ type: 'instantiate', cacheKey, context, doNotInstantiate });
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
const sourceNameByInstanceName = new Map();
|
|
17
|
+
const entries = container.instantiateModelsToScene?.(createProjectionSourceNameMapper(sourceNameByInstanceName, sourceName => options.createInstanceName?.({ sourceName, cacheKey, context })
|
|
18
|
+
?? `${context.node.id}.projectionAsset.${sourceName}`), false, { doNotInstantiate });
|
|
19
|
+
return entries ? collectProjectionImportResult(entries, sourceNameByInstanceName) : null;
|
|
19
20
|
};
|
|
20
21
|
}
|
|
22
|
+
function resolveProjectionInstantiationDoNotInstantiate(options, context) {
|
|
23
|
+
switch (context.node.assetInstantiationMode) {
|
|
24
|
+
case 'meshClone': return true;
|
|
25
|
+
case 'instancedMesh': return false;
|
|
26
|
+
case 'auto':
|
|
27
|
+
default:
|
|
28
|
+
return options.shouldCloneMeshes?.(context)
|
|
29
|
+
?? hasProjectionSlotMaterialProfiles(context);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
21
32
|
function getProjectionContainerSceneCache(sceneCaches, scene) {
|
|
22
33
|
let sceneCache = sceneCaches.get(scene);
|
|
23
34
|
if (!sceneCache) {
|
|
@@ -50,6 +61,7 @@ async function resolveProjectionContainerCacheKey(options, context) {
|
|
|
50
61
|
return `${baseKey}|profiles:${stableProjectionCacheStringify({
|
|
51
62
|
artistMaterialKind: context.node.artistMaterialKind,
|
|
52
63
|
artistMaterialProfile: context.node.artistMaterialProfile,
|
|
64
|
+
artistMaterialSlotBindings: context.node.artistMaterialSlotBindings,
|
|
53
65
|
artistMaterialSlotProfiles: context.node.artistMaterialSlotProfiles,
|
|
54
66
|
})}`;
|
|
55
67
|
}
|
|
@@ -67,7 +79,8 @@ function readProjectionAssetUrlCandidate(metadata) {
|
|
|
67
79
|
return metadata.url ?? metadata.sourceUrl ?? metadata.src ?? metadata.path;
|
|
68
80
|
}
|
|
69
81
|
function hasProjectionSlotMaterialProfiles(context) {
|
|
70
|
-
return
|
|
82
|
+
return (context.node.artistMaterialSlotBindings?.length ?? 0) > 0
|
|
83
|
+
|| Object.keys(context.node.artistMaterialSlotProfiles ?? {}).length > 0;
|
|
71
84
|
}
|
|
72
85
|
function ensureProjectionContainerResourcesInScene(container, scene) {
|
|
73
86
|
addUniqueSceneResources(scene, scene.materials, container.materials, scene.addMaterial);
|
|
@@ -83,12 +96,12 @@ function addUniqueSceneResources(scene, existing, resources, addResource) {
|
|
|
83
96
|
addResource.call(scene, resource);
|
|
84
97
|
}
|
|
85
98
|
}
|
|
86
|
-
function collectProjectionImportResult(entries) {
|
|
99
|
+
function collectProjectionImportResult(entries, sourceNameByInstanceName) {
|
|
87
100
|
const meshes = [];
|
|
88
101
|
const transformNodes = [];
|
|
89
102
|
const seen = new Set();
|
|
90
103
|
for (const rootNode of entries.rootNodes ?? []) {
|
|
91
|
-
collectProjectionNode(rootNode, seen, meshes, transformNodes);
|
|
104
|
+
collectProjectionNode(rootNode, sourceNameByInstanceName, seen, meshes, transformNodes);
|
|
92
105
|
}
|
|
93
106
|
return {
|
|
94
107
|
meshes,
|
|
@@ -96,10 +109,11 @@ function collectProjectionImportResult(entries) {
|
|
|
96
109
|
animationGroups: entries.animationGroups ?? [],
|
|
97
110
|
};
|
|
98
111
|
}
|
|
99
|
-
function collectProjectionNode(node, seen, meshes, transformNodes) {
|
|
112
|
+
function collectProjectionNode(node, sourceNameByInstanceName, seen, meshes, transformNodes) {
|
|
100
113
|
if (!node || seen.has(node))
|
|
101
114
|
return;
|
|
102
115
|
seen.add(node);
|
|
116
|
+
assignProjectionSourceNodeMetadata(node, sourceNameByInstanceName);
|
|
103
117
|
if (isProjectionMeshLike(node)) {
|
|
104
118
|
meshes.push(node);
|
|
105
119
|
}
|
|
@@ -107,7 +121,7 @@ function collectProjectionNode(node, seen, meshes, transformNodes) {
|
|
|
107
121
|
transformNodes.push(node);
|
|
108
122
|
}
|
|
109
123
|
for (const child of readProjectionNodeChildren(node)) {
|
|
110
|
-
collectProjectionNode(child, seen, meshes, transformNodes);
|
|
124
|
+
collectProjectionNode(child, sourceNameByInstanceName, seen, meshes, transformNodes);
|
|
111
125
|
}
|
|
112
126
|
}
|
|
113
127
|
function readProjectionNodeChildren(node) {
|
package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projection-asset-container-importer.js","sourceRoot":"","sources":["../src/projection-asset-container-importer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"projection-asset-container-importer.js","sourceRoot":"","sources":["../src/projection-asset-container-importer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projection-pick-resolver.d.ts","sourceRoot":"","sources":["../src/projection-pick-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,8BAA8B;IAC7C,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,GAAG,CAAC;IACV,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQ7E;AAED,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAahF;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAKf;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,2BAA2B,CAQ7B;AAED,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,YAAY,EACnB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GACxC,OAAO,CAAC,2BAA2B,CAAC,CAkBtC;AAED,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,SAAS,OAAO,EAAE,GACvB,8BAA8B,GAAG,IAAI,CAEvC;AAED,wBAAgB,sCAAsC,CACpD,IAAI,EAAE,SAAS,OAAO,EAAE,GACvB,8BAA8B,EAAE,
|
|
1
|
+
{"version":3,"file":"projection-pick-resolver.d.ts","sourceRoot":"","sources":["../src/projection-pick-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,8BAA8B;IAC7C,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,GAAG,CAAC;IACV,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQ7E;AAED,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAahF;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAKf;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,2BAA2B,CAQ7B;AAED,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,YAAY,EACnB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GACxC,OAAO,CAAC,2BAA2B,CAAC,CAkBtC;AAED,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,SAAS,OAAO,EAAE,GACvB,8BAA8B,GAAG,IAAI,CAEvC;AAED,wBAAgB,sCAAsC,CACpD,IAAI,EAAE,SAAS,OAAO,EAAE,GACvB,8BAA8B,EAAE,CAsBlC;AAED,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,SAAS,8BAA8B,EAAE,GACpD,8BAA8B,EAAE,CAelC"}
|