void OctreeNode::GetVisibleSceneNodes(SceneNodeList & list, Camera * cam) { _node * mynode = m_head; while (mynode) { SceneNode * node = mynode->node; const Aabb & bound = node->GetWorldAabb(); if (node->IsVisible() && cam->IsVisible(bound)) { list.PushBack(node); } mynode = mynode->next; } }
/** * @brief * Post draw all scene nodes recursive */ void SPScene::DrawPost(Renderer &cRenderer, SceneContainer &cContainer) { // Get the scene container (can be a null pointer) SceneContainer *pContainer = GetSceneContainer(); // Draw parent container if (&cContainer != pContainer) cContainer.DrawPost(cRenderer); // Loop through all nodes for (uint32 i=0; i<cContainer.GetNumOfElements(); i++) { SceneNode *pNode = cContainer.GetByIndex(i); if (pNode != pContainer && pNode->IsVisible() && (pNode->GetDrawFunctionFlags() & SceneNode::UseDrawPost)) { if (pNode->IsContainer()) DrawPost(cRenderer, static_cast<SceneContainer&>(*pNode)); else pNode->DrawPost(cRenderer); } } }
//[-------------------------------------------------------] //[ Private virtual PLEngine::Picking functions ] //[-------------------------------------------------------] bool MyPicking::OnPickingCandidate(SceneNode &cSceneNode) { // Is this scene node visible? If so, we allow picking of it... return cSceneNode.IsVisible(); }