Advance Blender WebEngine N-015 through N-022 parity
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
import { parseNlaTracks, type NlaTrackIR } from "./nla";
|
||||
import { parseGreasePencilData, type GreasePencilDataIR } from "./grease-pencil";
|
||||
import { parseCompositorGraph, type CompositorGraphIR } from "./compositor";
|
||||
import { parseSequencerTimeline, type SequencerTimelineIR } from "./sequencer";
|
||||
import { parseTrackingMaskProject, type TrackingMaskProjectIR } from "./tracking-mask";
|
||||
|
||||
export type SceneNodeType =
|
||||
| "EMPTY"
|
||||
@@ -434,6 +437,10 @@ export interface SceneIR {
|
||||
tint?: number;
|
||||
whiteBalanceStatus?: "AVAILABLE" | "BLOCKED";
|
||||
};
|
||||
compositorGraph?: CompositorGraphIR;
|
||||
compositorStatus?: "AVAILABLE" | "BLOCKED";
|
||||
sequencerTimeline?: SequencerTimelineIR;
|
||||
sequencerStatus?: "AVAILABLE" | "BLOCKED";
|
||||
}
|
||||
|
||||
export interface SceneSnapshotIR {
|
||||
@@ -465,6 +472,8 @@ export interface SceneSnapshotIR {
|
||||
nonMeshData?: NonMeshDataIR[];
|
||||
vfonts?: VFontResourceIR[];
|
||||
greasePencils?: GreasePencilDataIR[];
|
||||
trackingMasks?: TrackingMaskProjectIR;
|
||||
trackingMaskStatus?: "AVAILABLE" | "BLOCKED";
|
||||
libraries?: Array<{
|
||||
id: string;
|
||||
name: string;
|
||||
@@ -1001,6 +1010,20 @@ export function parseSceneSnapshotIR(value: unknown): SceneSnapshotIR {
|
||||
for (const field of ["temperature", "tint"] as const) if (scene.colorManagement[field] !== undefined) requireNumber(scene.colorManagement[field], `scenes[${index}].colorManagement.${field}`);
|
||||
if (scene.colorManagement.whiteBalanceStatus !== undefined && !["AVAILABLE", "BLOCKED"].includes(scene.colorManagement.whiteBalanceStatus as string)) throw new Error(`scenes[${index}].colorManagement.whiteBalanceStatus is invalid`);
|
||||
}
|
||||
if (scene.compositorStatus !== undefined && !["AVAILABLE", "BLOCKED"].includes(scene.compositorStatus as string)) {
|
||||
throw new Error(`scenes[${index}].compositorStatus is invalid`);
|
||||
}
|
||||
if (scene.compositorGraph !== undefined) {
|
||||
parseCompositorGraph(scene.compositorGraph);
|
||||
if (scene.compositorStatus !== "AVAILABLE") throw new Error(`scenes[${index}].compositorStatus must be AVAILABLE when a graph is present`);
|
||||
}
|
||||
if (scene.sequencerStatus !== undefined && !["AVAILABLE", "BLOCKED"].includes(scene.sequencerStatus as string)) {
|
||||
throw new Error(`scenes[${index}].sequencerStatus is invalid`);
|
||||
}
|
||||
if (scene.sequencerTimeline !== undefined) {
|
||||
parseSequencerTimeline(scene.sequencerTimeline);
|
||||
if (scene.sequencerStatus !== "AVAILABLE") throw new Error(`scenes[${index}].sequencerStatus must be AVAILABLE when a timeline is present`);
|
||||
}
|
||||
}
|
||||
for (const [index, animation] of (value.animations as unknown[]).entries()) {
|
||||
if (!isRecord(animation)) throw new Error(`SceneIR.animations[${index}] must be an object`);
|
||||
@@ -1025,5 +1048,12 @@ export function parseSceneSnapshotIR(value: unknown): SceneSnapshotIR {
|
||||
}
|
||||
}
|
||||
if (value.nlaTracks !== undefined) parseNlaTracks(value.nlaTracks);
|
||||
if (value.trackingMaskStatus !== undefined && !["AVAILABLE", "BLOCKED"].includes(value.trackingMaskStatus as string)) {
|
||||
throw new Error("SceneIR.trackingMaskStatus is invalid");
|
||||
}
|
||||
if (value.trackingMasks !== undefined) {
|
||||
parseTrackingMaskProject(value.trackingMasks);
|
||||
if (value.trackingMaskStatus !== "AVAILABLE") throw new Error("SceneIR.trackingMaskStatus must be AVAILABLE when trackingMasks is present");
|
||||
}
|
||||
return value as unknown as SceneSnapshotIR;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user