Fix DCE
This commit is contained in:
parent
03279952d7
commit
f24324a903
|
@ -6,7 +6,6 @@ import iron.system.Input;
|
|||
import iron.math.Vec4;
|
||||
import iron.math.Quat;
|
||||
|
||||
@:keep
|
||||
class ArcBall extends Trait {
|
||||
|
||||
public function new() {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -3,7 +3,6 @@ package armory.trait;
|
|||
import iron.Trait;
|
||||
import iron.object.MeshObject;
|
||||
|
||||
@:keep
|
||||
class MirrorTexture extends Trait {
|
||||
|
||||
var cameraName:String;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -2,7 +2,6 @@ package armory.trait;
|
|||
|
||||
import iron.Trait;
|
||||
|
||||
@:keep
|
||||
class NavCrowd extends Trait {
|
||||
|
||||
public function new() {
|
||||
|
|
|
@ -9,7 +9,6 @@ import iron.Trait;
|
|||
import iron.data.Data;
|
||||
import iron.math.Vec4;
|
||||
|
||||
@:keep
|
||||
class NavMesh extends Trait {
|
||||
|
||||
#if (!arm_navigation)
|
||||
|
|
|
@ -10,7 +10,6 @@ import armory.trait.internal.PhysicsWorld;
|
|||
import haxebullet.Bullet;
|
||||
#end
|
||||
|
||||
@:keep
|
||||
class PhysicsDrag extends Trait {
|
||||
|
||||
#if (!arm_physics)
|
||||
|
|
|
@ -2,7 +2,6 @@ package armory.trait;
|
|||
|
||||
import iron.Trait;
|
||||
|
||||
@:keep
|
||||
class SceneInstance extends Trait {
|
||||
|
||||
function safeFilename(s:String) {
|
||||
|
|
|
@ -3,7 +3,6 @@ package armory.trait;
|
|||
import iron.math.Vec4;
|
||||
import armory.trait.internal.CameraController;
|
||||
|
||||
@:keep
|
||||
class SidescrollerController extends CameraController {
|
||||
|
||||
#if (!arm_physics)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -6,7 +6,6 @@ import iron.system.Time;
|
|||
import iron.object.CameraObject;
|
||||
import iron.math.Vec4;
|
||||
|
||||
@:keep
|
||||
class VRNavigation extends Trait {
|
||||
|
||||
#if arm_vr
|
||||
|
|
|
@ -10,7 +10,6 @@ import armory.trait.internal.PhysicsWorld;
|
|||
import haxebullet.Bullet;
|
||||
#end
|
||||
|
||||
@:keep
|
||||
class VehicleBody extends Trait {
|
||||
|
||||
#if (!arm_physics)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -5,7 +5,6 @@ import iron.system.Input;
|
|||
import iron.object.Transform;
|
||||
import iron.object.CameraObject;
|
||||
|
||||
@:keep
|
||||
class CameraController extends Trait {
|
||||
|
||||
#if (!arm_physics)
|
||||
|
|
|
@ -6,7 +6,6 @@ import zui.Zui;
|
|||
import zui.Canvas;
|
||||
#end
|
||||
|
||||
@:keep
|
||||
class CanvasScript extends Trait {
|
||||
|
||||
#if arm_ui
|
||||
|
|
|
@ -10,7 +10,6 @@ import zui.Zui;
|
|||
import zui.Id;
|
||||
#end
|
||||
|
||||
@:keep
|
||||
class DebugConsole extends Trait {
|
||||
|
||||
#if (!arm_profile)
|
||||
|
|
|
@ -2,7 +2,6 @@ package armory.trait.internal;
|
|||
|
||||
import iron.Trait;
|
||||
|
||||
@:keep
|
||||
class JSScript extends Trait {
|
||||
|
||||
static var api:JSScriptAPI = null;
|
||||
|
|
|
@ -2,7 +2,6 @@ package armory.trait.internal;
|
|||
|
||||
#if cpp
|
||||
|
||||
@:keep
|
||||
class JSScriptAPI { }
|
||||
|
||||
#else
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package armory.trait.internal;
|
||||
|
||||
@:keep
|
||||
class LoadBar {
|
||||
|
||||
public static function render(g:kha.graphics2.Graphics) {
|
||||
|
|
|
@ -5,7 +5,6 @@ import kha.Video;
|
|||
import iron.Trait;
|
||||
import iron.object.MeshObject;
|
||||
|
||||
@:keep
|
||||
class MovieTexture extends Trait {
|
||||
|
||||
var video:Video;
|
||||
|
|
|
@ -5,7 +5,6 @@ import haxerecast.Recast;
|
|||
import armory.trait.NavMesh;
|
||||
#end
|
||||
|
||||
@:keep
|
||||
class Navigation extends iron.Trait {
|
||||
|
||||
#if (!arm_navigation)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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(); }
|
||||
|
|
|
@ -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(); }
|
||||
|
|
|
@ -22,7 +22,6 @@ class ContactPair {
|
|||
}
|
||||
}
|
||||
|
||||
@:keep
|
||||
class PhysicsWorld extends Trait {
|
||||
|
||||
#if (!arm_physics)
|
||||
|
|
|
@ -8,7 +8,6 @@ import iron.math.Vec4;
|
|||
import iron.object.Transform;
|
||||
import iron.object.MeshObject;
|
||||
|
||||
@:keep
|
||||
class RigidBody extends Trait {
|
||||
|
||||
#if (!arm_physics)
|
||||
|
|
|
@ -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(); }
|
||||
|
|
|
@ -6,7 +6,6 @@ import iron.object.Transform;
|
|||
import iron.system.Input;
|
||||
import iron.math.RayCaster;
|
||||
|
||||
@:keep
|
||||
class SpaceArmory extends Trait {
|
||||
|
||||
var gizmo:Object;
|
||||
|
|
|
@ -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 = {}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'),
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue