Пример #1
0
void SceneNode::_findVisibleObjects(Camera *pCamera, RenderQueue &renderQueue)
{
	if(mp_attachedMoveableObject && mp_attachedMoveableObject->visible())
	{
		if(pCamera->isVisible(getWorldBoundingBox(), NULL))
		{
			mp_attachedMoveableObject->addToRenderQueue(pCamera->getProjViewMatrix() * _getFullTransform(), renderQueue);
		}	
	}
	for(ChildNodeIterator it = m_childVec.begin(); it != m_childVec.end(); ++it)
	{
		SceneNode *pChild = static_cast<SceneNode*>(*it);
		pChild->_findVisibleObjects(pCamera, renderQueue);
	}
}
Пример #2
0
    //-----------------------------------------------------------------------
    void SceneNode::_findVisibleObjects(Camera* cam, RenderQueue* queue, 
		VisibleObjectsBoundsInfo* visibleBounds, bool includeChildren, 
		bool displayNodes, bool onlyShadowCasters)
    {
        // Check self visible
        if (!cam->isVisible(mWorldAABB))
            return;

        // Add all entities
        ObjectMap::iterator iobj;
        ObjectMap::iterator iobjend = mObjectsByName.end();
        for (iobj = mObjectsByName.begin(); iobj != iobjend; ++iobj)
        {
			MovableObject* mo = iobj->second;

			queue->processVisibleObject(mo, cam, onlyShadowCasters, visibleBounds);
        }

        if (includeChildren)
        {
            ChildNodeMap::iterator child, childend;
            childend = mChildren.end();
            for (child = mChildren.begin(); child != childend; ++child)
            {
                SceneNode* sceneChild = static_cast<SceneNode*>(child->second);
                sceneChild->_findVisibleObjects(cam, queue, visibleBounds, includeChildren, 
					displayNodes, onlyShadowCasters);
            }
        }

        if (displayNodes)
        {
            // Include self in the render queue
            queue->addRenderable(getDebugRenderable());
        }

		// Check if the bounding box should be shown.
		// See if our flag is set or if the scene manager flag is set.
		if ( !mHideBoundingBox &&
             (mShowBoundingBox || (mCreator && mCreator->getShowBoundingBoxes())) )
		{ 
			_addBoundingBoxToQueue(queue);
		}


    }