Yeah, no pressure (just kiddin)
Not sure what’s unclear. So first of all maybe this one can help a bit: PhysicsShape.getBoundingBox() returns empty object - #6 by Cedric
Then returning to the general idea: There is a game level. A bunch of level geometry is loaded consisting of individual meshes. These meshes are all merged into one big level mesh (1 draw call). Each mesh has a bounding box you can get via mesh.getBoundingInfo().boundingBox. Before I merge the mesh (into the big “merged level mesh”) and dispose it, I clone the bounding box to retain the bounding box.
For interactivity I use Havok. Again, before merging the mesh, I create a physics shape from the mesh and use a TransformNode as the PhysicsBody parameter. This TransformNode acts as id to the original mesh (or rather my data structure that keeps all relevant infos about it [like bounding box]). N.B. Havok raycasts will return PhysicsBody.transformNode.
Obviously once all meshes are merged, they are gone. But I keep the vertex ranges of the now disposed former meshes within the big merged mesh. So I can delete “meshes” in the merged mesh. This could be expanded to allow any kind of transformation if you re-load the former mesh: a) hide vertex range in merged mesh, b) transform re-loaded mesh c) sync vertex range d) show vertex range e) hide/delete re-loaded mesh (sth like that)
Anyway, this is how it works for me. Not sure if you can adapt it to your case.