Files
PythonInUnreal/tools/ue_bootstrap.py
T
2026-10-31 17:03:41 +01:00

39 lines
1.5 KiB
Python

"""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)