feat(web): author scene collection visibility
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

This commit is contained in:
mes123456
2026-08-29 13:57:33 +08:00
parent b8695839ac
commit b6c64d01d6
44 changed files with 1928 additions and 38 deletions

Binary file not shown.

View File

@@ -684,6 +684,14 @@ function assertFutureCapability(payload: Extract<WebEngineRequest["command"], {
if (properties.samples !== undefined && (!Number.isSafeInteger(properties.samples) || properties.samples < 0 || properties.samples > 1000000)) throw report("RENDER_PROPERTY_INVALID", "Scene view layer samples are outside the bounded range");
return;
}
case "setSceneCollectionSettings": {
const scene = currentSnapshot?.scenes.find((candidate) => candidate.id === payload.dataId);
if (!scene || typeof payload.layerName !== "string" || payload.layerName.length === 0 || typeof payload.collectionId !== "string" || payload.collectionId.length === 0) throw report("RENDER_PROPERTY_INVALID", "Scene collection target is invalid");
const properties = payload.properties;
if (!validPropertyKeys(properties, ["exclude", "holdout", "indirectOnly", "hide"])) throw report("RENDER_PROPERTY_INVALID", "Scene collection properties are invalid");
for (const field of ["exclude", "holdout", "indirectOnly", "hide"] as const) if (properties[field] !== undefined && typeof properties[field] !== "boolean") throw report("RENDER_PROPERTY_INVALID", `Scene collection ${field} must be boolean`);
return;
}
case "setGeometryNodeGraph": {
const snapshot = currentSnapshot;
const availableResourceIds = new Set([