Merge play and build panels

This commit is contained in:
Lubos Lenco 2017-01-17 18:13:54 +01:00
parent d6de017566
commit 14d4ad1b96
4 changed files with 32 additions and 44 deletions

View file

@ -136,6 +136,8 @@ def compile_project(target_name=None, is_publish=False, watch=False, patch=False
# Set build command
if target_name == None:
target_name = wrd.arm_project_target
elif target_name == 'native':
target_name = ''
if armutils.get_os() == 'win':
node_path = sdk_path + '/nodejs/node.exe'
@ -313,6 +315,15 @@ def watch_patch():
state.compileproc = None
state.compileproc_finished = True
def runtime_to_target(in_viewport):
wrd = bpy.data.worlds['Arm']
if in_viewport or wrd.arm_play_runtime == 'Krom':
return 'krom'
elif wrd.arm_play_runtime == 'Native':
return 'native'
else:
return 'html5'
def play_project(self, in_viewport):
wrd = bpy.data.worlds['Arm']
@ -320,13 +331,7 @@ def play_project(self, in_viewport):
if armutils.with_krom() and in_viewport and bpy.context.area.type == 'VIEW_3D':
state.play_area = bpy.context.area
# Set target
if in_viewport or wrd.arm_play_runtime == 'Krom':
state.target = 'krom'
elif wrd.arm_play_runtime == 'Native':
state.target = 'native'
else:
state.target = 'html5'
state.target = runtime_to_target(in_viewport)
# Build data
build_project(is_play=True, in_viewport=in_viewport, target=state.target)

View file

@ -350,6 +350,9 @@ def write_result(l):
if res == None:
return None
curshader.write('float {0} = {1};'.format(res_var, res))
# Normal map already parsed, return
elif l.from_node.type == 'NORMAL_MAP':
return None
return res_var
def parse_vector_input(inp):

View file

@ -45,8 +45,7 @@ def init_properties():
('ios', 'iOS', 'ios'),
('android-native', 'Android', 'android-native'),
('krom', 'Krom', 'krom')],
name="Target", default='html5',
description='Build paltform')
name="Target", default='html5', description='Build paltform')
bpy.types.World.arm_project_target = target_prop
bpy.types.World.arm_project_name = StringProperty(name="Name", description="Exported project name", default="")
bpy.types.World.arm_project_package = StringProperty(name="Package", description="Package name for scripts", default="arm")
@ -100,7 +99,7 @@ def init_properties():
('Browser', 'Browser', 'Browser'),
('Native', 'C++', 'Native'),
('Krom', 'Krom', 'Krom')],
name="Runtime", description="Player runtime used when launching in new window", default='Krom')
name="Runtime", description="Player runtime used when launching in new window", default='Krom', update=assets.invalidate_shader_cache)
bpy.types.World.arm_loadbar = BoolProperty(name="Load Bar", description="Show asset loading progress on published builds", default=True)
# For object

View file

@ -344,18 +344,8 @@ class WorldPropsPanel(bpy.types.Panel):
# layout.prop(wrd, 'generate_fog_amounta')
# layout.prop(wrd, 'generate_fog_amountb')
class ArmoryHelpButton(bpy.types.Operator):
'''Open a website in the web-browser'''
bl_idname = "arm.help"
bl_label = "Help"
def execute(self, context):
webbrowser.open("http://armory3d.org/manual")
return{"FINISHED"}
# Menu in render region
class ArmoryPlayPanel(bpy.types.Panel):
bl_label = "Armory Play"
class ArmoryPlayerPanel(bpy.types.Panel):
bl_label = "Armory Player"
bl_space_type = "PROPERTIES"
bl_region_type = "WINDOW"
bl_context = "render"
@ -368,6 +358,16 @@ class ArmoryPlayPanel(bpy.types.Panel):
else:
layout.operator("arm.stop", icon="MESH_PLANE")
layout.prop(wrd, 'arm_play_runtime')
row = layout.row(align=True)
row.alignment = 'EXPAND'
if state.playproc == None and state.krom_running == False:
row.operator("arm.build")
else:
row.operator("arm.patch")
row.operator("arm.clean_menu")
layout.operator("arm.kode_studio")
layout.prop(wrd, 'arm_play_viewport_camera')
if wrd.arm_play_viewport_camera:
layout.prop(wrd, 'arm_play_viewport_navigation')
@ -380,27 +380,7 @@ class ArmoryPlayPanel(bpy.types.Panel):
if wrd.arm_play_live_patch:
layout.prop(wrd, 'arm_play_auto_build')
layout.operator("arm.render", icon="RENDER_STILL")
layout.operator("arm.help")
class ArmoryBuildPanel(bpy.types.Panel):
bl_label = "Armory Build"
bl_space_type = "PROPERTIES"
bl_region_type = "WINDOW"
bl_context = "render"
bl_options = {'DEFAULT_CLOSED'}
def draw(self, context):
layout = self.layout
wrd = bpy.data.worlds['Arm']
if state.playproc == None and state.krom_running == False:
layout.operator("arm.build")
else:
layout.operator("arm.patch")
layout.operator("arm.kode_studio")
layout.operator("arm.clean_menu")
layout.prop(wrd, 'arm_project_target')
layout.prop(wrd, 'arm_build_advanced')
if wrd.arm_build_advanced:
layout.prop(wrd, 'arm_cache_shaders')
layout.prop(wrd, 'arm_gpu_processing')
layout.prop(wrd, 'arm_minimize')
@ -533,9 +513,10 @@ class ArmoryBuildButton(bpy.types.Operator):
if not armutils.check_sdkpath(self):
return {"CANCELLED"}
state.target = make.runtime_to_target(in_viewport=False)
assets.invalidate_enabled = False
make.build_project()
make.compile_project(watch=True)
make.build_project(target=state.target)
make.compile_project(target_name=state.target, watch=True)
assets.invalidate_enabled = True
return{'FINISHED'}