From 21a70b7d2b6d3d7697e847045fff39034d341168 Mon Sep 17 00:00:00 2001 From: Gleb Mazovetskiy Date: Fri, 26 Feb 2021 09:54:02 +0000 Subject: [PATCH] heighfield: buildAccellerator() This enables accelleration of heightfield collisions. Unfortunately, `btHeightfieldTerrainShape::processAllTriangle` does not yet use the accellerator data, so this change does not improve performance yet but might do so in future bullet versions. References: * Accellerator introduced in: https://github.com/bulletphysics/bullet3/pull/2062 * Feature request to use the accellerator in `processAllTriangle`: https://github.com/bulletphysics/bullet3/issues/3276 --- apps/openmw/mwphysics/heightfield.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/openmw/mwphysics/heightfield.cpp b/apps/openmw/mwphysics/heightfield.cpp index 436cdfe8f..cbcc9d024 100644 --- a/apps/openmw/mwphysics/heightfield.cpp +++ b/apps/openmw/mwphysics/heightfield.cpp @@ -58,6 +58,12 @@ namespace MWPhysics mShape->setUseDiamondSubdivision(true); mShape->setLocalScaling(btVector3(triSize, triSize, 1)); + // Enables acceleration of heighfield collissions. + // + // Bullet does not yet use this in the most time-consuming method, `btHeightfieldTerrainShape::processAllTriangle`. + // See https://github.com/bulletphysics/bullet3/issues/3276 + mShape->buildAccelerator(); + btTransform transform(btQuaternion::getIdentity(), btVector3((x+0.5f) * triSize * (sqrtVerts-1), (y+0.5f) * triSize * (sqrtVerts-1),