diff --git a/include/Nazara/Renderer/Shader.hpp b/include/Nazara/Renderer/Shader.hpp index 194b86de8..040d5bbf7 100644 --- a/include/Nazara/Renderer/Shader.hpp +++ b/include/Nazara/Renderer/Shader.hpp @@ -28,6 +28,7 @@ class NAZARA_API NzShader : public NzResource, NzNonCopyable public: NzShader() = default; NzShader(nzShaderLanguage language); + NzShader(NzShader&& shader); ~NzShader(); bool Create(nzShaderLanguage language); @@ -68,6 +69,8 @@ class NAZARA_API NzShader : public NzResource, NzNonCopyable void Unlock(); + NzShader& operator=(NzShader&& shader); + static bool IsLanguageSupported(nzShaderLanguage language); static bool IsTypeSupported(nzShaderType type); diff --git a/src/Nazara/Renderer/Shader.cpp b/src/Nazara/Renderer/Shader.cpp index c1680b3ba..c4779daea 100644 --- a/src/Nazara/Renderer/Shader.cpp +++ b/src/Nazara/Renderer/Shader.cpp @@ -19,6 +19,12 @@ NzShader::NzShader(nzShaderLanguage language) Create(language); } +NzShader::NzShader(NzShader&& shader) : +m_impl(shader.m_impl) +{ + shader.m_impl = nullptr; +} + NzShader::~NzShader() { Destroy(); @@ -609,6 +615,16 @@ void NzShader::Unlock() return m_impl->Unlock(); } +NzShader& NzShader::operator=(NzShader&& shader) +{ + Destroy(); + + m_impl = shader.m_impl; + shader.m_impl = nullptr; + + return *this; +} + bool NzShader::IsLanguageSupported(nzShaderLanguage language) { switch (language)