Update tsMeshFit.cpp

fix addSphere
fix addCapsule

now spheres and capsules scale correctly.... hopefully....
This commit is contained in:
marauder2k7 2024-05-12 17:51:21 +01:00
parent 399844f7f1
commit 8cf2b1d0ef

View file

@ -443,12 +443,27 @@ void MeshFit::addSphere( F32 radius, const Point3F& center )
if ( !mesh ) if ( !mesh )
return; return;
if (mesh->mVerts.size() > 0)
{
for (S32 i = 0; i < mesh->mVerts.size(); i++)
{
Point3F v = mesh->mVerts[i];
mesh->mVerts[i] = v * radius;
}
mesh->mVertexData.setReady(false);
}
else
{
for (S32 i = 0; i < mesh->mVertexData.size(); i++) for (S32 i = 0; i < mesh->mVertexData.size(); i++)
{ {
TSMesh::__TSMeshVertexBase& vdata = mesh->mVertexData.getBase(i); TSMesh::__TSMeshVertexBase& vdata = mesh->mVertexData.getBase(i);
Point3F v = vdata.vert(); Point3F v = vdata.vert();
vdata.vert(v * radius); vdata.vert(v * radius);
} }
}
mesh->computeBounds(); mesh->computeBounds();
mMeshes.increment(); mMeshes.increment();
@ -477,12 +492,28 @@ void MeshFit::addCapsule( F32 radius, F32 height, const MatrixF& mat )
// Translate and scale the mesh verts // Translate and scale the mesh verts
height = mMax( 0, height ); height = mMax( 0, height );
F32 offset = ( height / ( 2 * radius ) ) - 0.5f; F32 offset = ( height / ( 2 * radius ) ) - 0.5f;
if (mesh->mVerts.size() > 0)
{
for (S32 i = 0; i < mesh->mVerts.size(); i++)
{
Point3F v = mesh->mVerts[i];
v.y += ((v.y > 0) ? offset : -offset);
mesh->mVerts[i] = v * radius;
}
mesh->mVertexData.setReady(false);
}
else
{
for (S32 i = 0; i < mesh->mVertexData.size(); i++) for (S32 i = 0; i < mesh->mVertexData.size(); i++)
{ {
Point3F v = mesh->mVertexData.getBase(i).vert(); TSMesh::__TSMeshVertexBase& vdata = mesh->mVertexData.getBase(i);
Point3F v = vdata.vert();
v.y += ((v.y > 0) ? offset : -offset); v.y += ((v.y > 0) ? offset : -offset);
mesh->mVertexData.getBase(i).vert( v * radius ); vdata.vert(v * radius);
} }
}
mesh->computeBounds(); mesh->computeBounds();
mMeshes.increment(); mMeshes.increment();