diff options
author | Kester Maddock <Christopher.Maddock.1@uni.massey.ac.nz> | 2005-01-16 09:02:06 +0300 |
---|---|---|
committer | Kester Maddock <Christopher.Maddock.1@uni.massey.ac.nz> | 2005-01-16 09:02:06 +0300 |
commit | 3b91ea4309f47d937799382d988a6348e3bb2d7f (patch) | |
tree | d45b8087e755ae6b9781845d21898603c038f2a7 /source/gameengine/Rasterizer/RAS_MaterialBucket.cpp | |
parent | 5fcf39d2a5db1d536e9fbfa52edb2bcdc40d8e29 (diff) |
Unified KX_BlenderPolyMaterial & GPC_PolygonMaterial into KX_PolygonMaterial.
Make game engine materials use Zoffs in Materials.
Added Python material hooks.
Diffstat (limited to 'source/gameengine/Rasterizer/RAS_MaterialBucket.cpp')
-rw-r--r-- | source/gameengine/Rasterizer/RAS_MaterialBucket.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp b/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp index f2dc7535010..a9934df1d02 100644 --- a/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp +++ b/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp @@ -169,12 +169,13 @@ RAS_MaterialBucket::T_MeshSlotList::iterator RAS_MaterialBucket::msEnd() return m_meshSlots.end(); } -int RAS_MaterialBucket::ActivateMaterial(const MT_Transform& cameratrans, RAS_IRasterizer* rasty, - RAS_IRenderTools *rendertools) +bool RAS_MaterialBucket::ActivateMaterial(const MT_Transform& cameratrans, RAS_IRasterizer* rasty, + RAS_IRenderTools *rendertools, int &drawmode) { rendertools->SetViewMat(cameratrans); - rasty->SetMaterial(*m_material); + if (!rasty->SetMaterial(*m_material)) + return false; bool dolights = m_material->GetDrawingMode()&16; @@ -187,8 +188,10 @@ int RAS_MaterialBucket::ActivateMaterial(const MT_Transform& cameratrans, RAS_IR bool bUseLights = rendertools->ProcessLighting(m_material->GetLightLayer()); } - return (rasty->GetDrawingMode() < RAS_IRasterizer::KX_SOLID ? + drawmode = (rasty->GetDrawingMode() < RAS_IRasterizer::KX_SOLID ? 1: (m_material->UsesTriangles() ? 0 : 2)); + + return true; } void RAS_MaterialBucket::RenderMeshSlot(const MT_Transform& cameratrans, RAS_IRasterizer* rasty, @@ -272,12 +275,13 @@ void RAS_MaterialBucket::Render(const MT_Transform& cameratrans, rendertools->SetClientObject((*m_meshSlots.begin()).m_clientObj); } - int drawmode = ActivateMaterial(cameratrans, rasty, rendertools); + int drawmode; for (T_MeshSlotList::const_iterator it = m_meshSlots.begin(); ! (it == m_meshSlots.end()); ++it) { - RenderMeshSlot(cameratrans, rasty, rendertools, *it, drawmode); + while (ActivateMaterial(cameratrans, rasty, rendertools, drawmode)) + RenderMeshSlot(cameratrans, rasty, rendertools, *it, drawmode); } } |