forked from LeenkxTeam/LNXSDK
Patch_2
This commit is contained in:
@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user