• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ osg::Group类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中osg::Group的典型用法代码示例。如果您正苦于以下问题:C++ Group类的具体用法?C++ Group怎么用?C++ Group使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了Group类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: while

void
RemoveEmptyGroupsVisitor::apply( osg::Group& group )
{
    bool removed = true;
    while( removed )
    {
        removed = false;
        for( unsigned i = 0; i < group.getNumChildren(); ++i )
        {
            osg::Group* child = group.getChild(i)->asGroup();
            if ( child )
            {
                if (child->className() == std::string("Group") &&
                    child->getStateSet() == 0L            &&
                    child->getCullCallback() == 0L        &&
                    child->getUpdateCallback() == 0L      &&
                    child->getUserData() == 0L            &&
                    child->getName().empty()              &&
                    child->getDescriptions().size() == 0 )
                {
                    for( unsigned j = 0; j < child->getNumChildren(); ++j )
                    {
                        group.addChild( child->getChild( j ) );
                    }

                    group.removeChild( i-- );
                    removed = true;
                }                
            }
        }
    }

    traverse(group);
}
开发者ID:airwzz999,项目名称:osgearth-for-android,代码行数:34,代码来源:NodeUtils.cpp


示例2:

/** Attacca al/ai nodi che corrispondono a nodeName */
void LoadThreadsHandler::AttachNodeToSceneByName::apply(osg::Group& grp)
{
	if (grp.getName() == _nodeName)
	{
		if(!_attached || _multipleattach)
		{
			if(_ranged)
			{
				osg::ref_ptr<osg::LOD> newlod = new osg::LOD;
				newlod->setName("RangedLOD_" + _attachNode->getName());

				newlod->addChild(_attachNode.get(), _min, _max);

				grp.addChild(newlod.get());
			}
			else
			{
				grp.addChild(_attachNode.get());
			}
			
			_attached = true;
		}
	}

	traverse(grp);
}
开发者ID:flyskyosg,项目名称:virtualrome,代码行数:27,代码来源:LoadThreadsHandler.cpp


示例3: if

void CVRCullVisitor::PreCullVisitor::apply(osg::Group& group)
{
    bool setMask = false;
    for(int i = 0; i < group.getNumChildren(); i++)
    {
        _setMask = false;
        group.getChild(i)->accept(*this);
        if(_setMask)
        {
            setMask = true;
        }
    }

    if(group.getNodeMask() & FIRST_CULL_STATUS)
    {
        _setMask = true;
    }
    else if(setMask)
    {
        //std::cerr << "Pulling up node mask." << std::endl;
        _setMask = true;
        group.setNodeMask(group.getNodeMask() | FIRST_CULL_STATUS);
    }

}
开发者ID:megasha,项目名称:calvr,代码行数:25,代码来源:CVRCullVisitor.cpp


示例4: apply

// apply method for groups
void GeometryExtractorVisitor::apply( osg::Group& group ) {
	
	// call the appropriate apply method for all children
	if( group.getNumChildren() > 0 ) {
		for( unsigned int i = 0; i < group.getNumChildren(); i++) {
			osg::Node* node = group.getChild( i );
			apply( *node );
		}
	}
}
开发者ID:szakats,项目名称:bzflag_mirror,代码行数:11,代码来源:GeometryExtractorVisitor.cpp


示例5: writeChildren

static bool writeChildren( osgDB::OutputStream& os, const osg::Group& node )
{
    unsigned int size = node.getNumChildren();
    os << size << osgDB::BEGIN_BRACKET << std::endl;
    for ( unsigned int i=0; i<size; ++i )
    {
        os << node.getChild(i);
    }
    os << osgDB::END_BRACKET << std::endl;
    return true;
}
开发者ID:aalex,项目名称:osg,代码行数:11,代码来源:Group.cpp


示例6: guard

void
FltExportVisitor::apply( osg::Group& node )
{
    ScopedStatePushPop guard( this, node.getStateSet() );

    if (_firstNode)
    {
        // On input, a FLT header creates a Group node.
        // On export, we always write a Header record, but then the first Node
        //   we export is the Group that was created from the original input Header.
        // On successive roundtrips, this results in increased redundant top-level Group nodes/records.
        // Avoid this by NOT outputting anything for a top-level Group node.
        _firstNode = false;
        traverse( node );
        return;
    }

    // A Group node could indicate one of many possible records.
    //   Header record -- Don't need to support this here. We always output a header.
    //   Group record -- HIGH
    //   Child of an LOD node -- HIGH Currently write out a Group record regardless.
    //   InstanceDefinition/InstanceReference -- MED --  multiparented Group is an instance
    //   Extension record -- MED
    //   Object record -- MED
    //   LightPointSystem record (if psgSim::MultiSwitch) -- LOW

    osgSim::MultiSwitch* multiSwitch = dynamic_cast<osgSim::MultiSwitch*>( &node );
    if (multiSwitch)
    {
        writeSwitch( multiSwitch );
    }

    else
    {
        osgSim::ObjectRecordData* ord =
            dynamic_cast< osgSim::ObjectRecordData* >( node.getUserData() );
        if (ord)
        {
            // This Group should write an Object Record.
            writeObject( node, ord );
        }
        else
        {
            // Handle other cases here.
            // For now, just output a Group record.
            writeGroup( node );
        }
    }

    writeMatrix( node.getUserData() );
    writeComment( node );
    writePushTraverseWritePop( node );
}
开发者ID:joevandyk,项目名称:osg,代码行数:53,代码来源:FltExportVisitor.cpp


