Cleanup
This commit is contained in:
@ -301,18 +301,18 @@ def export_data_impl(fp, sdk_path):
|
||||
for scene_name, asset_path in scene_targets:
|
||||
# Reset shader comparison arrays to prevent cross-scene shader merging
|
||||
assets.reset_shader_cons()
|
||||
|
||||
|
||||
scene = bpy.data.scenes[scene_name]
|
||||
|
||||
|
||||
try:
|
||||
if bpy.context.window.scene != scene:
|
||||
bpy.context.window.scene = scene
|
||||
bpy.context.view_layer.update()
|
||||
|
||||
|
||||
scene_depsgraph = bpy.context.evaluated_depsgraph_get()
|
||||
|
||||
|
||||
LeenkxExporter.export_scene(bpy.context, asset_path, scene=scene, depsgraph=scene_depsgraph, build_cache=build_cache)
|
||||
|
||||
|
||||
finally:
|
||||
if bpy.context.window.scene != initial_window_scene:
|
||||
bpy.context.window.scene = initial_window_scene
|
||||
@ -684,7 +684,7 @@ def _get_viewport_shmem_name(viewport_id):
|
||||
def _kill_viewport_process(viewport_id):
|
||||
"""Kill a specific viewport's Krom process."""
|
||||
global _viewport_processes
|
||||
|
||||
|
||||
if viewport_id in _viewport_processes:
|
||||
proc = _viewport_processes[viewport_id]
|
||||
try:
|
||||
@ -700,7 +700,7 @@ def _kill_viewport_process(viewport_id):
|
||||
def _kill_all_viewport_processes():
|
||||
"""Kill all viewport Krom processes."""
|
||||
global _viewport_processes
|
||||
|
||||
|
||||
for viewport_id in list(_viewport_processes.keys()):
|
||||
_kill_viewport_process(viewport_id)
|
||||
|
||||
@ -711,7 +711,7 @@ def _kill_all_viewport_processes():
|
||||
capture_output=True, text=True, timeout=5
|
||||
)
|
||||
if 'Krom.exe' in result.stdout:
|
||||
subprocess.run(['taskkill', '/F', '/IM', 'Krom.exe'],
|
||||
subprocess.run(['taskkill', '/F', '/IM', 'Krom.exe'],
|
||||
capture_output=True, timeout=5)
|
||||
import time
|
||||
time.sleep(0.3)
|
||||
@ -729,7 +729,7 @@ def run_viewport_runtime(viewport_id, width=1920, height=1080):
|
||||
_kill_viewport_process(viewport_id)
|
||||
|
||||
shmem_name = _get_viewport_shmem_name(viewport_id)
|
||||
|
||||
|
||||
wrd = bpy.data.worlds['Lnx']
|
||||
krom_location, krom_path = lnx.utils.krom_paths()
|
||||
path = lnx.utils.get_fp_build() + '/debug/krom'
|
||||
@ -744,7 +744,7 @@ def run_viewport_runtime(viewport_id, width=1920, height=1080):
|
||||
open(path + '/krom.patch', 'w', encoding='utf-8').close()
|
||||
|
||||
os.chdir(krom_location)
|
||||
|
||||
|
||||
cmd = [krom_path, path, path_resources]
|
||||
if lnx.utils.get_os() == 'win':
|
||||
cmd.append('--consolepid')
|
||||
@ -759,7 +759,7 @@ def run_viewport_runtime(viewport_id, width=1920, height=1080):
|
||||
cmd.append(str(width))
|
||||
cmd.append('--viewport-height')
|
||||
cmd.append(str(height))
|
||||
|
||||
|
||||
try:
|
||||
proc = subprocess.Popen(cmd)
|
||||
_viewport_processes[viewport_id] = proc
|
||||
@ -780,7 +780,7 @@ _viewport_proc_build = None # Separate process tracker for viewport builds
|
||||
def compile_viewport(assets_only=False):
|
||||
"""Compile for viewport mode using separate process tracking."""
|
||||
global _viewport_proc_build
|
||||
|
||||
|
||||
wrd = bpy.data.worlds['Lnx']
|
||||
fp = lnx.utils.get_fp()
|
||||
os.chdir(fp)
|
||||
@ -788,50 +788,50 @@ def compile_viewport(assets_only=False):
|
||||
node_path = lnx.utils.get_node_path()
|
||||
khamake_path = lnx.utils.get_khamake_path()
|
||||
cmd = [node_path, khamake_path, 'krom']
|
||||
|
||||
|
||||
ffmpeg_path = lnx.utils.get_ffmpeg_path()
|
||||
if ffmpeg_path not in (None, ''):
|
||||
cmd.append('--ffmpeg')
|
||||
cmd.append(ffmpeg_path)
|
||||
|
||||
|
||||
cmd.append('-g')
|
||||
cmd.append(lnx.utils.get_gapi())
|
||||
cmd.append('--shaderversion')
|
||||
cmd.append('330')
|
||||
|
||||
|
||||
if lnx.utils.get_khamake_threads() != 1:
|
||||
cmd.append('--parallelAssetConversion')
|
||||
cmd.append(str(lnx.utils.get_khamake_threads()))
|
||||
|
||||
|
||||
cmd.append('--to')
|
||||
cmd.append(lnx.utils.build_dir() + '/debug')
|
||||
|
||||
|
||||
if not wrd.lnx_verbose_output:
|
||||
cmd.append("--quiet")
|
||||
|
||||
|
||||
krom_js_path = lnx.utils.build_dir() + '/debug/krom/krom.js'
|
||||
if assets_only and os.path.exists(krom_js_path):
|
||||
cmd.append('--nohaxe')
|
||||
cmd.append('--noproject')
|
||||
|
||||
|
||||
log.info(f'Running: {" ".join(cmd)}')
|
||||
_viewport_proc_build = run_proc(cmd, viewport_build_done)
|
||||
|
||||
def viewport_build_done():
|
||||
"""Called when viewport build completes - launches all pending Krom processes."""
|
||||
global _viewport_build_in_progress, _viewport_pending_launches, _viewport_proc_build
|
||||
|
||||
|
||||
log.info('Viewport compilation finished')
|
||||
|
||||
|
||||
if _viewport_proc_build is None:
|
||||
_viewport_build_in_progress = False
|
||||
return
|
||||
|
||||
|
||||
result = _viewport_proc_build.poll()
|
||||
_viewport_proc_build = None
|
||||
_viewport_build_in_progress = False
|
||||
state.redraw_ui = True
|
||||
|
||||
|
||||
if result == 0:
|
||||
bpy.data.worlds['Lnx'].lnx_recompile = False
|
||||
|
||||
@ -1103,7 +1103,7 @@ def build_success():
|
||||
cmd.append(str(state.viewport_width))
|
||||
cmd.append('--viewport-height')
|
||||
cmd.append(str(state.viewport_height))
|
||||
|
||||
|
||||
elif state.target.startswith(('windows-hl', 'linux-hl', 'macos-hl')):
|
||||
log.info(f"Runtime Hashlink/C target: {state.target}")
|
||||
|
||||
@ -1111,7 +1111,7 @@ def build_success():
|
||||
|
||||
if not hl_build_dir:
|
||||
log.error(f"Could not find build directory for target {state.target}. Playback aborted.")
|
||||
return
|
||||
return
|
||||
|
||||
if state.target == 'windows-hl':
|
||||
vs_version_major = wrd.lnx_project_win_list_vs
|
||||
@ -1146,14 +1146,14 @@ def build_success():
|
||||
log.error(f'.vcxproj file not found in {hl_build_dir}. Cannot compile.')
|
||||
return
|
||||
vcxproj_path = found_vcxproj
|
||||
proj_name = os.path.splitext(os.path.basename(vcxproj_path))[0]
|
||||
proj_name = os.path.splitext(os.path.basename(vcxproj_path))[0]
|
||||
|
||||
msbuild_cmd = [
|
||||
msbuild_path,
|
||||
vcxproj_path,
|
||||
f'/p:Configuration={build_mode}',
|
||||
f'/p:Platform={platform}',
|
||||
'/m'
|
||||
'/m'
|
||||
]
|
||||
|
||||
log.info(f"Compiling {state.target} project with MSBuild...")
|
||||
@ -1183,7 +1183,7 @@ def build_success():
|
||||
return
|
||||
|
||||
log.info(f"Found compiled executable: {exe_path}")
|
||||
|
||||
|
||||
dest_exe_name = proj_name + '.exe'
|
||||
base_build_dir = lnx.utils.get_fp_build()
|
||||
dest_dir = os.path.join(base_build_dir, state.target)
|
||||
@ -1202,7 +1202,7 @@ def build_success():
|
||||
# TO DO switch from default Release
|
||||
build_mode = 'Release'
|
||||
proj_name = lnx.utils.blend_name()
|
||||
exe_path = str(hl_build_dir + "/" + build_mode)
|
||||
exe_path = str(hl_build_dir + "/" + build_mode)
|
||||
if not exe_path:
|
||||
log.error(f"Build finished, but could not find the executable for {state.target}.")
|
||||
return
|
||||
@ -1221,7 +1221,7 @@ def build_success():
|
||||
except subprocess.CalledProcessError as e:
|
||||
log.error(f"'make' compilation failed with return code {e.returncode}.")
|
||||
log.error(f"Make Error Output:\n{e.stderr}")
|
||||
return
|
||||
return
|
||||
except FileNotFoundError:
|
||||
log.error("'make' command not found. Ensure 'make' is installed and in your system's PATH.")
|
||||
return
|
||||
@ -1233,15 +1233,15 @@ def build_success():
|
||||
|
||||
dest_exe_name = lnx.utils.safesrc(wrd.lnx_project_name + '-' + wrd.lnx_project_version)
|
||||
base_build_dir = lnx.utils.get_fp_build()
|
||||
dest_dir = os.path.join(base_build_dir, state.target)
|
||||
dest_dir = os.path.join(base_build_dir, state.target)
|
||||
og_path = os.path.join(exe_path, dest_exe_name)
|
||||
dest_path = os.path.join(dest_dir, dest_exe_name)
|
||||
os.makedirs(dest_dir, exist_ok=True)
|
||||
|
||||
try:
|
||||
log.info(f"Moving '{og_path}' to '{dest_dir}'...")
|
||||
shutil.move(og_path, dest_dir)
|
||||
cmd = [dest_path]
|
||||
shutil.move(og_path, dest_dir)
|
||||
cmd = [dest_path]
|
||||
except Exception as e:
|
||||
log.error(f"Failed to move executable: {e}. Attempting to run from original location.")
|
||||
cmd = [exe_path]
|
||||
|
||||
@ -40,7 +40,7 @@ def add_world_defs():
|
||||
# Store contexts
|
||||
if rpdat.rp_hdr == False:
|
||||
wrd.world_defs += '_LDR'
|
||||
|
||||
|
||||
if lnx.utils.get_active_scene().world is not None:
|
||||
if lnx.utils.get_active_scene().world.lnx_light_ies_texture:
|
||||
wrd.world_defs += '_LightIES'
|
||||
|
||||
Reference in New Issue
Block a user