Files
workinf_Blender_Wasm/web/protocol/animation-render-commands.ts
mes123456 62b45c9592
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
feat(web): continue scene pipeline authoring wave
2026-08-29 13:28:26 +08:00

51 lines
3.7 KiB
TypeScript

import type { FCurveInterpolation } from "./web-engine";
import type { WebEngineEditCommand } from "./web-engine";
type AnimationCommand<T extends WebEngineEditCommand["type"]> = Extract<WebEngineEditCommand, { type: T }>;
/** Typed constructors for animation, constraint and render property edits. */
export const animationRenderCommands = Object.freeze({
insertKeyframe(objectId: string, frame: number, property: AnimationCommand<"insertObjectKeyframe">["property"], interpolation: FCurveInterpolation = "BEZIER"): AnimationCommand<"insertObjectKeyframe"> {
return { type: "insertObjectKeyframe", objectId, frame, property, interpolation };
},
deleteKeyframe(objectId: string, frame: number, property?: AnimationCommand<"deleteObjectKeyframe">["property"]): AnimationCommand<"deleteObjectKeyframe"> {
return { type: "deleteObjectKeyframe", objectId, frame, ...(property ? { property } : {}) };
},
setConstraint(objectId: string, constraintName: string, enabled: boolean, influence: number): AnimationCommand<"setConstraint"> {
return { type: "setConstraint", objectId, constraintName, enabled, influence };
},
setActiveAction(objectId: string, actionId: string | null): AnimationCommand<"setActiveAction"> {
return { type: "setActiveAction", objectId, actionId };
},
setNLAStack(objectId: string, tracks: AnimationCommand<"setNLAStack">["tracks"], baseRevision?: number): AnimationCommand<"setNLAStack"> {
return { type: "setNLAStack", objectId, tracks, ...(baseRevision === undefined ? {} : { baseRevision }) };
},
setLightProperties(dataId: string, properties: AnimationCommand<"setLightProperties">["properties"]): AnimationCommand<"setLightProperties"> {
return { type: "setLightProperties", dataId, properties };
},
setCameraProperties(dataId: string, properties: AnimationCommand<"setCameraProperties">["properties"]): AnimationCommand<"setCameraProperties"> {
return { type: "setCameraProperties", dataId, properties };
},
setWorldProperties(dataId: string, properties: AnimationCommand<"setWorldProperties">["properties"]): AnimationCommand<"setWorldProperties"> {
return { type: "setWorldProperties", dataId, properties };
},
setSceneProperties(dataId: string, properties: AnimationCommand<"setSceneProperties">["properties"]): AnimationCommand<"setSceneProperties"> {
return { type: "setSceneProperties", dataId, properties: { ...properties } };
},
setSceneRenderSettings(dataId: string, properties: AnimationCommand<"setSceneRenderSettings">["properties"]): AnimationCommand<"setSceneRenderSettings"> {
return { type: "setSceneRenderSettings", dataId, properties: { ...properties } };
},
setSceneAudioSettings(dataId: string, properties: AnimationCommand<"setSceneAudioSettings">["properties"]): AnimationCommand<"setSceneAudioSettings"> {
return { type: "setSceneAudioSettings", dataId, properties: { ...properties } };
},
setSceneUnitSettings(dataId: string, properties: AnimationCommand<"setSceneUnitSettings">["properties"]): AnimationCommand<"setSceneUnitSettings"> {
return { type: "setSceneUnitSettings", dataId, properties: { ...properties } };
},
setSceneTimelineSettings(dataId: string, properties: AnimationCommand<"setSceneTimelineSettings">["properties"]): AnimationCommand<"setSceneTimelineSettings"> {
return { type: "setSceneTimelineSettings", dataId, properties: { ...properties } };
},
setScenePipelineSettings(dataId: string, properties: AnimationCommand<"setScenePipelineSettings">["properties"]): AnimationCommand<"setScenePipelineSettings"> {
return { type: "setScenePipelineSettings", dataId, properties: { ...properties } };
},
} satisfies Record<string, (...args: never[]) => WebEngineEditCommand>);