From 4d15cbcc2b1c0b4cd9404391a2f4fed2187c3930 Mon Sep 17 00:00:00 2001 From: SweetId <2630750+SweetId@users.noreply.github.com> Date: Sun, 10 Mar 2024 16:39:42 -0400 Subject: [PATCH] Add VertexDeclaration::Find to return type from ptr --- include/Nazara/Core/VertexDeclaration.hpp | 1 + include/Nazara/Core/VertexDeclaration.inl | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/include/Nazara/Core/VertexDeclaration.hpp b/include/Nazara/Core/VertexDeclaration.hpp index 5ea360fc0..e5c919d7a 100644 --- a/include/Nazara/Core/VertexDeclaration.hpp +++ b/include/Nazara/Core/VertexDeclaration.hpp @@ -53,6 +53,7 @@ namespace Nz VertexDeclaration& operator=(VertexDeclaration&&) = delete; static inline const std::shared_ptr& Get(VertexLayout layout); + static inline const VertexLayout Find(const std::shared_ptr& declaration); static bool IsTypeSupported(ComponentType type); struct Component diff --git a/include/Nazara/Core/VertexDeclaration.inl b/include/Nazara/Core/VertexDeclaration.inl index 752990b9e..571f28999 100644 --- a/include/Nazara/Core/VertexDeclaration.inl +++ b/include/Nazara/Core/VertexDeclaration.inl @@ -75,5 +75,15 @@ namespace Nz NazaraAssert(layout <= VertexLayout::Max, "Vertex layout out of enum"); return s_declarations[layout]; } + + inline const VertexLayout VertexDeclaration::Find(const std::shared_ptr& declaration) + { + for (size_t i = 0; i < (size_t)VertexLayout::Max; ++i) + if (s_declarations[(VertexLayout)i].get() == declaration.get()) + return (VertexLayout)i; + + NazaraAssert(declaration, "Invalid declaration"); + return VertexLayout::Max; + } }