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