Exemplo n.º 1
0
void RenderingPass::drawScene(Camera * camera, Program * program,  FrameBufferObject * fbo)
{
    fbo->bind();
    SceneTraverser traverser;
    DrawVisitor drawVisitor(program, camera->transform());
    traverser.traverse(*camera, drawVisitor);
    fbo->release();
}
Exemplo n.º 2
0
void Viewer::assignScene(Group * rootNode)
{
    m_selectedNodes.clear();

    SceneTraverser traverser;
    unsigned int count = 0;
    traverser.traverse(*rootNode, [&count] (Node & node) 
    {
        node.setId(count++);
        return true;
    });

    createSceneHierarchy(m_sceneHierarchy, rootNode);
    m_sceneHierarchyTree->expandAll();
    this->updateInfoBox();
}
Exemplo n.º 3
0
void Viewer::hideById(const unsigned int & id, const bool & hideStatus)
{
    SceneTraverser traverser;
    Node * result = nullptr;
    traverser.traverse(*m_camera, [&result, &id](Node & node)
    {
        if( node.id() == id){
            result = &node;
            return false;
        }
        return true;
    });

    if (result)
    {
        result->setHidden(hideStatus);
    }
}
Exemplo n.º 4
0
void Viewer::selectById(const unsigned int & id)
{
    SceneTraverser traverser;
    Node * result = nullptr;
    traverser.traverse(*m_camera, [&result, &id](Node & node)
    {
        if( node.id() == id){
            result = &node;
            return false;
        }
        return true;
    });

    if (result)
    {
        Node * parent = *result->parents().begin();
        int siblings = parent->children().size() - 1;
        if (m_selectedNodes.contains(id))
        {
            this->deselectNode(result);
            if (!siblings)
            {
                this->deselectNode(parent);
                this->treeToggleSelection(parent->id());
            }
        }
        else
        {
            this->selectNode(result);
            if (!siblings)
            {
                this->selectNode(parent);
                this->treeToggleSelection(parent->id());
            }
        }
    }
    this->updateInfoBox();
}