From 93a1738c554e4594f4550a7cc6686d02d059e6b7 Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 29 Oct 2012 10:00:57 +0100 Subject: [PATCH] Optimized VertexDeclaration::GetElement Former-commit-id: a56498837ae2f6101e0641aab23b2d1d0f9130f3 --- src/Nazara/Utility/VertexDeclaration.cpp | 44 +++++++++++++----------- 1 file changed, 24 insertions(+), 20 deletions(-) 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