Add camera resize and keyframe controls

This commit is contained in:
th committed 2026-06-08 00:33:57 +02:00
1 parent 3a93d6ea5d
commit b9a4b53109
5 files changed
+428 -17

No files matched your search

+18 -2
View File
@@ -136,6 +136,16 @@ function setCameraProp(patch: Partial<CameraProps>) {
store.upsertCameraKeyframe(store.playhead, patch)
}
function cameraOutputAspect(): number {
const width = Number.isFinite(store.scene.canvas.width) && store.scene.canvas.width > 0
? store.scene.canvas.width
: 1
const height = Number.isFinite(store.scene.canvas.height) && store.scene.canvas.height > 0
? store.scene.canvas.height
: 1
return width / height
}
const cameraX = computed<number>({
get: () => Math.round(sampledCamera.value?.x ?? 0),
set: (v) => setCameraProp({ x: v }),
@@ -146,11 +156,17 @@ const cameraY = computed<number>({
})
const cameraWidth = computed<number>({
get: () => Math.round(sampledCamera.value?.width ?? store.scene.canvas.width),
set: (v) => setCameraProp({ width: Math.max(1, v) }),
set: (v) => {
const width = Math.max(1, v)
setCameraProp({ width, height: Math.max(1, Math.round(width / cameraOutputAspect())) })
},
})
const cameraHeight = computed<number>({
get: () => Math.round(sampledCamera.value?.height ?? store.scene.canvas.height),
set: (v) => setCameraProp({ height: Math.max(1, v) }),
set: (v) => {
const height = Math.max(1, v)
setCameraProp({ width: Math.max(1, Math.round(height * cameraOutputAspect())), height })
},
})
function removeCameraKeyframeHere() {