Exemplo n.º 1
0
void SceneGraphViewImpl::createGraph(SgvItem* item, SgNode* node)
{
    SgvItem* oldParent = parentItem;
    parentItem = item;
    list<SgvItem*> children; 
    for(int i=0; i<item->childCount(); i++)
        children.push_back((SgvItem*)item->child(i));

    SgGroup* group = dynamic_cast<SgGroup*>(node);
    if(group){
        for(SgGroup::const_iterator p = group->begin(); p != group->end(); ++p){
            SgvItem* item_ = findItem(parentItem, (*p).get());
            if(item_){
                createGraph(item_, (*p).get());
                children.remove(item_);
            }else{
                (*p)->accept(*this);
            }
        }
        for(list<SgvItem*>::iterator it = children.begin(); it != children.end(); it++){
            removeItem(*it);
        }
    }
    parentItem = oldParent;
}
Exemplo n.º 2
0
SgGroup::SgGroup(const SgGroup& org, SgCloneMap& cloneMap)
    : SgNode(org)
{
    children.reserve(org.numChildren());

    for(const_iterator p = org.begin(); p != org.end(); ++p){
        addChild(cloneMap.getClone<SgNode>(p->get()), false);
    }

    isBboxCacheValid = true;
    bboxCache = org.bboxCache;
}
Exemplo n.º 3
0
SgGroup::SgGroup(const SgGroup& org)
    : SgNode(org)
{
    children.reserve(org.numChildren());

    // shallow copy
    for(const_iterator p = org.begin(); p != org.end(); ++p){
        addChild(*p, false);
    }

    isBboxCacheValid = true;
    bboxCache = org.bboxCache;
}