Detect local armsdk

This commit is contained in:
unknown 2018-08-16 23:07:50 +02:00
parent 9e638fc93c
commit 43a3ab2d6e
7 changed files with 39 additions and 31 deletions

View file

@ -136,11 +136,20 @@ def bundled_sdk_path():
# /blender.exe
return bpy.app.binary_path.replace('\\', '/').rsplit('/', 1)[0] + '/armsdk/'
def get_fp():
if bpy.data.filepath == '':
return ''
s = bpy.data.filepath.split(os.path.sep)
s.pop()
return os.path.sep.join(s)
def get_sdk_path(context):
user_preferences = context.user_preferences
addon_prefs = user_preferences.addons["armory"].preferences
p = bundled_sdk_path()
if os.path.exists(p) and addon_prefs.sdk_bundled:
if os.path.exists(get_fp() + '/armsdk'):
return get_fp() + '/armsdk'
elif os.path.exists(p) and addon_prefs.sdk_bundled:
return p
else:
return addon_prefs.sdk_path
@ -329,18 +338,16 @@ class ArmAddonStartButton(bpy.types.Operator):
sdk_path = get_sdk_path(context)
if sdk_path == "":
self.report({"ERROR"}, "Configure SDK path first")
print("Configure Armory SDK path first")
return {"CANCELLED"}
scripts_path = sdk_path + "/armory/blender/"
sys.path.append(scripts_path)
local_sdk = os.path.exists(get_fp() + '/armsdk')
import start
start.register()
start.register(local_sdk=local_sdk)
ArmAddonStartButton.running = True
if not hasattr(bpy.app.handlers, 'scene_update_post'):
bpy.types.VIEW3D_HT_header.remove(draw_view3d_header)
return {"FINISHED"}
class ArmAddonStopButton(bpy.types.Operator):
@ -363,7 +370,7 @@ class ArmAddonUpdateButton(bpy.types.Operator):
def execute(self, context):
p = get_sdk_path(context)
if p == "":
self.report({"ERROR"}, "Configure SDK path first")
self.report({"ERROR"}, "Configure Armory SDK path first")
return {"CANCELLED"}
self.report({'INFO'}, 'Updating, check console for details. Please restart Blender after successful SDK update.')
print('Armory (add-on v' + str(bl_info['version']) + '): Cloning [armory, iron, haxebullet, haxerecast, zui] repositories')
@ -396,7 +403,7 @@ class ArmAddonRestoreButton(bpy.types.Operator):
def execute(self, context):
p = get_sdk_path(context)
if p == "":
self.report({"ERROR"}, "Configure SDK path first")
self.report({"ERROR"}, "Configure Armory SDK path first")
return {"CANCELLED"}
os.chdir(p)
restore_repo(p, 'armory')
@ -420,15 +427,15 @@ class ArmAddonInstallGitButton(bpy.types.Operator):
return {"FINISHED"}
@persistent
def on_scene_update_post(scene):
if hasattr(bpy.app.handlers, 'scene_update_post'):
bpy.app.handlers.scene_update_post.remove(on_scene_update_post)
def on_load_post(context):
# Detect local armsdk
# if os.path.exists(get_fp() + '/armsdk'):
# if ArmAddonStartButton.running:
# bpy.ops.arm_addon.stop()
if ArmAddonStartButton.running:
return
bpy.ops.arm_addon.start()
def draw_view3d_header(self, context):
layout = self.layout
layout.operator("arm_addon.start")
def register():
bpy.utils.register_class(ArmoryAddonPreferences)
bpy.utils.register_class(ArmAddonStartButton)
@ -436,10 +443,7 @@ def register():
bpy.utils.register_class(ArmAddonUpdateButton)
bpy.utils.register_class(ArmAddonRestoreButton)
bpy.utils.register_class(ArmAddonInstallGitButton)
if hasattr(bpy.app.handlers, 'scene_update_post'):
bpy.app.handlers.scene_update_post.append(on_scene_update_post)
else:
bpy.types.VIEW3D_HT_header.append(draw_view3d_header)
bpy.app.handlers.load_post.append(on_load_post)
def unregister():
bpy.ops.arm_addon.stop()
@ -449,6 +453,7 @@ def unregister():
bpy.utils.unregister_class(ArmAddonUpdateButton)
bpy.utils.unregister_class(ArmAddonRestoreButton)
bpy.utils.unregister_class(ArmAddonInstallGitButton)
bpy.app.handlers.load_post.remove(on_load_post)
if __name__ == "__main__":
register()

