commit
8f7dabba5a
|
@ -8,6 +8,7 @@ import subprocess
|
|||
import threading
|
||||
import webbrowser
|
||||
import shlex
|
||||
import errno
|
||||
|
||||
import bpy
|
||||
|
||||
|
@ -647,6 +648,25 @@ def build_success():
|
|||
state.proc_publish_build = run_proc(cmd, done_gradlew_build)
|
||||
else:
|
||||
print('\nBuilding APK Warning: ANDROID_SDK_ROOT is not specified in environment variables and "Android SDK Path" setting is not specified in preferences: \n- If you specify an environment variable ANDROID_SDK_ROOT, then you need to restart Blender;\n- If you specify the setting "Android SDK Path" in the preferences, then repeat operation "Publish"')
|
||||
|
||||
# HTML5 After Publish
|
||||
if (target_name == 'html5'):
|
||||
if len(arm.utils.get_html5_copy_path()) > 0 and (wrd.arm_project_html5_copy):
|
||||
project_name = arm.utils.safestr(wrd.arm_project_name.replace(' ', '-')) + '-' + wrd.arm_project_version
|
||||
dst = os.path.join(arm.utils.get_html5_copy_path(), project_name)
|
||||
print("\nCopy files to " + dst)
|
||||
if os.path.exists(dst):
|
||||
shutil.rmtree(dst)
|
||||
try:
|
||||
shutil.copytree(project_path, dst)
|
||||
except OSError as exc:
|
||||
if exc.errno == errno.ENOTDIR:
|
||||
shutil.copy(project_path, dst)
|
||||
else: raise
|
||||
if len(arm.utils.get_link_web_server()) and (wrd.arm_project_html5_start_browser):
|
||||
link_html5_app = arm.utils.get_link_web_server() +'/'+ project_name
|
||||
print("Running a browser with a link " + link_html5_app)
|
||||
webbrowser.open(link_html5_app)
|
||||
|
||||
def done_gradlew_build():
|
||||
if state.proc_publish_build == None:
|
||||
|
|
|
@ -12,6 +12,20 @@ import arm.utils
|
|||
arm_version = '2020.11'
|
||||
arm_commit = '$Id$'
|
||||
|
||||
def get_project_html5_copy(self):
|
||||
return self.get('arm_project_html5_copy', False)
|
||||
|
||||
def set_project_html5_copy(self, value):
|
||||
self['arm_project_html5_copy'] = value
|
||||
if not value:
|
||||
self['arm_project_html5_start_browser'] = False
|
||||
|
||||
def get_project_html5_start_browser(self):
|
||||
return self.get('arm_project_html5_start_browser', False)
|
||||
|
||||
def set_project_html5_start_browser(self, value):
|
||||
self['arm_project_html5_start_browser'] = value
|
||||
|
||||
def set_project_name(self, value):
|
||||
value = arm.utils.safestr(value)
|
||||
if len(value) > 0:
|
||||
|
@ -82,6 +96,8 @@ def init_properties():
|
|||
bpy.types.World.arm_project_android_list_avd = EnumProperty(
|
||||
items=[(' ', ' ', ' ')],
|
||||
name="Emulator", update=assets.invalidate_compiler_cache)
|
||||
bpy.types.World.arm_project_html5_copy = BoolProperty(name="Copy Files To Specified Folder", description="Copy files to the folder specified in the settings after publish", default=False, update=assets.invalidate_compiler_cache, set=set_project_html5_copy, get=get_project_html5_copy)
|
||||
bpy.types.World.arm_project_html5_start_browser = BoolProperty(name="Run Browser After Copy", description="Run browser after copy", default=False, update=assets.invalidate_compiler_cache, set=set_project_html5_start_browser, get=get_project_html5_start_browser)
|
||||
bpy.types.World.arm_project_icon = StringProperty(name="Icon (PNG)", description="Exported project icon, must be a PNG image", default="", subtype="FILE_PATH", update=assets.invalidate_compiler_cache)
|
||||
bpy.types.World.arm_project_root = StringProperty(name="Root", description="Set root folder for linked assets", default="", subtype="DIR_PATH", update=assets.invalidate_compiler_cache)
|
||||
bpy.types.World.arm_physics = EnumProperty(
|
||||
|
|
|
@ -557,6 +557,39 @@ class ARM_PT_ArmoryExporterAndroidBuildAPKPanel(bpy.types.Panel):
|
|||
row.prop(wrd, 'arm_project_android_run_avd')
|
||||
row.enabled = arm.utils.get_project_android_build_apk() and len(arm.utils.get_android_emulator_name()) > 0
|
||||
|
||||
class ARM_PT_ArmoryExporterHTML5SettingsPanel(bpy.types.Panel):
|
||||
bl_label = "HTML5 Settings"
|
||||
bl_space_type = "PROPERTIES"
|
||||
bl_region_type = "WINDOW"
|
||||
bl_context = "render"
|
||||
bl_options = { 'DEFAULT_CLOSED' }
|
||||
bl_parent_id = "ARM_PT_ArmoryExporterPanel"
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
wrd = bpy.data.worlds['Arm']
|
||||
if len(wrd.arm_exporterlist) > 0:
|
||||
item = wrd.arm_exporterlist[wrd.arm_exporterlist_index]
|
||||
return item.arm_project_target == 'html5'
|
||||
else:
|
||||
return False
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
wrd = bpy.data.worlds['Arm']
|
||||
if wrd.arm_exporterlist_index >= 0 and len(wrd.arm_exporterlist) > 0:
|
||||
item = wrd.arm_exporterlist[wrd.arm_exporterlist_index]
|
||||
layout.enabled = item.arm_project_target == 'html5'
|
||||
# Options
|
||||
row = layout.row()
|
||||
row.prop(wrd, 'arm_project_html5_copy')
|
||||
row.enabled = len(arm.utils.get_html5_copy_path()) > 0
|
||||
row = layout.row()
|
||||
row.prop(wrd, 'arm_project_html5_start_browser')
|
||||
row.enabled = (len(arm.utils.get_html5_copy_path()) > 0) and (wrd.arm_project_html5_copy) and (len(arm.utils.get_link_web_server()) > 0)
|
||||
|
||||
class ARM_PT_ArmoryProjectPanel(bpy.types.Panel):
|
||||
bl_label = "Armory Project"
|
||||
bl_space_type = "PROPERTIES"
|
||||
|
@ -2209,6 +2242,7 @@ def register():
|
|||
bpy.utils.register_class(ARM_PT_ArmoryExporterAndroidPermissionsPanel)
|
||||
bpy.utils.register_class(ARM_PT_ArmoryExporterAndroidAbiPanel)
|
||||
bpy.utils.register_class(ARM_PT_ArmoryExporterAndroidBuildAPKPanel)
|
||||
bpy.utils.register_class(ARM_PT_ArmoryExporterHTML5SettingsPanel)
|
||||
bpy.utils.register_class(ARM_PT_ArmoryProjectPanel)
|
||||
bpy.utils.register_class(ARM_PT_ProjectFlagsPanel)
|
||||
bpy.utils.register_class(ARM_PT_ProjectFlagsDebugConsolePanel)
|
||||
|
@ -2277,6 +2311,7 @@ def unregister():
|
|||
bpy.utils.unregister_class(ARM_PT_MaterialPropsPanel)
|
||||
bpy.utils.unregister_class(ARM_PT_MaterialBlendingPropsPanel)
|
||||
bpy.utils.unregister_class(ARM_PT_ArmoryPlayerPanel)
|
||||
bpy.utils.unregister_class(ARM_PT_ArmoryExporterHTML5SettingsPanel)
|
||||
bpy.utils.unregister_class(ARM_PT_ArmoryExporterAndroidBuildAPKPanel)
|
||||
bpy.utils.unregister_class(ARM_PT_ArmoryExporterAndroidAbiPanel)
|
||||
bpy.utils.unregister_class(ARM_PT_ArmoryExporterAndroidPermissionsPanel)
|
||||
|
@ -2316,4 +2351,4 @@ def unregister():
|
|||
bpy.utils.unregister_class(ArmProxyApplyAllButton)
|
||||
bpy.utils.unregister_class(ArmSyncProxyButton)
|
||||
bpy.utils.unregister_class(ArmPrintTraitsButton)
|
||||
bpy.utils.unregister_class(ARM_PT_MaterialNodePanel)
|
||||
bpy.utils.unregister_class(ARM_PT_MaterialNodePanel)
|
|
@ -940,6 +940,14 @@ def get_android_open_build_apk_directory():
|
|||
addon_prefs = get_arm_preferences()
|
||||
return False if not hasattr(addon_prefs, 'android_open_build_apk_directory') else addon_prefs.android_open_build_apk_directory
|
||||
|
||||
def get_html5_copy_path():
|
||||
addon_prefs = get_arm_preferences()
|
||||
return '' if not hasattr(addon_prefs, 'html5_copy_path') else addon_prefs.html5_copy_path
|
||||
|
||||
def get_link_web_server():
|
||||
addon_prefs = get_arm_preferences()
|
||||
return '' if not hasattr(addon_prefs, 'link_web_server') else addon_prefs.link_web_server
|
||||
|
||||
def compare_version_blender_arm():
|
||||
return not (bpy.app.version[0] != 2 or bpy.app.version[1] != 83)
|
||||
|
||||
|
@ -963,4 +971,4 @@ def register(local_sdk=False):
|
|||
use_local_sdk = local_sdk
|
||||
|
||||
def unregister():
|
||||
pass
|
||||
pass
|
Loading…
Reference in a new issue