void Gamedesk::kDOPTree::DrawLevel( kDOPTree::kDOPNode* pNode, UInt32 pLevel ) { mDepth++; if( mDepth == pLevel || pNode->mTriangleIndices.size() != 0 ) { Renderer* renderer = GraphicSubsystem::Instance()->GetRenderer(); GD_ASSERT(renderer); // Render the bounding box. renderer->SetRenderState( Renderer::Lighting, false ); renderer->SetPolygonMode( Renderer::BothFace, Renderer::FillWireframe ); renderer->SetCulling( Renderer::NoCulling ); renderer->SetColor(Color4f(1.0f, 1.0f, 1.0f, 1.0f)); renderer->DrawBox( pNode->mBoundingBox.Min(), pNode->mBoundingBox.Max() ); renderer->SetRenderState( Renderer::Lighting, true ); renderer->SetPolygonMode( Renderer::BothFace, Renderer::FillSolid ); renderer->SetCulling( Renderer::CullBackFace ); } else { kDOPNode* leftNode = mNodes[pNode->mChildsIndex + 0]; kDOPNode* rightNode = mNodes[pNode->mChildsIndex + 1]; DrawLevel( leftNode, pLevel ); DrawLevel( rightNode, pLevel ); } mDepth--; }
void Entity::RenderSelected() const { Renderer* renderer = GraphicSubsystem::Instance()->GetRenderer(); GD_ASSERT(renderer); // Render the bounding box. renderer->SetRenderState( Renderer::Lighting, false ); renderer->SetPolygonMode( Renderer::BothFace, Renderer::FillWireframe ); renderer->SetCulling( Renderer::NoCulling ); renderer->SetColor(Color4f(1.0f, 0.0f, 0.0f, 1.0f)); renderer->DrawBox( mBoundingBox.Min(), mBoundingBox.Max() ); renderer->SetColor(Color4f(1.0f, 1.0f, 1.0f, 1.0f)); renderer->SetRenderState( Renderer::Lighting, true ); renderer->SetPolygonMode( Renderer::BothFace, Renderer::FillSolid ); renderer->SetCulling( Renderer::CullBackFace ); }