diff --git a/include/Nazara/Renderer/Material.hpp b/include/Nazara/Renderer/Material.hpp index ceff00e5e..4f0f8e9ad 100644 --- a/include/Nazara/Renderer/Material.hpp +++ b/include/Nazara/Renderer/Material.hpp @@ -53,6 +53,10 @@ class NAZARA_API NzMaterial : public NzResource bool IsZTestEnabled() const; bool IsZWriteEnabled() const; + bool LoadFromFile(const NzString& filePath, const NzMaterialParams& params = NzMaterialParams()); + bool LoadFromMemory(const void* data, std::size_t size, const NzMaterialParams& params = NzMaterialParams()); + bool LoadFromStream(NzInputStream& stream, const NzMaterialParams& params = NzMaterialParams()); + void Reset(); void SetAmbientColor(const NzColor& ambient); @@ -67,6 +71,8 @@ class NAZARA_API NzMaterial : public NzResource void SetSrcAlpha(nzBlendFunc func); void SetZTestCompare(nzRendererComparison compareFunc); + static const NzMaterial* GetDefault(); + private: nzBlendFunc m_dstAlpha; nzBlendFunc m_srcAlpha; diff --git a/src/Nazara/Renderer/Material.cpp b/src/Nazara/Renderer/Material.cpp index 30c102dbe..5676d6534 100644 --- a/src/Nazara/Renderer/Material.cpp +++ b/src/Nazara/Renderer/Material.cpp @@ -110,6 +110,21 @@ bool NzMaterial::IsZWriteEnabled() const return m_zWriteEnabled; } +bool NzMaterial::LoadFromFile(const NzString& filePath, const NzMaterialParams& params) +{ + return NzMaterialLoader::LoadFromFile(this, filePath, params); +} + +bool NzMaterial::LoadFromMemory(const void* data, std::size_t size, const NzMaterialParams& params) +{ + return NzMaterialLoader::LoadFromMemory(this, data, size, params); +} + +bool NzMaterial::LoadFromStream(NzInputStream& stream, const NzMaterialParams& params) +{ + return NzMaterialLoader::LoadFromStream(this, stream, params); +} + void NzMaterial::Reset() { if (m_diffuseMap) @@ -203,4 +218,21 @@ void NzMaterial::SetZTestCompare(nzRendererComparison compareFunc) m_zTestEnabled = compareFunc; } +const NzMaterial* NzMaterial::GetDefault() +{ + static NzMaterial defaultMaterial; + static bool initialized = false; + + if (!initialized) + { + defaultMaterial.SetFaceCulling(nzFaceCulling_FrontAndBack); + defaultMaterial.SetFaceFilling(nzFaceFilling_Line); + defaultMaterial.SetDiffuseColor(NzColor::White); + + initialized = true; + } + + return &defaultMaterial; +} + NzMaterialLoader::LoaderList NzMaterial::s_loaders;