Expose asset quality
This commit is contained in:
parent
51a158fad0
commit
52c1b7b45d
|
@ -460,8 +460,10 @@ def on_compiled(mode): # build, play, play_viewport, publish
|
|||
elif wrd.arm_play_runtime == 'Krom':
|
||||
krom_location, krom_path = arm.utils.krom_paths()
|
||||
os.chdir(krom_location)
|
||||
# os.chdir(arm.utils.get_fp_build())
|
||||
args = [krom_path, arm.utils.get_fp_build() + '/window/krom', arm.utils.get_fp_build() + '/window/krom-resources', '--nosound']
|
||||
args = [krom_path, arm.utils.get_fp_build() + '/window/krom', arm.utils.get_fp_build() + '/window/krom-resources']
|
||||
# TODO: Krom sound freezes on MacOS
|
||||
if arm.utils.get_os() == 'mac':
|
||||
args.append('--nosound')
|
||||
if state.is_render:
|
||||
args.append('--nowindow')
|
||||
state.playproc = subprocess.Popen(args, stderr=subprocess.PIPE)
|
||||
|
|
|
@ -66,6 +66,8 @@ def init_properties():
|
|||
name = "Hscript", default='Disabled', description="Include Hscript library")
|
||||
bpy.types.World.arm_khafile = StringProperty(name="Khafile", description="Source appended to khafile.js")
|
||||
bpy.types.World.arm_khamake = StringProperty(name="Khamake", description="Command line params appended to khamake")
|
||||
bpy.types.World.arm_texture_quality = bpy.props.FloatProperty(name="Texture Quality", default=1.0, min=0.0, max=1.0, subtype='FACTOR')
|
||||
bpy.types.World.arm_sound_quality = bpy.props.FloatProperty(name="Sound Quality", default=0.9, min=0.0, max=1.0, subtype='FACTOR')
|
||||
bpy.types.World.arm_minimize = BoolProperty(name="Minimize Data", description="Export scene data in binary", default=True, update=assets.invalidate_compiled_data)
|
||||
bpy.types.World.arm_optimize_mesh = BoolProperty(name="Optimize Meshes", description="Export more efficient geometry indices, can prolong build times", default=False, update=assets.invalidate_mesh_data)
|
||||
bpy.types.World.arm_sampled_animation = BoolProperty(name="Sampled Animation", description="Export object animation as raw matrices", default=False, update=assets.invalidate_compiled_data)
|
||||
|
|
|
@ -404,6 +404,10 @@ class ArmoryProjectPanel(bpy.types.Panel):
|
|||
col.prop(wrd, 'arm_winmaximize')
|
||||
col.prop(wrd, 'arm_winminimize')
|
||||
|
||||
layout.label('Assets:')
|
||||
layout.prop(wrd, 'arm_texture_quality')
|
||||
layout.prop(wrd, 'arm_sound_quality')
|
||||
|
||||
layout.separator()
|
||||
layout.label('Modules:')
|
||||
layout.prop(wrd, 'arm_physics')
|
||||
|
|
|
@ -4,13 +4,14 @@ import shutil
|
|||
import arm.utils
|
||||
import arm.assets as assets
|
||||
import arm.make_state as state
|
||||
import glob
|
||||
|
||||
check_dot_path = False
|
||||
|
||||
def add_armory_library(sdk_path, name):
|
||||
return ('project.addLibrary("' + sdk_path + '/' + name + '");\n').replace('\\', '/')
|
||||
|
||||
def add_assets(path):
|
||||
def add_assets(path, quality=1.0):
|
||||
global check_dot_path
|
||||
if check_dot_path and '/.' in path: # Redirect path to local copy
|
||||
armpath = arm.utils.build_dir() + '/compiled/ArmoryAssets/'
|
||||
|
@ -20,18 +21,17 @@ def add_assets(path):
|
|||
if not os.path.isfile(localpath):
|
||||
shutil.copy(path, localpath)
|
||||
path = localpath
|
||||
return 'project.addAssets("' + path + '");\n'
|
||||
|
||||
s = 'project.addAssets("' + path + '"';
|
||||
if quality < 1.0:
|
||||
s += ', { quality: ' + str(quality) + ' }'
|
||||
s += ');\n'
|
||||
return s
|
||||
|
||||
# Write khafile.js
|
||||
def write_khafilejs(is_play, export_physics, export_navigation, export_ui, is_publish, enable_dce, in_viewport, import_traits, import_logicnodes):
|
||||
global check_dot_path
|
||||
|
||||
sdk_path = arm.utils.get_sdk_path()
|
||||
|
||||
# Merge duplicates and sort
|
||||
shader_references = sorted(list(set(assets.shaders)))
|
||||
shader_data_references = sorted(list(set(assets.shader_datas)))
|
||||
asset_references = sorted(list(set(assets.assets)))
|
||||
wrd = bpy.data.worlds['Arm']
|
||||
|
||||
with open('khafile.js', 'w') as f:
|
||||
|
@ -53,7 +53,9 @@ project.addSources('Sources');
|
|||
|
||||
# Auto-add assets located in Bundled directory
|
||||
if os.path.exists('Bundled'):
|
||||
f.write(add_assets("Bundled/**"))
|
||||
bundled = glob.glob("Bundled/*.*")
|
||||
for file in bundled:
|
||||
assets.add(file)
|
||||
|
||||
if not os.path.exists('Libraries/armory'):
|
||||
f.write(add_armory_library(sdk_path, 'armory'))
|
||||
|
@ -115,16 +117,32 @@ project.addSources('Sources');
|
|||
# Scene patch
|
||||
assets.add_khafile_def('arm_sceneload')
|
||||
|
||||
shader_references = sorted(list(set(assets.shaders)))
|
||||
for ref in shader_references:
|
||||
f.write("project.addShaders('" + ref + "');\n")
|
||||
|
||||
shader_data_references = sorted(list(set(assets.shader_datas)))
|
||||
for ref in shader_data_references:
|
||||
ref = ref.replace('\\', '/')
|
||||
f.write(add_assets(ref))
|
||||
|
||||
asset_references = sorted(list(set(assets.assets)))
|
||||
for ref in asset_references:
|
||||
ref = ref.replace('\\', '/')
|
||||
f.write(add_assets(ref))
|
||||
quality = 1.0
|
||||
print(ref)
|
||||
s = ref.lower()
|
||||
if s.endswith('.wav'):
|
||||
quality = wrd.arm_sound_quality
|
||||
elif s.endswith('.png') or s.endswith('.jpg'):
|
||||
quality = wrd.arm_texture_quality
|
||||
f.write(add_assets(ref, quality=quality))
|
||||
|
||||
if wrd.arm_sound_quality < 1.0 or state.target == 'html5':
|
||||
assets.add_khafile_def('arm_soundcompress')
|
||||
|
||||
if wrd.arm_texture_quality < 1.0:
|
||||
assets.add_khafile_def('arm_texcompress')
|
||||
|
||||
if wrd.arm_play_console:
|
||||
assets.add_khafile_def('arm_profile')
|
||||
|
|
Loading…
Reference in a new issue