Detect local armsdk
This commit is contained in:
parent
9e638fc93c
commit
43a3ab2d6e
|
@ -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()
|
||||
|
|
|
@ -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():
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in a new issue