54 lines
3.9 KiB
TypeScript
54 lines
3.9 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 } };
|
|
},
|
|
setSceneBindings(dataId: string, properties: AnimationCommand<"setSceneBindings">["properties"]): AnimationCommand<"setSceneBindings"> {
|
|
return { type: "setSceneBindings", dataId, properties: { ...properties } };
|
|
},
|
|
} satisfies Record<string, (...args: never[]) => WebEngineEditCommand>);
|