Files
Forge-Engine/screens/animations/update_animation_clip.py
T
williamandwilliam 3f4ebc4527
Build and deploy / build-and-push (push) Successful in 17s
Build and deploy / deploy (push) Successful in 10s
first commit
2026-08-21 16:23:49 +02:00

34 lines
1.1 KiB
Python

import json
import db
from .ensure_animation_schema import ensure_animation_schema
# Champs modifiables après création — le déplacement/redimensionnement à la
# souris dans le panneau timeline n'envoie que start_time/duration, le
# formulaire d'édition du clip peut envoyer n'importe lequel des autres.
_UPDATABLE_FIELDS = {
"kind", "animate_name", "start_time", "duration", "delay", "easing", "iteration_count",
}
def update_animation_clip(slug, clip_id, **fields):
ensure_animation_schema(slug)
sets, vals = [], []
for key, value in fields.items():
if key == "custom_keyframes":
sets.append("custom_keyframes = ?")
vals.append(json.dumps(value) if value else None)
elif key in _UPDATABLE_FIELDS and value is not None:
if key in ("start_time", "duration", "delay"):
value = float(value)
sets.append(f"{key} = ?")
vals.append(value)
if not sets:
return
vals.append(clip_id)
conn = db.connect(slug)
conn.execute(f"UPDATE _animation_clips SET {', '.join(sets)} WHERE id = ?", vals)
conn.commit()
conn.close()