diff --git a/animatr_reference/Screenshot from 2026-04-19 19-38-06.png b/animatr_reference/Screenshot from 2026-04-19 19-38-06.png new file mode 100644 index 0000000..d38fdfe Binary files /dev/null and b/animatr_reference/Screenshot from 2026-04-19 19-38-06.png differ diff --git a/server/render.html b/server/render.html index 9059329..6caa871 100644 --- a/server/render.html +++ b/server/render.html @@ -60,6 +60,10 @@ for(var i=0;i=a.time && time<=b.time){ + if(a.hold){ + if(time>=b.time) return merge(layer.base,b.props); + return merge(layer.base,a.props); + } var raw=(time-a.time)/(b.time-a.time); var t=easing(b.easing,raw); return lerpProps(merge(layer.base,a.props), merge(layer.base,b.props), t); @@ -90,7 +94,7 @@ ctx.fillStyle=scene.canvas.background; ctx.fillRect(0,0,lw,lh); var am={}; for(var i=0;i=0;j--){ var layer=scene.layers[j]; if(!layer.visible) continue; var asset=am[layer.assetId]; if(!asset) continue; var p=sample(layer,time); diff --git a/src/App.vue b/src/App.vue index ae2b7f1..33f757f 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,8 @@ diff --git a/src/components/ExportDialog.vue b/src/components/ExportDialog.vue index 78315b6..76097d1 100644 --- a/src/components/ExportDialog.vue +++ b/src/components/ExportDialog.vue @@ -1,19 +1,19 @@ diff --git a/src/components/FullscreenPreview.vue b/src/components/FullscreenPreview.vue new file mode 100644 index 0000000..9355d73 --- /dev/null +++ b/src/components/FullscreenPreview.vue @@ -0,0 +1,458 @@ + + + + + diff --git a/src/components/PropertiesPanel.vue b/src/components/PropertiesPanel.vue index b888286..c4fe1f4 100644 --- a/src/components/PropertiesPanel.vue +++ b/src/components/PropertiesPanel.vue @@ -28,6 +28,11 @@ const selectedAsset = computed(() => { return store.scene.assets.find((a) => a.id === selected.value!.assetId) ?? null }) +const textAsset = computed(() => { + const a = selectedAsset.value + return a && a.kind === 'text' ? a : null +}) + const canFill = computed(() => { const a = selectedAsset.value return !!a && (a.kind === 'rect' || a.kind === 'circle' || a.kind === 'text') @@ -98,6 +103,10 @@ function removeKeyframeHere() { +