Begin visual console.
This commit is contained in:
parent
63338a29ea
commit
a2488719b1
|
@ -1,6 +1,6 @@
|
|||
package armory.renderpipeline;
|
||||
|
||||
import iron.node.RenderPath;
|
||||
import iron.resource.RenderPath;
|
||||
|
||||
class FFT {
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
package armory.renderpipeline;
|
||||
|
||||
import kha.math.FastVector3;
|
||||
import iron.node.RenderPath;
|
||||
import iron.resource.RenderPath;
|
||||
import iron.resource.WorldResource;
|
||||
|
||||
class HosekWilkieRadianceData {
|
||||
|
|
|
@ -20,6 +20,8 @@ class FlyCamera extends Trait {
|
|||
var strafeForward = false;
|
||||
var strafeBackward = false;
|
||||
|
||||
static inline var speed = 2.5;
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
|
||||
|
@ -41,7 +43,7 @@ class FlyCamera extends Trait {
|
|||
function update() {
|
||||
if (Input.occupied) return;
|
||||
|
||||
var d = Time.delta * 5 / 2;
|
||||
var d = Time.delta * speed;
|
||||
|
||||
if (moveForward) {
|
||||
camera.move(camera.look(), d);
|
||||
|
|
52
Sources/armory/trait/internal/Console.hx
Normal file
52
Sources/armory/trait/internal/Console.hx
Normal file
|
@ -0,0 +1,52 @@
|
|||
package armory.trait.internal;
|
||||
|
||||
import iron.Trait;
|
||||
#if WITH_PROFILE
|
||||
import iron.resource.RenderPath;
|
||||
import iron.node.CameraNode;
|
||||
import zui.Zui;
|
||||
import zui.Id;
|
||||
#end
|
||||
|
||||
class Console extends Trait {
|
||||
|
||||
#if (!WITH_PROFILE)
|
||||
public function new() { super(); }
|
||||
#else
|
||||
|
||||
var ui:Zui;
|
||||
var path:RenderPath;
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
|
||||
var font = kha.Assets.fonts.droid_sans;
|
||||
ui = new Zui(font, 17, 16, 0, 1.0);
|
||||
|
||||
notifyOnAdd(add);
|
||||
notifyOnRender2D(render2D);
|
||||
}
|
||||
|
||||
function add() {
|
||||
path = cast(node, CameraNode).renderPath;
|
||||
}
|
||||
|
||||
function render2D(g:kha.graphics2.Graphics) {
|
||||
g.end();
|
||||
|
||||
ui.begin(g);
|
||||
if (ui.window(Id.window(), 0, 0, 200, 200)) {
|
||||
// ui.window(Id.window(), 0, 0, 200, 200);
|
||||
ui.text("frame ms: " + Math.round(RenderPath.frameTimeAvg * 10000) / 10);
|
||||
ui.text("phys ms: " + Math.round(PhysicsWorld.physTimeAvg * 10000) / 10);
|
||||
// ui.text("game ms: " + Math.round(App.updateTimeAvg * 10000) / 10);
|
||||
// ui.text("anim ms: " + Math.round(Animation.animTimeAvg * 10000) / 10);
|
||||
ui.text("draw calls: " + RenderPath.drawCalls);
|
||||
// ui.text("delta: " + RenderPath.frameDeltaAvg);
|
||||
}
|
||||
ui.end();
|
||||
|
||||
g.begin(false);
|
||||
}
|
||||
#end
|
||||
}
|
|
@ -23,6 +23,12 @@ class PhysicsWorld extends Trait {
|
|||
public function new(gravity:Array<Float> = null) { super(); }
|
||||
#else
|
||||
|
||||
#if WITH_PROFILE
|
||||
var frames = 0;
|
||||
var physTime = 0.0;
|
||||
public static var physTimeAvg = 0.0;
|
||||
#end
|
||||
|
||||
public var world:BtDiscreteDynamicsWorldPointer;
|
||||
var dispatcher:BtCollisionDispatcherPointer;
|
||||
|
||||
|
@ -99,8 +105,22 @@ class PhysicsWorld extends Trait {
|
|||
}
|
||||
|
||||
public function update() {
|
||||
#if WITH_PROFILE
|
||||
var time = kha.Scheduler.realTime();
|
||||
#end
|
||||
|
||||
world.ptr.stepSimulation(timeStep, 1, fixedStep);
|
||||
updateContacts();
|
||||
|
||||
#if WITH_PROFILE
|
||||
frames++;
|
||||
physTime += kha.Scheduler.realTime() - time;
|
||||
if (frames >= 60) {
|
||||
physTimeAvg = physTime / 60;
|
||||
frames = 0;
|
||||
physTime = 0;
|
||||
}
|
||||
#end
|
||||
}
|
||||
|
||||
function updateContacts() {
|
||||
|
|
|
@ -1508,7 +1508,7 @@ class ArmoryExporter(bpy.types.Operator, ExportHelper):
|
|||
else:
|
||||
parento['nodes'].append(o)
|
||||
|
||||
self.cb_export_node(node, o)
|
||||
self.cb_export_node(node, o, type)
|
||||
|
||||
if not hasattr(o, 'nodes'):
|
||||
o['nodes'] = []
|
||||
|
@ -2340,7 +2340,7 @@ class ArmoryExporter(bpy.types.Operator, ExportHelper):
|
|||
po['material_refs'] = [o['material_refs'][0] + '_decal'] # Will fetch a proper context used in render path
|
||||
break
|
||||
|
||||
def cb_export_node(self, node, o):
|
||||
def cb_export_node(self, node, o, type):
|
||||
#return
|
||||
# Export traits
|
||||
o['traits'] = []
|
||||
|
@ -2411,6 +2411,14 @@ class ArmoryExporter(bpy.types.Operator, ExportHelper):
|
|||
x['parameters'].append(rb.collision_margin)
|
||||
o['traits'].append(x)
|
||||
|
||||
# Debug console enabled, attach console overlay to each camera
|
||||
if type == kNodeTypeCamera:
|
||||
console_trait = {}
|
||||
console_trait['type'] = 'Script'
|
||||
console_trait['class_name'] = 'armory.trait.internal.Console'
|
||||
console_trait['parameters'] = []
|
||||
o['traits'].append(console_trait)
|
||||
|
||||
# Map objects to game objects
|
||||
self.objectToGameObjectDict[node] = o
|
||||
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
import http.server
|
||||
import socketserver
|
||||
import bpy
|
||||
import os
|
||||
|
||||
# Can't use multiprocessing on Windows
|
||||
#p = Process(target=run_server)
|
||||
#p.start()
|
||||
#atexit.register(p.terminate)
|
||||
|
||||
def run_server():
|
||||
Handler = http.server.SimpleHTTPRequestHandler
|
||||
httpd = socketserver.TCPServer(("", 8040), Handler)
|
||||
httpd.serve_forever()
|
||||
|
||||
run_server()
|
|
@ -9,11 +9,19 @@ import traits
|
|||
import props
|
||||
import lib.drop_to_ground
|
||||
|
||||
import bpy
|
||||
import utils
|
||||
import subprocess
|
||||
import atexit
|
||||
import threading
|
||||
import os
|
||||
import http.server
|
||||
import socketserver
|
||||
|
||||
def run_server():
|
||||
Handler = http.server.SimpleHTTPRequestHandler
|
||||
try:
|
||||
httpd = socketserver.TCPServer(("", 8040), Handler)
|
||||
httpd.serve_forever()
|
||||
except:
|
||||
print('Server already running')
|
||||
|
||||
def register():
|
||||
props.register()
|
||||
|
@ -28,14 +36,10 @@ def register():
|
|||
lib.drop_to_ground.register()
|
||||
|
||||
# Start server
|
||||
user_preferences = bpy.context.user_preferences
|
||||
addon_prefs = user_preferences.addons['armory'].preferences
|
||||
scripts_path = addon_prefs.sdk_path + '/armory/blender/'
|
||||
os.chdir(utils.get_fp())
|
||||
blender_path = bpy.app.binary_path
|
||||
blend_path = bpy.data.filepath
|
||||
register.p = subprocess.Popen([blender_path, blend_path, '-b', '-P', scripts_path + 'lib/server.py', '&'])
|
||||
atexit.register(register.p.terminate)
|
||||
t = threading.Thread(name='localserver', target=run_server)
|
||||
t.daemon = True
|
||||
t.start()
|
||||
|
||||
def unregister():
|
||||
project.unregister()
|
||||
|
@ -48,6 +52,3 @@ def unregister():
|
|||
traits.unregister()
|
||||
props.unregister()
|
||||
lib.drop_to_ground.unregister()
|
||||
|
||||
# Stop server
|
||||
register.p.terminate()
|
||||
|
|
|
@ -28,10 +28,9 @@ project.addAssets('Assets/**');
|
|||
|
||||
f.write('project.addLibrary("../' + bpy.path.relpath(sdk_path + '/armory')[2:] + '");\n')
|
||||
f.write('project.addLibrary("../' + bpy.path.relpath(sdk_path + '/iron')[2:] + '");\n')
|
||||
f.write('project.addLibrary("../' + bpy.path.relpath(sdk_path + '/zui')[2:] + '");\n')
|
||||
|
||||
if bpy.data.worlds[0].CGPhysics != 'Disabled':
|
||||
f.write("\nproject.addDefine('WITH_PHYSICS')\n")
|
||||
f.write("project.addDefine('WITH_PHYSICS')\n")
|
||||
f.write('project.addLibrary("../' + bpy.path.relpath(sdk_path + '/haxebullet')[2:] + '");\n')
|
||||
|
||||
for ref in shader_references: # Shaders
|
||||
|
@ -42,10 +41,12 @@ project.addAssets('Assets/**');
|
|||
f.write("project.addAssets('" + ref + "');\n")
|
||||
|
||||
if bpy.data.worlds[0].CGPlayConsole:
|
||||
f.write("\nproject.addDefine('WITH_PROFILE')\n")
|
||||
f.write("project.addDefine('WITH_PROFILE')\n")
|
||||
f.write('project.addLibrary("../' + bpy.path.relpath(sdk_path + '/zui')[2:] + '");\n')
|
||||
f.write('project.addAssets("' + sdk_path + '/armory/Assets/droid_sans.ttf");\n')
|
||||
|
||||
if bpy.data.worlds[0].CGMinimize == False:
|
||||
f.write("\nproject.addDefine('WITH_JSON')\n")
|
||||
f.write("project.addDefine('WITH_JSON')\n")
|
||||
|
||||
config_text = bpy.data.worlds[0]['CGKhafileConfig']
|
||||
if config_text != '':
|
||||
|
|
Loading…
Reference in a new issue