Merge branch 'master' into html5-settings

This commit is contained in:
E1e5en 2020-11-14 15:12:20 +03:00 committed by GitHub
commit 4b3aea0513
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 95 additions and 16 deletions

View file

@ -13,7 +13,7 @@ class QuaternionMathNode(ArmLogicTreeNode):
def set_bool(self, value):
self['property1'] = value
if value:
if (self.property0 == 'Module') or (self.property0 == 'DotProduct') or (self.property0 == 'ToAxisAngle'):
if ((self.property0 == 'Module') or (self.property0 == 'DotProduct') or (self.property0 == 'ToAxisAngle')) and (len(self.outputs) > 1):
self.outputs.remove(self.outputs.values()[-1]) # Module/DotProduct/ToAxisAngle
self.add_output('NodeSocketFloat', 'X') # Result X
self.add_output('NodeSocketFloat', 'Y') # Result Y
@ -26,12 +26,14 @@ class QuaternionMathNode(ArmLogicTreeNode):
if (self.property0 == 'ToAxisAngle'):
self.add_output('NodeSocketFloat', 'To Axis Angle') # ToAxisAngle
else:
if (self.property0 == 'Module') or (self.property0 == 'DotProduct') or (self.property0 == 'ToAxisAngle'):
if ((self.property0 == 'Module') or (self.property0 == 'DotProduct') or (self.property0 == 'ToAxisAngle')) and (len(self.outputs) > 1):
self.outputs.remove(self.outputs.values()[-1]) # Module/DotProduct/ToAxisAngle
self.outputs.remove(self.outputs.values()[-1]) # Result X
self.outputs.remove(self.outputs.values()[-1]) # Result Y
self.outputs.remove(self.outputs.values()[-1]) # Result Z
self.outputs.remove(self.outputs.values()[-1]) # Result W
# Remove X, Y, Z, W
for i in range(4):
if len(self.outputs) > 1:
self.outputs.remove(self.outputs.values()[-1])
else:
break
if (self.property0 == 'Module'):
self.add_output('NodeSocketFloat', 'Module') # Module
if (self.property0 == 'DotProduct'):

View file

@ -27,11 +27,14 @@ class VectorMathNode(ArmLogicTreeNode):
if (self.property0 == 'Dot Product'):
self.add_output('NodeSocketFloat', 'Scalar') # Scalar
else:
if (self.property0 == 'Length') or (self.property0 == 'Distance') or (self.property0 == 'Dot Product'):
if ((self.property0 == 'Length') or (self.property0 == 'Distance') or (self.property0 == 'Dot Product')) and (len(self.outputs) > 1):
self.outputs.remove(self.outputs.values()[-1]) # Distance/Length/Scalar
self.outputs.remove(self.outputs.values()[-1]) # Result X
self.outputs.remove(self.outputs.values()[-1]) # Result Y
self.outputs.remove(self.outputs.values()[-1]) # Result Z
# Remove X, Y, Z
for i in range(3):
if len(self.outputs) > 1:
self.outputs.remove(self.outputs.values()[-1])
else:
break
if (self.property0 == 'Length'):
self.add_output('NodeSocketFloat', 'Length') # Length
if (self.property0 == 'Distance'):

View file

@ -217,6 +217,10 @@ def export_data(fp, sdk_path):
import_logic = not state.is_publish and arm.utils.logic_editor_space() != None
write_data.write_khafilejs(state.is_play, export_physics, export_navigation, export_ui, state.is_publish, enable_dce, ArmoryExporter.import_traits, import_logic)
# Change project version (Build, Publish)
if (not state.is_play) and (wrd.arm_project_version_autoinc):
wrd.arm_project_version = arm.utils.arm.utils.change_version_project(wrd.arm_project_version)
# Write Main.hx - depends on write_khafilejs for writing number of assets
scene_name = arm.utils.get_project_scene_name()
write_data.write_mainhx(scene_name, resx, resy, state.is_play, state.is_publish)
@ -275,6 +279,9 @@ def compile(assets_only=False):
cmd.append('--vr')
cmd.append('webvr')
if arm.utils.get_pref_or_default('khamake_debug', False):
cmd.append('--debug')
if arm.utils.get_rp().rp_renderer == 'Raytracer':
cmd.append('--raytrace')
cmd.append('dxr')

View file

