This commit is contained in:
Lubos Lenco 2017-08-10 14:10:37 +02:00
parent 03279952d7
commit f24324a903
34 changed files with 30 additions and 48 deletions

View file

@ -6,7 +6,6 @@ import iron.system.Input;
import iron.math.Vec4;
import iron.math.Quat;
@:keep
class ArcBall extends Trait {
public function new() {

View file

@ -6,7 +6,6 @@ import iron.system.Input;
import iron.math.Vec4;
import iron.math.Quat;
@:keep
class Character extends Trait {
var speed = 0.0;

View file

@ -6,7 +6,6 @@ import iron.object.Object;
import armory.trait.internal.PhysicsWorld;
import armory.trait.internal.CameraController;
@:keep
class FirstPersonController extends CameraController {
#if (!arm_physics)

View file

@ -3,7 +3,6 @@ package armory.trait;
import iron.Trait;
import iron.object.MeshObject;
@:keep
class MirrorTexture extends Trait {
var cameraName:String;

View file

@ -5,7 +5,6 @@ import iron.math.Vec4;
import iron.math.Quat;
import iron.system.Tween;
@:keep
class NavAgent extends Trait {
var path:Array<Vec4> = null;

View file

@ -2,7 +2,6 @@ package armory.trait;
import iron.Trait;
@:keep
class NavCrowd extends Trait {
public function new() {

View file

@ -9,7 +9,6 @@ import iron.Trait;
import iron.data.Data;
import iron.math.Vec4;
@:keep
class NavMesh extends Trait {
#if (!arm_navigation)

View file

@ -10,7 +10,6 @@ import armory.trait.internal.PhysicsWorld;
import haxebullet.Bullet;
#end
@:keep
class PhysicsDrag extends Trait {
#if (!arm_physics)

View file

@ -2,7 +2,6 @@ package armory.trait;
import iron.Trait;
@:keep
class SceneInstance extends Trait {
function safeFilename(s:String) {

View file

@ -3,7 +3,6 @@ package armory.trait;
import iron.math.Vec4;
import armory.trait.internal.CameraController;
@:keep
class SidescrollerController extends CameraController {
#if (!arm_physics)

View file

@ -5,7 +5,6 @@ import iron.system.Input;
import armory.trait.internal.PhysicsWorld;
import armory.trait.internal.CameraController;
@:keep
class ThirdPersonController extends CameraController {
#if (!arm_physics)

View file

@ -6,7 +6,6 @@ import iron.system.Time;
import iron.object.CameraObject;
import iron.math.Vec4;
@:keep
class VRNavigation extends Trait {
#if arm_vr

View file

@ -10,7 +10,6 @@ import armory.trait.internal.PhysicsWorld;
import haxebullet.Bullet;
#end
@:keep
class VehicleBody extends Trait {
#if (!arm_physics)

View file

@ -6,7 +6,6 @@ import iron.system.Time;
import iron.object.CameraObject;
import iron.math.Vec4;
@:keep
class WalkNavigation extends Trait {
static inline var speed = 5.0;

View file

@ -5,7 +5,6 @@ import iron.system.Input;
import iron.object.Transform;
import iron.object.CameraObject;
@:keep
class CameraController extends Trait {
#if (!arm_physics)

View file

@ -6,7 +6,6 @@ import zui.Zui;
import zui.Canvas;
#end
@:keep
class CanvasScript extends Trait {
#if arm_ui

View file

@ -10,7 +10,6 @@ import zui.Zui;
import zui.Id;
#end
@:keep
class DebugConsole extends Trait {
#if (!arm_profile)

View file

@ -2,7 +2,6 @@ package armory.trait.internal;
import iron.Trait;
@:keep
class JSScript extends Trait {
static var api:JSScriptAPI = null;

View file

@ -2,7 +2,6 @@ package armory.trait.internal;
#if cpp
@:keep
class JSScriptAPI { }
#else

View file

@ -1,6 +1,5 @@
package armory.trait.internal;
@:keep
class LoadBar {
public static function render(g:kha.graphics2.Graphics) {

View file

@ -5,7 +5,6 @@ import kha.Video;
import iron.Trait;
import iron.object.MeshObject;
@:keep
class MovieTexture extends Trait {
var video:Video;

View file

@ -5,7 +5,6 @@ import haxerecast.Recast;
import armory.trait.NavMesh;
#end
@:keep
class Navigation extends iron.Trait {
#if (!arm_navigation)

View file

@ -9,7 +9,6 @@ import iron.data.Data;
import iron.data.MaterialData;
import iron.data.MaterialData.MaterialContext;
@:keep
class PathTracer extends Trait {
var context:MaterialContext;

View file

@ -12,7 +12,6 @@ import armory.trait.internal.PhysicsWorld;
import haxebullet.Bullet;
#end
@:keep
class PhysicsConstraint extends Trait {
#if (!arm_physics)
public function new() { super(); }

View file

@ -12,7 +12,6 @@ import armory.trait.internal.PhysicsWorld;
import haxebullet.Bullet;
#end
@:keep
class PhysicsHook extends Trait {
#if (!arm_physics)
public function new() { super(); }

View file

@ -22,7 +22,6 @@ class ContactPair {
}
}
@:keep
class PhysicsWorld extends Trait {
#if (!arm_physics)

View file

@ -8,7 +8,6 @@ import iron.math.Vec4;
import iron.object.Transform;
import iron.object.MeshObject;
@:keep
class RigidBody extends Trait {
#if (!arm_physics)

View file

@ -12,7 +12,6 @@ import armory.trait.internal.PhysicsWorld;
import haxebullet.Bullet;
#end
@:keep
class SoftBody extends Trait {
#if (!arm_physics_soft)
public function new() { super(); }

View file

@ -6,7 +6,6 @@ import iron.object.Transform;
import iron.system.Input;
import iron.math.RayCaster;
@:keep
class SpaceArmory extends Trait {
var gizmo:Object;

View file

@ -2595,6 +2595,7 @@ class ArmoryExporter:
x['type'] = 'Script'
x['class_name'] = 'armory.trait.internal.PhysicsWorld'
self.output['traits'].append(x)
ArmoryExporter.import_traits.append(x['class_name'])
if bpy.data.worlds['Arm'].arm_navigation != 'Disabled' and ArmoryExporter.export_navigation:
if not 'traits' in self.output:
self.output['traits'] = []
@ -2602,6 +2603,7 @@ class ArmoryExporter:
x['type'] = 'Script'
x['class_name'] = 'armory.trait.internal.Navigation'
self.output['traits'].append(x)
ArmoryExporter.import_traits.append(x['class_name'])
# Write embedded data references
if len(assets.embedded_data) > 0:
@ -2695,6 +2697,7 @@ class ArmoryExporter:
ArmoryExporter.compress_enabled = False
if not hasattr(ArmoryExporter, 'in_viewport'):
ArmoryExporter.in_viewport = False
ArmoryExporter.import_traits = [] # Referenced traits
ArmoryExporter.option_mesh_only = False
ArmoryExporter.option_mesh_per_file = True
ArmoryExporter.option_optimize_mesh = bpy.data.worlds['Arm'].arm_optimize_mesh
@ -2992,6 +2995,9 @@ class ArmoryExporter:
co['use_offset'] = constr.use_offset
co['influence'] = constr.influence
o['constraints'].append(co)
for x in o['traits']:
ArmoryExporter.import_traits.append(x['class_name'])
def add_hook_trait(self, o, bobject, target_name, group_name):
hook_trait = {}

View file

@ -90,7 +90,7 @@ def export_data(fp, sdk_path, is_play=False, is_publish=False, in_viewport=False
physics_found = False
navigation_found = False
ui_found = False
ArmoryExporter.compress_enabled = is_publish
ArmoryExporter.compress_enabled = is_publish and wrd.arm_asset_compression
ArmoryExporter.in_viewport = in_viewport
for scene in bpy.data.scenes:
if scene.game_export:
@ -141,13 +141,13 @@ def export_data(fp, sdk_path, is_play=False, is_publish=False, in_viewport=False
# Write khafile.js
enable_dce = is_publish and wrd.arm_dce
write_data.write_khafilejs(is_play, export_physics, export_navigation, export_ui, is_publish, enable_dce, in_viewport)
import_logic = not is_publish and arm.utils.logic_editor_space() != None
write_data.write_khafilejs(is_play, export_physics, export_navigation, export_ui, is_publish, enable_dce, in_viewport, ArmoryExporter.import_traits, import_logic)
# Write Main.hx - depends on write_khafilejs for writing number of assets
resx, resy = arm.utils.get_render_resolution(arm.utils.get_active_scene())
# Import all logic nodes for patching if logic is being edited
import_logic = arm.utils.logic_editor_space() != None
write_data.write_main(resx, resy, is_play, in_viewport, is_publish, import_logic)
write_data.write_main(resx, resy, is_play, in_viewport, is_publish)
if resx != state.last_resx or resy != state.last_resy:
wrd.arm_recompile = True
state.last_resx = resx

View file

@ -18,7 +18,7 @@ except ImportError:
pass
# Armory version
arm_version = '17.07'
arm_version = '17.08'
def update_preset(self, context):
props_renderer.set_preset(self, context, self.rp_preset)
@ -212,6 +212,7 @@ def init_properties():
bpy.types.World.arm_loadbar = BoolProperty(name="Load Bar", description="Show asset loading progress on published builds", default=True)
bpy.types.World.arm_vsync = BoolProperty(name="VSync", description="Vertical Synchronization", default=True)
bpy.types.World.arm_dce = BoolProperty(name="DCE", description="Enable dead code elimination for publish builds", default=True)
bpy.types.World.arm_asset_compression = BoolProperty(name="Asset Compression", description="Enable scene data compression", default=False)
bpy.types.World.arm_winmode = EnumProperty(
items = [('Window', 'Window', 'Window'),
('BorderlessWindow', 'Borderless', 'BorderlessWindow'),

View file

@ -462,7 +462,9 @@ class ArmoryProjectPanel(bpy.types.Panel):
row.operator("arm.publish_project")
layout.prop(wrd, 'arm_project_target')
layout.prop(wrd, make_utils.target_to_gapi())
layout.prop(wrd, 'arm_dce')
row = layout.row(align=True)
row.prop(wrd, 'arm_dce')
row.prop(wrd, 'arm_asset_compression')
layout.label("Libraries")
rows = 2

View file

@ -23,7 +23,7 @@ def add_assets(path):
return 'project.addAssets("' + path + '");\n'
# Write khafile.js
def write_khafilejs(is_play, export_physics, export_navigation, export_ui, is_publish, enable_dce, in_viewport):
def write_khafilejs(is_play, export_physics, export_navigation, export_ui, is_publish, enable_dce, in_viewport, import_traits, import_logicnodes):
global check_dot_path
sdk_path = arm.utils.get_sdk_path()
@ -87,7 +87,16 @@ project.addSources('Sources');
f.write(add_assets(recastjs_path))
if enable_dce:
f.write("project.addParameter('-dce full');")
f.write("project.addParameter('-dce full');\n")
import_traits.append('armory.trait.internal.JSScriptAPI')
import_traits = list(set(import_traits))
for i in range(0, len(import_traits)):
f.write("project.addParameter('" + import_traits[i] + "');\n")
f.write("""project.addParameter("--macro keep('""" + import_traits[i] + """')");\n""")
if import_logicnodes: # Live patching for logic nodes
f.write("""project.addParameter("--macro include('armory.logicnode')");\n""")
if state.is_render:
assets.add_khafile_def('arm_render')
@ -151,7 +160,7 @@ project.addSources('Sources');
f.write("\n\nresolve(project);\n")
# Write Main.hx
def write_main(resx, resy, is_play, in_viewport, is_publish, import_logicnodes):
def write_main(resx, resy, is_play, in_viewport, is_publish):
wrd = bpy.data.worlds['Arm']
scene_name = arm.utils.get_project_scene_name()
scene_ext = '.zip' if (bpy.data.scenes[scene_name].data_compressed and is_publish) else ''
@ -182,17 +191,10 @@ class Main {
start();
});
}
#end
public static function main() {
iron.system.CompileTime.importPackage('armory.trait');
iron.system.CompileTime.importPackage('armory.renderpath');
""")
if import_logicnodes:
f.write("""
iron.system.CompileTime.importPackage('armory.logicnode');
""")
#end""")
f.write("""
iron.system.CompileTime.importPackage('""" + arm.utils.safestr(wrd.arm_project_package) + """');
public static function main() {
state = 1;
#if (js && arm_physics) state++; loadLib("ammo.js"); #end
#if (js && arm_navigation) state++; loadLib("recast.js"); #end