示例7: handle

void SimpleDotVisitor::handle(osg::Group &node, int id)
{
    std::stringstream label;

    label << "<top> " << node.className();
    if (!node.getName().empty())
    {
        label << "| " << node.getName();
    }

    drawNode(id, "record", "solid", label.str(), "black", "white");
}
开发者ID:hyyh619,项目名称:OpenSceneGraph-3.4.0,代码行数:12,代码来源:SimpleDotVisitor.cpp


示例8: apply

void StatsVisitor::apply(osg::Group& node)
{
    if (node.getStateSet())
    {
        apply(*node.getStateSet());
    }

    ++_numInstancedGroup;
    _groupSet.insert(&node);

    traverse(node);
}
开发者ID:AndreyIstomin,项目名称:osg,代码行数:12,代码来源:Statistics.cpp


示例9: apply

	virtual void apply(osg::Group &group ) {
		for (unsigned int i = 0; i<group.getNumChildren(); ) {
			if( dynamic_cast<osgAL::SoundRoot*>(group.getChild(i)) && _mode==SEARCH_AND_DESTROY ) {
				group.removeChild(i);
			} else {
				if (dynamic_cast<osgAL::SoundRoot*>(group.getChild(i)) && _mode==SEARCH)
					_found_count++;

				group.getChild(i)->accept(*this);
				i++;
			}
		}
	}
开发者ID:leloulight,项目名称:lbanet,代码行数:13,代码来源:osgalviewer.cpp


示例10: apply

void WriterNodeVisitor::apply(osg::Group &node)
{
    pushStateSet(node.getStateSet());
    Lib3dsMeshInstanceNode * parent = _cur3dsNode;
#if DISABLE_3DS_ANIMATION
    osg::Matrix mat( osg::computeLocalToWorld(getNodePath()) );
    apply3DSMatrixNode(node, &mat, "grp");
#else
    apply3DSMatrixNode(node, NULL, "grp");
#endif
    if (succeeded())
        traverse(node);
    _cur3dsNode = parent;
    popStateSet(node.getStateSet());
}
开发者ID:artoolkit,项目名称:osg,代码行数:15,代码来源:WriterNodeVisitor.cpp


示例11: id

void
FltExportVisitor::writeObject(const osg::Group &group, osgSim::ObjectRecordData *ord)
{
    uint16   length(28);
    IdHelper id(*this, group.getName());

    if (!ord)
    {
        std::string warning("fltexp: writeObject has invalid ObjectRecordData.");
        OSG_WARN << warning << std::endl;
        _fltOpt->getWriteResult().warn(warning);
        return;
    }

    _records->writeInt16((int16) OBJECT_OP);
    _records->writeInt16(length);
    _records->writeID(id);
    _records->writeInt32(ord->_flags);
    _records->writeInt16(ord->_relativePriority);
    _records->writeUInt16(ord->_transparency);
    _records->writeUInt16(ord->_effectID1);
    _records->writeUInt16(ord->_effectID2);
    _records->writeUInt16(ord->_significance);
    _records->writeUInt16(0);   // reserved
}
开发者ID:hyyh619,项目名称:OpenSceneGraph-3.4.0,代码行数:25,代码来源:expPrimaryRecords.cpp


示例12: apply

 virtual void apply(osg::Group& group)
 {
     for (unsigned int i = 0; i < group.getNumChildren(); i++)
     {
         osg::Node* child = group.getChild(i);
         osg::Node* seam = seamReplacement(child);
         if (child != seam)
         {
             group.replaceChild(child,seam);
         }
         else
         {
             child->accept(*this);
         }
     }
 }
开发者ID:jesesun,项目名称:OpenSceneGraph,代码行数:16,代码来源:ReaderWriterTXP.cpp


示例13: apply

