diff --git a/src/Nazara/Utility/VertexDeclaration.cpp b/src/Nazara/Utility/VertexDeclaration.cpp index 6b5ec7e2f..019a48fed 100644 --- a/src/Nazara/Utility/VertexDeclaration.cpp +++ b/src/Nazara/Utility/VertexDeclaration.cpp @@ -244,7 +244,6 @@ const NzVertexElement* NzVertexDeclaration::GetElement(nzElementStream stream, n #endif int elementPos = m_sharedImpl->elementPos[stream][usage]; - #if NAZARA_UTILITY_SAFE if (elementPos == -1) { @@ -253,27 +252,32 @@ const NzVertexElement* NzVertexDeclaration::GetElement(nzElementStream stream, n } #endif - elementPos += usageIndex; - - #if NAZARA_UTILITY_SAFE - if (static_cast(elementPos) >= m_sharedImpl->elements.size()) + if (usageIndex == 0) // Si l'usage index vaut zéro, alors nous sommes certains d'être sur le bon élément (Majorité des cas) + return &m_sharedImpl->elements[elementPos]; + else { - NazaraError("Element not found"); - return nullptr; + elementPos += usageIndex; + + #if NAZARA_UTILITY_SAFE + if (static_cast(elementPos) >= m_sharedImpl->elements.size()) + { + NazaraError("Element not found"); + return nullptr; + } + #endif + + NzVertexElement& element = m_sharedImpl->elements[elementPos]; + + #if NAZARA_UTILITY_SAFE + if (element.stream != stream || element.usage != usage || element.usageIndex != usageIndex) + { + NazaraError("Element not found"); + return nullptr; + } + #endif + + return &element; } - #endif - - NzVertexElement& element = m_sharedImpl->elements[elementPos]; - - #if NAZARA_UTILITY_SAFE - if (element.stream != stream || element.usage != usage || element.usageIndex != usageIndex) - { - NazaraError("Element not found"); - return nullptr; - } - #endif - - return &element; } unsigned int NzVertexDeclaration::GetElementCount() const