diff options
author | Mitchell Stokes <mogurijin@gmail.com> | 2014-01-27 07:28:26 +0400 |
---|---|---|
committer | Mitchell Stokes <mogurijin@gmail.com> | 2014-03-20 10:57:49 +0400 |
commit | e02b9c8a45266993e5cefb71d55234128aca208c (patch) | |
tree | d9d29a0b6a0ee81b879c9665ce74f6370829257e /source/gameengine/Rasterizer | |
parent | 9d4b54b44fccabffeebd45c86f8e344e67327ad3 (diff) |
BGE: Adding support for the Cast Only material option.
Note: This does not add support for the option in the viewport.
Diffstat (limited to 'source/gameengine/Rasterizer')
-rw-r--r-- | source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp | 5 | ||||
-rw-r--r-- | source/gameengine/Rasterizer/RAS_IPolygonMaterial.h | 4 | ||||
-rw-r--r-- | source/gameengine/Rasterizer/RAS_MaterialBucket.cpp | 3 |
3 files changed, 11 insertions, 1 deletions
diff --git a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp index 47e52318b33..03f6e567771 100644 --- a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp +++ b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp @@ -282,6 +282,11 @@ bool RAS_IPolyMaterial::CastsShadows() const return (m_flag & RAS_CASTSHADOW) != 0; } +bool RAS_IPolyMaterial::OnlyShadow() const +{ + return (m_flag & RAS_ONLYSHADOW) != 0; +} + bool RAS_IPolyMaterial::UsesObjectColor() const { return !(m_flag & RAS_BLENDERGLSL); diff --git a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h index 2db71c3a2fe..14223fc59bd 100644 --- a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h +++ b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h @@ -61,7 +61,8 @@ enum MaterialProps RAS_NORMAL =256, RAS_DEFMULTI =512, RAS_BLENDERGLSL =1024, - RAS_CASTSHADOW =2048 + RAS_CASTSHADOW =2048, + RAS_ONLYSHADOW =4096, }; /** @@ -174,6 +175,7 @@ public: virtual bool UsesLighting(RAS_IRasterizer *rasty) const; virtual bool UsesObjectColor() const; virtual bool CastsShadows() const; + virtual bool OnlyShadow() const; virtual void Replace_IScene(SCA_IScene *val) {} /* overridden by KX_BlenderMaterial */ diff --git a/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp b/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp index 0c715524218..4b5fc6510e0 100644 --- a/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp +++ b/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp @@ -587,6 +587,9 @@ bool RAS_MaterialBucket::ActivateMaterial(const MT_Transform& cameratrans, RAS_I if (rasty->GetDrawingMode() == RAS_IRasterizer::KX_SHADOW && !m_material->CastsShadows()) return false; + if (rasty->GetDrawingMode() != RAS_IRasterizer::KX_SHADOW && m_material->OnlyShadow()) + return false; + if (!rasty->SetMaterial(*m_material)) return false; |