介绍:
osgManipulator.Scale1DCommand 类代表一个在一维方向上缩放的命令。它可以用于对场景中的对象进行缩放操作。
继承关系:
osgManipulator.Scale1DCommand 继承自 osgManipulator.Command 类。
头文件:
#include <osgManipulator/Command>
#include <osgManipulator/Scale1DCommand>
命名空间:
osgManipulator
类定义:
class osgManipulator::Scale1DCommand : public osgManipulator::Command
成员函数:
Scale1DCommand():创建一个 osgManipulator::Scale1DCommand 对象。
Scale1DCommand(osgManipulator::Command *cmd):用一个指向 osgManipulator::Command 的指针创建一个 osgManipulator::Scale1DCommand 对象。
virtual void execute(osgManipulator::Action *action, bool enableUndo):执行一次缩放操作。
virtual void store(osgManipulator::Action *action):储存缩放之前的状态。
virtual void revert(osgManipulator::Action *action):撤销缩放操作,恢复之前的状态。
bool isScaled() const:返回当前节点是否被缩放。
void setFactor(float factor):设置缩放因子。
float getFactor() const:返回当前缩放因子。
数据成员:
osg::observer_ptrosg::Node m_node:被操作的节点。
osg::Matrixd m_previousMatrix:缩放之前的矩阵。
float m_factor:缩放因子。
bool m_isScaled:当前节点是否被缩放。
示例代码:
#include <osg/Node>
#include <osg/Group>
#include <osgViewer/Viewer>
#include <osgManipulator/TranslateAxisDragger>
#include <osgManipulator/CommandManager>
#include <osgManipulator/Scale1DCommand>
osg::ref_ptr<osgManipulator::TranslateAxisDragger> dragger;
void makeObject(osg::ref_ptr<osg::Node> node)
{
dragger = new osgManipulator::TranslateAxisDragger();
dragger->setupDefaultGeometry();
osgManipulator::CommandManager* cmdMgr = new osgManipulator::CommandManager;
cmdMgr->connect(*(dragger->getOrCreateCommand()));
node->addChild(dragger.get());
}
int main()
{
osg::ref_ptr<osg::Group> root = new osg::Group;
osg::ref_ptr<osg::Geode> geode = new osg::Geode();
geode->addDrawable(new osg::ShapeDrawable(new osg::Cone()));
root->addChild(geode.get());
makeObject(geode.get());
osgViewer::Viewer viewer;
viewer.setSceneData(root.get());
return viewer.run();
}