@ -1,5 +1,6 @@
import bpy
from bpy.props import *
import re
import arm.assets as assets
import arm.make
@ -25,15 +26,66 @@ def get_project_html5_start_browser(self):
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:
self['arm_project_name'] = value
else:
self['arm_project_name'] = arm.utils.blend_name()
def get_project_name(self):
return self.get('arm_project_name', arm.utils.blend_name())
def set_project_package(self, value):
value = arm.utils.safestr(value).replace('.', '_')
if (len(value) > 0) and (not value.isdigit()) and (not value[0].isdigit()):
self['arm_project_package'] = value
def get_project_package(self):
return self.get('arm_project_package', 'arm')
def set_version(self, value):
value = value.strip().replace(' ', '')
if re.match(r'^\d+(\.\d+){1,3}$', value) is not None:
check = True
v_i = value.split('.')
for item in v_i:
try:
i = int(item)
except ValueError:
check = False
break
if check:
self['arm_project_version'] = value
def get_version(self):
return self.get('arm_project_version', '1.0.0')
def set_project_bundle(self, value):
value = arm.utils.safestr(value)
v_a = value.strip().split('.')
if (len(value) > 0) and (not value.isdigit()) and (not value[0].isdigit()) and (len(v_a) > 1):
check = True
for item in v_a:
if (item.isdigit()) or (item[0].isdigit()):
check = False
break
if check:
self['arm_project_bundle'] = value
def get_project_bundle(self):
return self.get('arm_project_bundle', 'org.armory3d')
def init_properties():
global arm_version
bpy.types.World.arm_recompile = BoolProperty(name="Recompile", description="Recompile sources on next play", default=True)
bpy.types.World.arm_version = StringProperty(name="Version", description="Armory SDK version", default="")
bpy.types.World.arm_commit = StringProperty(name="Version Commit", description="Armory SDK version", default="")
bpy.types.World.arm_project_name = StringProperty(name="Name", description="Exported project name", default="", update=assets.invalidate_compiler_cache)
bpy.types.World.arm_project_package = StringProperty(name="Package", description="Package name for scripts", default="arm", update=assets.invalidate_compiler_cache)
bpy.types.World.arm_project_version = StringProperty(name="Version", description="Exported project version", default="1.0", update=assets.invalidate_compiler_cache)
bpy.types.World.arm_project_bundle = StringProperty(name="Bundle", description="Exported project bundle", default="", update=assets.invalidate_compiler_cache)
bpy.types.World.arm_project_name = StringProperty(name="Name", description="Exported project name", default="", update=assets.invalidate_compiler_cache, set=set_project_name, get=get_project_name)
bpy.types.World.arm_project_package = StringProperty(name="Package", description="Package name for scripts", default="arm", update=assets.invalidate_compiler_cache, set=set_project_package, get=get_project_package)
bpy.types.World.arm_project_version = StringProperty(name="Version", description="Exported project version", default="1.0.0", update=assets.invalidate_compiler_cache, set=set_version, get=get_version)
bpy.types.World.arm_project_version_autoinc = BoolProperty(name="Auto-increment Build Number", description="Auto-increment build number", default=True, update=assets.invalidate_compiler_cache)
bpy.types.World.arm_project_bundle = StringProperty(name="Bundle", description="Exported project bundle", default="org.armory3d", update=assets.invalidate_compiler_cache, set=set_project_bundle, get=get_project_bundle)
bpy.types.World.arm_project_android_sdk_compile = IntProperty(name="Compile Version SDK", description="Compile Android SDK Version", default=29, min=26, max=30, update=assets.invalidate_compiler_cache)
bpy.types.World.arm_project_android_sdk_min = IntProperty(name="Minimal Version SDK", description="Minimal Version Android SDK", default=14, min=14, max=30, update=assets.invalidate_compiler_cache)
bpy.types.World.arm_project_android_sdk_target = IntProperty(name="Target Version SDK", description="Target Version Android SDK", default=29, min=26, max=30, update=assets.invalidate_compiler_cache)

View file

@ -411,6 +411,7 @@ class ARM_PT_ArmoryExporterPanel(bpy.types.Panel):
col.prop(wrd, 'arm_project_package')
col.prop(wrd, 'arm_project_bundle')
col.prop(wrd, 'arm_project_version')
col.prop(wrd, 'arm_project_version_autoinc')
col.prop(wrd, 'arm_project_icon')
col.prop(wrd, 'arm_dce')
col.prop(wrd, 'arm_compiler_inline')
@ -430,8 +431,11 @@ class ARM_PT_ArmoryExporterAndroidSettingsPanel(bpy.types.Panel):
@classmethod
def poll(cls, context):
wrd = bpy.data.worlds['Arm']
item = wrd.arm_exporterlist[wrd.arm_exporterlist_index]
return item.arm_project_target == 'android-hl'
if len(wrd.arm_exporterlist) > 0:
item = wrd.arm_exporterlist[wrd.arm_exporterlist_index]
return item.arm_project_target == 'android-hl'
else:
return False
def draw(self, context):
layout = self.layout

View file

@ -955,6 +955,17 @@ def type_name_to_type(name: str) -> bpy.types.bpy_struct:
"""Return the Blender type given by its name, if registered."""
return bpy.types.bpy_struct.bl_rna_get_subclass_py(name)
def change_version_project(version: str) -> str:
ver = version.strip().replace(' ', '').split('.')
v_i = int(ver[len(ver) - 1]) + 1
ver[len(ver) - 1] = str(v_i)
version = ''
for i in ver:
if len(version) > 0:
version += '.'
version += i
return version
def register(local_sdk=False):
global use_local_sdk
use_local_sdk = local_sdk