osg.UserDataContainer 是 OpenSceneGraph 中的一个类,用于在场景图节点中存储自定义数据。该类是从 osg::Object 类继承而来,因此可以使用引用计数和多线程安全。
osg::UserDataContainer::UserDataContainer()
将任意类型的数据附加到节点上。
获取节点上附加的数据。
返回一个指向被附加数据的指针。
设置节点的名字,用于识别该节点。
获取节点的名字。
返回节点的名称。
获取附加在节点上的用户数据的信息。
返回是否成功获取用户数据信息。
通过名称获取节点上附加的用户数据。
返回是否成功获取用户数据。
向节点中添加一个用户数据对象。
返回是否成功添加用户数据对象。
移除节点上指定名称的用户数据对象。
返回是否成功移除用户数据对象。
判断节点上是否存在指定名称的用户数据对象。
返回是否存在指定名称的用户数据对象。
osg::ref_ptr<osg::Node> node = new osg::Node;
node->setName("My Node");
node->setUserData(new std::string("Some data to attach"));
std::vector<std::string> descriptions;
node->getDescription(descriptions);
int i = 0;
for (std::vector<std::string>::const_iterator description = descriptions.begin();
description != descriptions.end();
++description, ++i)
{
std::cout << i << ": " << *description << std::endl;
}
osg::ref_ptr<osg::Referenced> obj;
node->getUserData("Some data to attach", obj);
std::string *str = dynamic_cast<std::string*>(obj.get());
if (str)
{
std::cout << "The attached data is " << *str << std::endl;
}
node->removeUserObject("Some data to attach");