"""Entry point for -ExecutePythonScript; preserve the editor until MRQ finishes.""" import json import os from pathlib import Path import runpy import sys import traceback import unreal root = Path(__file__).resolve().parents[1] sys.path.insert(0, str(root / "Content/Python")) from ue_workshop.progress import report try: unreal.EditorPythonScripting.set_keep_python_script_alive(True) report("preparing") namespace = runpy.run_path(os.environ["WORKSHOP_SCRIPT"], run_name="__main__") from ue_workshop import render if not render.is_rendering() and (os.environ.get("WORKSHOP_RENDER") == "1" or os.environ.get("WORKSHOP_SINGLE_FRAME")): if "shot" not in namespace: raise RuntimeError("Opcja --render wymaga zmiennej shot w skrypcie.") frame = os.environ.get("WORKSHOP_SINGLE_FRAME") renderer = namespace.get("renderer") or render.Renderer() renderer.render(namespace["shot"], single_frame=int(frame) if frame else None) if not render.is_rendering(): render._write_status({"success": True, "state": "script_finished"}) report("closing") unreal.EditorPythonScripting.set_keep_python_script_alive(False) except Exception: error = traceback.format_exc() unreal.log_error(error) status = os.environ.get("WORKSHOP_STATUS") if status: Path(status).write_text(json.dumps({"success": False, "error": error}), encoding="utf-8") report("closing") unreal.EditorPythonScripting.set_keep_python_script_alive(False)