osg.Operation
是一个 OpenSceneGraph 中的基类,用于实现各种类型的操作。该类定义了接口,使得子类能够更加灵活地实现自己的操作,并且可以在 OpenSceneGraph 中使用。
在 OpenSceneGraph 中,osg.Operation
负责执行各种类型的操作。开发人员可以继承 osg.Operation
类,实现自己的操作,并且可以将其添加到场景图中,以便在运行时进行处理。
class OSG_EXPORT Operation : public NotificationCallback, public osg::Referenced
{
public:
Operation();
Operation(const Operation& op, const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
virtual ~Operation();
virtual void operator () (Object* object) = 0;
virtual void release();
virtual void reset();
osg::ref_ptr<Object> getUserData() const;
void setUserData(Object* userData);
};
Operation()
默认构造函数。
Operation(const Operation& op, const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY)
拷贝构造函数。
virtual ~Operation()
虚析构函数。
virtual void operator () (Object* object) = 0
在子类中重载该运算符,以执行实际的操作。
virtual void release()
在子类中重载该函数,释放所有资源。
virtual void reset()
在子类中重载该函数,重置数据。
osg::ref_ptr<Object> getUserData() const
获取用户数据。
void setUserData(Object* userData)
设置用户数据。
该类通常用于不同的操作中,比如渲染、动画、碰撞检测等等。以下是一个简单的示例:
class MyOperation : public osg::Operation
{
public:
virtual void operator () (Object* object)
{
std::cout << "MyOperation executing...\n";
}
};
int main()
{
osg::ref_ptr<MyOperation> op = new MyOperation;
op->operator() (0);
return 0;
}