Use geom class

This commit is contained in:
Lubos Lenco 2017-05-14 09:27:47 +02:00
parent 419b3a999c
commit a357274bc7
8 changed files with 29 additions and 23 deletions

View file

@ -63,7 +63,7 @@ class PhysicsBreak extends Trait {
var friction = 0.5;
var margin = 0.06;
o.addTrait(new armory.trait.internal.RigidBody(ud.mass, Shape.ConvexHull, friction, margin));
if (cast(o, MeshObject).data.mesh.positions.length < 600) {
if (cast(o, MeshObject).data.geom.positions.length < 600) {
o.addTrait(new PhysicsBreak());
}
}
@ -116,7 +116,7 @@ class ConvexBreaker {
}
public function initBreakableObject(object:MeshObject, mass:Float, velocity:Vec4, angularVelocity:Vec4, breakable:Bool) {
var ar = object.data.mesh.positions;
var ar = object.data.geom.positions;
// Create vertices mark
var sc = object.transform.scale;
var vertices = new Array<Vec4>();
@ -125,7 +125,7 @@ class ConvexBreaker {
vertices.push(new Vec4(ar[i * 3] * sc.x, ar[i * 3 + 1] * sc.y, ar[i * 3 + 2] * sc.z, 0));
}
var ind = object.data.mesh.indices[0];
var ind = object.data.geom.indices[0];
var faces = new Array<Face3>();
for (i in 0...Std.int(ind.length / 3)) {
var a = ind[i * 3];
@ -547,7 +547,7 @@ class ConvexBreaker {
};
var md = MeshData.newSync(rawmeshData);
md.mesh.calculateAABB();
md.geom.calculateAABB();
return md;
}
}

View file

@ -89,15 +89,16 @@ class DebugConsole extends Trait {
ui.separator();
var dcalls = RenderPath.drawCalls;
var numObjects = iron.Scene.active.meshes.length;
if (ui.panel(Id.handle(), 'Render Path ($dcalls draw calls)')) {
ui.text('batch calls: ' + RenderPath.batchCalls);
ui.text('batch buckets: ' + RenderPath.batchBuckets);
ui.text('culled: ' + RenderPath.culled);
ui.text('culled: ' + RenderPath.culled + ' / ' + numObjects * 2); // Assumes shadow context for all meshes
ui.text('streamed: 0 / 0');
ui.text('render targets: ' + path.data.pathdata.raw.render_targets.length);
}
ui.separator();
var numObjects = iron.Scene.active.meshes.length;
if (ui.panel(Id.handle(), 'Inspector ($numObjects meshes)')) {
ui.text('name (pos) - screen size');
function drawList(h:Handle, objs:Array<iron.object.Object>) {

View file

@ -73,8 +73,8 @@ class PhysicsHook extends Trait {
var nodes = sb.body.m_nodes;
#end
var mesh = cast(object, MeshObject).data.mesh;
var numNodes = Std.int(mesh.positions.length / 3);
var geom = cast(object, MeshObject).data.geom;
var numNodes = Std.int(geom.positions.length / 3);
for (i in 0...numNodes) {
var node = nodes.at(i);
#if js

View file

@ -258,7 +258,7 @@ class RigidBody extends Trait {
}
function addPointsToConvexHull(shape:BtConvexHullShapePointer, scale:Vec4, margin:Float) {
var positions = cast(object, MeshObject).data.mesh.positions;
var positions = cast(object, MeshObject).data.geom.positions;
var sx = scale.x * (1.0 - margin);
var sy = scale.y * (1.0 - margin);
@ -270,8 +270,8 @@ class RigidBody extends Trait {
}
function fillTriangleMesh(triangleMesh:BtTriangleMeshPointer, scale:Vec4) {
var positions = cast(object, MeshObject).data.mesh.positions;
var indices = cast(object, MeshObject).data.mesh.ids;
var positions = cast(object, MeshObject).data.geom.positions;
var indices = cast(object, MeshObject).data.geom.ids;
for (i in 0...Std.int(indices[0].length / 3)) {
triangleMesh.addTriangle(

View file

@ -53,7 +53,7 @@ class SoftBody extends Trait {
var softBodyHelpers = BtSoftBodyHelpers.create();
var mo = cast(object, MeshObject);
mo.frustumCulling = false;
var mesh = mo.data.mesh;
var geom = mo.data.geom;
// Parented soft body - clear parent location
if (object.parent != null && object.parent.name != "") {
@ -64,7 +64,7 @@ class SoftBody extends Trait {
object.transform.buildMatrix();
}
var positions:haxe.ds.Vector<kha.FastFloat> = cast haxe.ds.Vector.fromData(mesh.positions.copy());
var positions:haxe.ds.Vector<kha.FastFloat> = cast haxe.ds.Vector.fromData(geom.positions.copy());
for (i in 0...Std.int(positions.length / 3)) {
positions[i * 3] *= object.transform.scale.x;
positions[i * 3 + 1] *= object.transform.scale.y;
@ -82,8 +82,8 @@ class SoftBody extends Trait {
object.transform.buildMatrix();
var wrdinfo = physics.world.getWorldInfo();
var vecind = haxe.ds.Vector.fromData(mesh.indices[0]);
var numtri = Std.int(mesh.indices[0].length / 3);
var vecind = haxe.ds.Vector.fromData(geom.indices[0]);
var numtri = Std.int(geom.indices[0].length / 3);
#if js
body = softBodyHelpers.CreateFromTriMesh(wrdinfo, positions, vecind, numtri);
#elseif cpp
@ -131,10 +131,10 @@ class SoftBody extends Trait {
var cb = new Vec4();
var ab = new Vec4();
function update() {
var mesh = cast(object, MeshObject).data.mesh;
var geom = cast(object, MeshObject).data.geom;
var v = mesh.vertexBuffer.lock();
var l = mesh.structLength;
var v = geom.vertexBuffer.lock();
var l = geom.structLength;
var numVerts = Std.int(v.length / l);
#if js
@ -159,10 +159,10 @@ class SoftBody extends Trait {
v.set(i * l + 4, nodeNor.y());
v.set(i * l + 5, nodeNor.z());
}
// for (i in 0...Std.int(mesh.indices[0].length / 3)) {
// var a = mesh.indices[0][i * 3];
// var b = mesh.indices[0][i * 3 + 1];
// var c = mesh.indices[0][i * 3 + 2];
// for (i in 0...Std.int(geom.indices[0].length / 3)) {
// var a = geom.indices[0][i * 3];
// var b = geom.indices[0][i * 3 + 1];
// var c = geom.indices[0][i * 3 + 2];
// va.set(v.get(a * l), v.get(a * l + 1), v.get(a * l + 2));
// vb.set(v.get(b * l), v.get(b * l + 1), v.get(b * l + 2));
// vc.set(v.get(c * l), v.get(c * l + 1), v.get(c * l + 2));
@ -180,7 +180,7 @@ class SoftBody extends Trait {
// v.set(c * l + 4, cb.y);
// v.set(c * l + 5, cb.z);
// }
mesh.vertexBuffer.unlock();
geom.vertexBuffer.unlock();
}
#end

View file

@ -146,6 +146,7 @@ def init_properties():
bpy.types.World.arm_export_tangents = BoolProperty(name="Export Tangents", description="Precompute tangents for normal mapping, otherwise computed in shader", default=True, update=assets.invalidate_compiled_data)
bpy.types.World.arm_batch_meshes = BoolProperty(name="Batch Meshes", description="Group meshes by materials to speed up rendering", default=False)
bpy.types.World.arm_batch_materials = BoolProperty(name="Batch Materials", description="Marge similar materials into single pipeline state", default=False, update=assets.invalidate_shader_cache)
bpy.types.World.arm_stream_scene = BoolProperty(name="Stream Scene", description="Stream scene content", default=False)
bpy.types.World.arm_export_hide_render = BoolProperty(name="Export Hidden Renders", description="Export hidden objects", default=True)
bpy.types.World.arm_spawn_all_layers = BoolProperty(name="Spawn All Layers", description="Spawn objects from all scene layers", default=False)
bpy.types.World.arm_play_advanced = BoolProperty(name="Advanced", default=False)

View file

@ -412,6 +412,7 @@ class ArmoryPlayerPanel(bpy.types.Panel):
row = layout.row(align=True)
row.prop(wrd, 'arm_deinterleaved_buffers')
row.prop(wrd, 'arm_export_tangents')
layout.prop(wrd, 'arm_stream_scene')
layout.label('Libraries')
layout.prop(wrd, 'arm_physics')
layout.prop(wrd, 'arm_navigation')

View file

@ -128,6 +128,9 @@ project.addSources('Sources');
if wrd.arm_batch_meshes == True:
f.write("project.addDefine('arm_batch');\n")
if wrd.arm_stream_scene:
f.write("project.addDefine('arm_stream');\n")
if wrd.generate_gpu_skin == False:
f.write("project.addDefine('arm_cpu_skin');\n")