diff --git a/SHADE_Managed/src/Components/Renderable.cxx b/SHADE_Managed/src/Components/Renderable.cxx
index 1aa83637..929b0006 100644
--- a/SHADE_Managed/src/Components/Renderable.cxx
+++ b/SHADE_Managed/src/Components/Renderable.cxx
@@ -47,11 +47,16 @@ namespace SHADE
}
}
SHADE::Material Renderable::Material::get()
+ {
+ auto mat = GetNativeComponent()->GetModifiableMaterial();
+ return mat ? SHADE::Material(mat) : SHADE::Material();
+ }
+ SHADE::Material Renderable::SharedMaterial::get()
{
auto mat = GetNativeComponent()->GetMaterial();
return mat ? SHADE::Material(mat) : SHADE::Material();
}
- void Renderable::Material::set(SHADE::Material value)
+ void Renderable::SharedMaterial::set(SHADE::Material value)
{
if (value)
{
diff --git a/SHADE_Managed/src/Components/Renderable.hxx b/SHADE_Managed/src/Components/Renderable.hxx
index b0786035..a4417166 100644
--- a/SHADE_Managed/src/Components/Renderable.hxx
+++ b/SHADE_Managed/src/Components/Renderable.hxx
@@ -55,9 +55,19 @@ namespace SHADE
void set(MeshAsset value);
}
///
- /// Material used to render this Renderable.
+ /// Special instance of the shared Material for this Renderable. When accessing
+ /// this property, a new instance of the shared Material is created and assigned
+ /// to this Renderable. Hence, changes will only affect this Renderable.
///
property SHADE::Material Material
+ {
+ SHADE::Material get();
+ }
+ ///
+ /// The shared Material used to render this Renderable and other Renderables
+ /// using the same base Material.
+ ///
+ property SHADE::Material SharedMaterial
{
SHADE::Material get();
void set(SHADE::Material value);