diff --git a/src/Nazara/Utility/SubMesh.cpp b/src/Nazara/Utility/SubMesh.cpp index 17816f157..d97fa45d3 100644 --- a/src/Nazara/Utility/SubMesh.cpp +++ b/src/Nazara/Utility/SubMesh.cpp @@ -61,6 +61,13 @@ namespace Nz SparsePtr positions = mapper.GetComponentPtr(VertexComponent::Position); SparsePtr tangents = mapper.GetComponentPtr(VertexComponent::Tangent); SparsePtr texCoords = mapper.GetComponentPtr(VertexComponent::TexCoord); + if (!texCoords) + { + // 3D coords are often used for slice indexing, we can get a Vector2 by keeping the stride + SparsePtr texCoords3D = mapper.GetComponentPtr(VertexComponent::TexCoord); + texCoords = SparsePtr(texCoords3D.GetPtr(), texCoords3D.GetStride()); + } + if (!normals || !positions || !tangents || !texCoords) return; @@ -118,6 +125,13 @@ namespace Nz SparsePtr positions = mapper.GetComponentPtr(VertexComponent::Position); SparsePtr tangents = mapper.GetComponentPtr(VertexComponent::Tangent); SparsePtr texCoords = mapper.GetComponentPtr(VertexComponent::TexCoord); + if (!texCoords) + { + // 3D coords are often used for slice indexing, we can get a Vector2 by keeping the stride + SparsePtr texCoords3D = mapper.GetComponentPtr(VertexComponent::TexCoord); + texCoords = SparsePtr(texCoords3D.GetPtr(), texCoords3D.GetStride()); + } + if (!normals || !positions || !tangents || !texCoords) return;