From 9a7c0d0bf6513dc42e0bc6b08df89f81e7e1154c Mon Sep 17 00:00:00 2001 From: Kah Wei Date: Tue, 21 Feb 2023 17:30:43 +0800 Subject: [PATCH] Added SharedMaterial for Renderable --- SHADE_Managed/src/Components/Renderable.cxx | 7 ++++++- SHADE_Managed/src/Components/Renderable.hxx | 12 +++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) 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); -- 2.40.1