feat(ui): add dedicated cancel button for batch rendering
This commit is contained in:
@@ -15,6 +15,7 @@ from . import properties, operators, panel
|
|||||||
classes = (
|
classes = (
|
||||||
properties.SceneRendererSettings,
|
properties.SceneRendererSettings,
|
||||||
operators.SCENERENDERER_OT_render_all,
|
operators.SCENERENDERER_OT_render_all,
|
||||||
|
operators.SCENERENDERER_OT_cancel_batch,
|
||||||
panel.SCENERENDERER_PT_panel,
|
panel.SCENERENDERER_PT_panel,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
10
operators.py
10
operators.py
@@ -12,6 +12,16 @@ def on_render_cancel(scene, depsgraph=None):
|
|||||||
SCENERENDERER_OT_render_all._is_rendering = False
|
SCENERENDERER_OT_render_all._is_rendering = False
|
||||||
SCENERENDERER_OT_render_all._cancel_requested = True
|
SCENERENDERER_OT_render_all._cancel_requested = True
|
||||||
|
|
||||||
|
class SCENERENDERER_OT_cancel_batch(bpy.types.Operator):
|
||||||
|
bl_idname = "scenerenderer.cancel_batch"
|
||||||
|
bl_label = "Cancel Batch Render"
|
||||||
|
bl_description = "Abort the current batch rendering process"
|
||||||
|
|
||||||
|
def execute(self, context):
|
||||||
|
SCENERENDERER_OT_render_all._cancel_requested = True
|
||||||
|
self.report({'INFO'}, "Batch render cancellation requested. Will stop after current frame or on ESC.")
|
||||||
|
return {'FINISHED'}
|
||||||
|
|
||||||
|
|
||||||
class SCENERENDERER_OT_render_all(bpy.types.Operator):
|
class SCENERENDERER_OT_render_all(bpy.types.Operator):
|
||||||
bl_idname = "scenerenderer.render_all"
|
bl_idname = "scenerenderer.render_all"
|
||||||
|
|||||||
11
panel.py
11
panel.py
@@ -27,4 +27,13 @@ class SCENERENDERER_PT_panel(bpy.types.Panel):
|
|||||||
layout.separator()
|
layout.separator()
|
||||||
row = layout.row(align=True)
|
row = layout.row(align=True)
|
||||||
row.scale_y = 2.0
|
row.scale_y = 2.0
|
||||||
row.operator("scenerenderer.render_all", text="Render All Scenes", icon='RENDER_STILL')
|
|
||||||
|
# Check if rendering is running by accessing the timer on the operator
|
||||||
|
from .operators import SCENERENDERER_OT_render_all
|
||||||
|
is_running = getattr(SCENERENDERER_OT_render_all, "_timer", None) is not None
|
||||||
|
|
||||||
|
if is_running:
|
||||||
|
row.operator("scenerenderer.cancel_batch", text="Cancel Batch Render", icon='CANCEL')
|
||||||
|
layout.label(text="Press ESC to force stop the active frame.", icon='INFO')
|
||||||
|
else:
|
||||||
|
row.operator("scenerenderer.render_all", text="Render All Scenes", icon='RENDER_STILL')
|
||||||
Reference in New Issue
Block a user