void CVRCullVisitor::apply(osg::Group& node)
{
    bool status = _cullingStatus;
    bool firstStatus = _firstCullStatus;

    if(isCulled(node))
    {
        _firstCullStatus = firstStatus;
        _cullingStatus = status;
        return;
    }

    // push the culling mode.
    pushCurrentMask();

    // push the node's state.
    StateSet* node_state = node.getStateSet();
    if(node_state)
        pushStateSet(node_state);

    handle_cull_callbacks_and_traverse(node);

    // pop the node's state off the render graph stack.    
    if(node_state)
        popStateSet();

    // pop the culling mode.
    popCurrentMask();

    _firstCullStatus = firstStatus;
    _cullingStatus = status;
}
开发者ID:megasha,项目名称:calvr,代码行数:32,代码来源:CVRCullVisitor.cpp


示例14: apply

void POVWriteNodeVisitor::apply(osg::Group& group)
{
    _out << "/* A group starts... */\n\n";

    // visiting children
    group.traverse(*this);

    _out << "/* A group ends... */\n\n";
}
开发者ID:asandroq,项目名称:orbis,代码行数:9,代码来源:worldviewpov.cpp


示例15: apply

 void FindByNameVisitor::apply(osg::Group &group)
 {
     if (Misc::StringUtils::ciEqual(group.getName(), mNameToFind))
     {
         mFoundNode = &group;
         return;
     }
     traverse(group);
 }
开发者ID:Pjstaab,项目名称:openmw,代码行数:9,代码来源:visitor.cpp


示例16: pushStateSet

void
CountsVisitor::apply(osg::Group& node)
{
    pushStateSet(node.getStateSet());

    _groups++;
    osg::ref_ptr<osg::Object> rp = (osg::Object*)&node;
    _uGroups.insert(rp);
    _totalChildren += node.getNumChildren();
    apply(node.getStateSet());

    if (++_depth > _maxDepth)
        _maxDepth = _depth;
    traverse((osg::Node&)node);
    _depth--;

    popStateSet();
}
开发者ID:lemonrong,项目名称:osg3DViewer,代码行数:18,代码来源:CountsVisitor.cpp


示例17: apply

void WriteNodeVisitor::apply(osg::Group& group)
{
	_out << "<group>\n";
	
	// visiting children
	group.traverse(*this);

	_out << "</group>\n";
}
开发者ID:asandroq,项目名称:orbis,代码行数:9,代码来源:worldviewxml.cpp


示例18: apply

void
GeometryValidator::apply(osg::Group& group)
{
    for(unsigned i=0; i<group.getNumChildren(); ++i)
    {
        osg::Geometry* geom = group.getChild(i)->asGeometry();
        if ( geom )
        {
            apply( *geom );
            if ( geom->getVertexArray() == 0L )
            {
                OE_NOTICE << "removing " << geom->getName() << " b/c of null vertex array\n";
                group.removeChild(geom);
                --i;
            }
        }
    }
}
开发者ID:pprabhu78,项目名称:osgearth,代码行数:18,代码来源:Utils.cpp


示例19: readChildren

static bool readChildren( osgDB::InputStream& is, osg::Group& node )
{
    unsigned int size = 0; is >> size >> osgDB::BEGIN_BRACKET;
    for ( unsigned int i=0; i<size; ++i )
    {
        osg::Node* child = dynamic_cast<osg::Node*>( is.readObject() );
        if ( child ) node.addChild( child );
    }
    is >> osgDB::END_BRACKET;
    return true;
}
开发者ID:aalex,项目名称:osg,代码行数:11,代码来源:Group.cpp


示例20: traverse

void
ShaderGenerator::apply(osg::Group& group)
{
    if ( !_active ) return;

    traverse(group);

#if 0
    std::set<VirtualProgram*> childVPs;
    unsigned childrenWithVP = 0;
    for(unsigned i=0; i<group.getNumChildren(); ++i)
    {
        osg::StateSet* stateset = group.getChild(i)->getStateSet();
        if ( !stateset )
            break;

        VirtualProgram* vp = dynamic_cast<VirtualProgram*>(stateset->getAttribute(VirtualProgram::SA_TYPE));
        if ( vp )
        {
            childVPs.insert( vp );
            childrenWithVP++;
        }
    }
    if ( childrenWithVP == group.getNumChildren() && childVPs.size() == 1 )
    {
        group.getOrCreateStateSet()->setAttributeAndModes( *childVPs.begin(), 1 );
        for(unsigned i=0; i<group.getNumChildren(); ++i)
        {
            group.getChild(i)->getStateSet()->removeAttribute(VirtualProgram::SA_TYPE);
        }
    }
#endif
}
开发者ID:dsallen,项目名称:osgearth,代码行数:33,代码来源:ShaderGenerator.cpp



注:本文中的osg::Group类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ osg::Image类代码示例发布时间:2022-05-31
下一篇:
C++ osg::GeometryUnrecPtr类代码示例发布时间:2022-05-31
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap