Use geom class
This commit is contained in:
parent
419b3a999c
commit
a357274bc7
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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")
|
||||
|
||||
|
|
Loading…
Reference in a new issue