osgDB.UpdateWrapperVersionProxy
类用于升级 OpenSceneGraph
场景图中包含的数据的版本。该类会检查场景图中的每一个子节点,如果其中某个子节点的数据版本比当前的版本要低,则会尝试升级该子节点的数据版本。
UpdateWrapperVersionProxy(int versionNumber)
构造一个 UpdateWrapperVersionProxy
对象,并指定目标版本号 versionNumber
。该版本号用于将子节点的数据版本升级到该版本号。
osgDB::updateWrapperVersion(sceneGraph, new osgDB::UpdateWrapperVersionProxy(newVersion));
使用 updateWrapperVersion
进行场景图的升级,其中 sceneGraph
代表需要升级的场景图,newVersion
代表升级到的新版本号。
class OSGDB_EXPORT UpdateWrapperVersionProxy : public osg::NodeVisitor
{
public:
UpdateWrapperVersionProxy(int versionNumber):
osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN),
_versionNumber(versionNumber) {}
// 尝试升级子节点的数据版本
void apply(osg::Node& node)
{
osg::Object* obj = dynamic_cast<osg::Object*>(&node);
if (obj)
{
// 如果当前版本低于目标版本,则进行升级
int version = obj->getUpdateWrapperVersion();
if (version < _versionNumber)
{
obj->update(obj->getUpdateWrapper(_versionNumber));
}
}
traverse(node);
}
protected:
int _versionNumber; // 目标版本号
};