39 lines
1.5 KiB
Python
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)
|