Make TriangleVertexArray normals generation optional

This commit is contained in:
Thomas Tissot 2019-09-26 17:15:49 +02:00
parent 5ae8e7a944
commit a0b70fc4b8
2 changed files with 15 additions and 3 deletions

View File

@ -50,7 +50,8 @@ using namespace reactphysics3d;
*/
TriangleVertexArray::TriangleVertexArray(uint nbVertices, const void* verticesStart, uint verticesStride,
uint nbTriangles, const void* indexesStart, uint indexesStride,
VertexDataType vertexDataType, IndexDataType indexDataType) {
VertexDataType vertexDataType, IndexDataType indexDataType,
bool generateNormals) {
mNbVertices = nbVertices;
mVerticesStart = static_cast<const uchar*>(verticesStart);
mVerticesStride = verticesStride;
@ -65,7 +66,9 @@ TriangleVertexArray::TriangleVertexArray(uint nbVertices, const void* verticesSt
mAreVerticesNormalsProvidedByUser = false;
// Compute the vertices normals because they are not provided by the user
computeVerticesNormals();
if (generateNormals) {
computeVerticesNormals();
}
}
// Constructor with vertices normals
@ -264,6 +267,10 @@ void TriangleVertexArray::getTriangleVerticesNormals(uint triangleIndex, Vector3
assert(triangleIndex >= 0 && triangleIndex < mNbTriangles);
if (!mVerticesNormalsStart) {
return;
}
// Get the three vertex index of the three vertices of the triangle
uint verticesIndices[3];
getTriangleVerticesIndices(triangleIndex, verticesIndices);
@ -332,6 +339,10 @@ void TriangleVertexArray::getNormal(uint vertexIndex, Vector3* outNormal) {
assert(vertexIndex < mNbVertices);
if (!mVerticesNormalsStart) {
return;
}
const uchar* vertexNormalPointerChar = mVerticesNormalsStart + vertexIndex * mVerticesNormalsStride;
const void* vertexNormalPointer = static_cast<const void*>(vertexNormalPointerChar);

View File

@ -111,7 +111,8 @@ class TriangleVertexArray {
/// Constructor without vertices normals
TriangleVertexArray(uint nbVertices, const void* verticesStart, uint verticesStride,
uint nbTriangles, const void* indexesStart, uint indexesStride,
VertexDataType vertexDataType, IndexDataType indexDataType);
VertexDataType vertexDataType, IndexDataType indexDataType,
bool generateNormals = true);
/// Constructor with vertices normals
TriangleVertexArray(uint nbVertices, const void* verticesStart, uint verticesStride,