View file

@ -164,9 +164,6 @@ def register():
if hasattr(bpy.app.handlers, 'scene_update_pre'):
bpy.app.handlers.scene_update_pre.append(on_scene_update_pre)
bpy.app.handlers.load_post.append(on_load_post)
# On windows, on_load_post is not called when opening .blend file from explorer
if arm.utils.get_os() == 'win' and arm.utils.get_fp() != '':
on_load_post(None)
reload_blend_data()
def unregister():

View file

@ -81,8 +81,8 @@ def export_data(fp, sdk_path):
if os.path.isdir(build_dir + '/compiled/Shaders'):
shutil.rmtree(build_dir + '/compiled/Shaders', onerror=remove_readonly)
raw_shaders_path = sdk_path + 'armory/Shaders/'
assets_path = sdk_path + 'armory/Assets/'
raw_shaders_path = sdk_path + '/armory/Shaders/'
assets_path = sdk_path + '/armory/Assets/'
export_physics = bpy.data.worlds['Arm'].arm_physics != 'Disabled'
export_navigation = bpy.data.worlds['Arm'].arm_navigation != 'Disabled'
export_ui = bpy.data.worlds['Arm'].arm_ui != 'Disabled'

View file

@ -133,7 +133,7 @@ def build():
arm.api.drivers[rpdat.rp_driver]['make_rpath']()
return
assets_path = arm.utils.get_sdk_path() + 'armory/Assets/'
assets_path = arm.utils.get_sdk_path() + '/armory/Assets/'
wrd = bpy.data.worlds['Arm']
add_world_defs()

View file

@ -214,9 +214,9 @@ def parse_color(world, node):
hosek_path = 'armory/Assets/hosek/'
sdk_path = arm.utils.get_sdk_path()
# Use fake maps for now
assets.add(sdk_path + hosek_path + 'hosek_radiance.hdr')
assets.add(sdk_path + '/' + hosek_path + 'hosek_radiance.hdr')
for i in range(0, 8):
assets.add(sdk_path + hosek_path + 'hosek_radiance_' + str(i) + '.hdr')
assets.add(sdk_path + '/' + hosek_path + 'hosek_radiance_' + str(i) + '.hdr')
world.arm_envtex_name = 'hosek'
world.arm_envtex_num_mips = 8

View file

@ -102,11 +102,15 @@ def bundled_sdk_path():
# /blender.exe
return bpy.app.binary_path.replace('\\', '/').rsplit('/', 1)[0] + '/armsdk/'
# Passed by load_post handler when armsdk is found in project folder
use_local_sdk = False
def get_sdk_path():
user_preferences = bpy.context.user_preferences
addon_prefs = user_preferences.addons["armory"].preferences
p = bundled_sdk_path()
if os.path.exists(p) and addon_prefs.sdk_bundled:
if use_local_sdk:
return get_fp() + '/armsdk/'
elif os.path.exists(p) and addon_prefs.sdk_bundled:
return p
else:
return addon_prefs.sdk_path
@ -629,8 +633,9 @@ def check_default_props():
# Take blend file name
wrd.arm_project_name = arm.utils.blend_name()
def register():
def register(local_sdk=False):
global v8_found
global use_local_sdk
try:
engine = bpy.context.scene.render.engine
bpy.context.scene.render.engine = 'ARMORY'
@ -638,6 +643,7 @@ def register():
v8_found = True
except:
pass
use_local_sdk = local_sdk
def unregister():
pass

View file

@ -15,10 +15,10 @@ import arm.keymap
registered = False
def register():
def register(local_sdk=False):
global registered
registered = True
arm.utils.register()
arm.utils.register(local_sdk=local_sdk)
arm.props_traits_params.register()
arm.props_traits_props.register()
arm.props_traits.register()