diff --git a/include/Nazara/Core/ResourceRef.hpp b/include/Nazara/Core/ResourceRef.hpp index 0c6b39cec..dee1a709f 100644 --- a/include/Nazara/Core/ResourceRef.hpp +++ b/include/Nazara/Core/ResourceRef.hpp @@ -32,6 +32,7 @@ class NzResourceRef operator T*() const; T* operator->() const; + NzResourceRef& operator=(T* resource); NzResourceRef& operator=(const NzResourceRef& ref); NzResourceRef& operator=(NzResourceRef&& ref); diff --git a/include/Nazara/Core/ResourceRef.inl b/include/Nazara/Core/ResourceRef.inl index 9dcb1a4ad..80680c18a 100644 --- a/include/Nazara/Core/ResourceRef.inl +++ b/include/Nazara/Core/ResourceRef.inl @@ -93,6 +93,23 @@ T* NzResourceRef::operator->() const return m_resource; } +template +NzResourceRef& NzResourceRef::operator=(T* resource) +{ + if (m_resource != resource) + { + Release(); + + if (resource) + { + m_resource = resource; + m_resource->AddResourceReference(); + } + } + + return *this; +} + template NzResourceRef& NzResourceRef::operator=(const NzResourceRef& ref) {