Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-03-21 03:28:35 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-03-21 03:28:35 +0400
commit19ad96f200bd118f304f04204a884c75a9fc2b50 (patch)
tree74b68aa2fafcbd5a992240f6103846d618ab6d43 /system_demo_mode
parentd7d9686398dd1ebc9fc9816cc8bafdda4fc142b9 (diff)
demo mode no longer needs to write files to disk
Diffstat (limited to 'system_demo_mode')
-rw-r--r--system_demo_mode/demo_mode.py44
1 files changed, 28 insertions, 16 deletions
diff --git a/system_demo_mode/demo_mode.py b/system_demo_mode/demo_mode.py
index 54dfa2b2..efccd94a 100644
--- a/system_demo_mode/demo_mode.py
+++ b/system_demo_mode/demo_mode.py
@@ -69,7 +69,7 @@ global_state = {
"reset_anim": False,
"anim_cycles": 0, # count how many times we played the anim
"last_frame": -1,
- "render_out": "",
+ "is_render": False,
"render_time": "", # time render was finished.
"timer": None,
"basedir": "", # demo.py is stored here
@@ -77,6 +77,26 @@ global_state = {
}
+# -----------------------------------------------------------------------------
+# render handler - maintain "is_render"
+
+def handle_render_clear():
+ for ls in (bpy.app.handlers.render_complete, bpy.app.handlers.render_cancel):
+ while handle_render_done_cb in ls:
+ ls.remove(handle_render_done_cb)
+
+
+def handle_render_done_cb(self):
+ global_state["is_render"] = True
+
+
+def handle_render_init():
+ handle_render_clear()
+ bpy.app.handlers.render_complete.append(handle_render_done_cb)
+ bpy.app.handlers.render_cancel.append(handle_render_done_cb)
+ global_state["is_render"] = False
+
+
def demo_mode_auto_select():
play_area = 0
@@ -162,18 +182,9 @@ def demo_mode_init():
elif global_config["mode"] == 'RENDER':
print(" render")
- # setup tempfile
- handle, global_state["render_out"] = tempfile.mkstemp()
- os.close(handle)
- del handle
-
- if os.path.exists(global_state["render_out"]):
- print(" render!!!")
- os.remove(global_state["render_out"])
-
# setup scene.
scene = bpy.context.scene
- scene.render.filepath = global_state["render_out"]
+ scene.render.filepath = "TEMP_RENDER"
scene.render.image_settings.file_format = 'AVI_JPEG' if global_config["anim_render"] else 'PNG'
scene.render.use_file_extension = False
scene.render.use_placeholder = False
@@ -181,13 +192,14 @@ def demo_mode_init():
if global_config["anim_render"]:
bpy.ops.render.render('INVOKE_DEFAULT', animation=True)
else:
- bpy.ops.render.render('INVOKE_DEFAULT', write_still=True)
+ bpy.ops.render.render('INVOKE_DEFAULT') # write_still=True, no need to write now.
+
+ handle_render_init()
+
except RuntimeError: # no camera for eg:
import traceback
traceback.print_exc()
- open(global_state["render_out"], 'w').close() # touch so we move on.
-
else:
raise Exception("Unsupported mode %r" % global_config["mode"])
@@ -254,14 +266,14 @@ def demo_mode_update():
# --------------------------------------------------------------------------
# RENDER MODE
elif global_config["mode"] == 'RENDER':
- if os.path.exists(global_state["render_out"]):
+ if global_state["is_render"]:
# wait until the time has passed
# XXX, todo, if rendering an anim we need some way to check its done.
if global_state["render_time"] == -1.0:
global_state["render_time"] = time.time()
else:
if time.time() - global_state["render_time"] > global_config["display_render"]:
- os.remove(global_state["render_out"])
+ handle_render_clear()
demo_mode_next_file()
return
else: