from flask import request, jsonify import screens from core.flask_app import app from core.sprite_gate import forbid_admin_only_character @app.route("/game//scene-objects//personnage", methods=["POST"]) def scene_object_personnage_data(slug, object_id): """Mirror exact de routes/elements/element_set_personnage_data.py, mais pour un objet de scène — même réponse (animations résolues) pour relancer immédiatement l'aperçu animé côté client sans recharger la page (voir static/js/screen_edit/personnage-preview.js, réutilisable tel quel puisqu'il ne dépend que de data-object-id/data-personnage, pas de la table d'origine).""" body = request.get_json(silent=True) or {} obj = screens.get_scene_object(slug, object_id) if not obj: return jsonify({"error": "objet introuvable"}), 404 if body.get("source") == "forge" and body.get("forge_character"): forbid_admin_only_character(body["forge_character"]) screens.set_scene_object_personnage_data(slug, object_id, body) obj = screens.get_scene_object(slug, object_id) return jsonify({"ok": True, "animations": screens.resolve_personnage_animations(obj)})