This commit is contained in:
2026-02-24 17:35:26 -08:00
parent 1c3c30e6ce
commit d45c632dcd
28 changed files with 1982 additions and 97 deletions

View File

@ -37,6 +37,7 @@ else:
_active_threads: Dict[threading.Thread, Callable] = {}
_last_poll_time = 0.0
_consecutive_empty_polls = 0
_last_render_engine = None
@persistent
def on_depsgraph_update_post(self):
@ -141,6 +142,43 @@ def always() -> float:
return 0.5
def check_render_engine() -> float:
global _last_render_engine
try:
scene = None
if hasattr(bpy.context, 'scene') and bpy.context.scene is not None:
scene = bpy.context.scene
elif len(bpy.data.scenes) > 0:
scene = bpy.data.scenes[0]
if scene is None:
return 1.0
current_engine = scene.render.engine
if _last_render_engine != current_engine:
if current_engine == 'KROM_VIEWPORT':
try:
import lnx.make_world as make_world
make_world.build()
except Exception as e:
log.warn(f'World shader build failed: {e}')
elif _last_render_engine == 'KROM_VIEWPORT':
try:
make.stop_viewport()
except Exception as e:
log.warn(f'Failed to stop viewport: {e}')
_last_render_engine = current_engine
except Exception as e:
print(f"Engine Error: {e}")
import traceback
traceback.print_exc()
return 0.5
def poll_threads() -> float:
"""
@ -389,6 +427,7 @@ def register():
bpy.app.timers.register(always, persistent=True)
bpy.app.timers.register(poll_threads, persistent=True)
bpy.app.timers.register(check_render_engine, persistent=True)
if lnx.utils.get_fp() != '':
# TODO: On windows, on_load_post is not called when opening .blend file from explorer
@ -405,6 +444,7 @@ def register():
def unregister():
unload_py_libraries()
bpy.app.timers.unregister(check_render_engine)
bpy.app.timers.unregister(poll_threads)
bpy.app.timers.unregister(always)