BGE: Adding support for the Cast Only material option.
Note: This does not add support for the option in the viewport.
This commit is contained in:
@@ -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);
|
||||
|
@@ -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 */
|
||||
|
||||
|
@@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user