|
Array的书里有一段这样的有关交互的代码 除了这里的旋转之外 我还在交互的内容里加入自己定义的别的函数
在控制台下运行起来没有问题
但是在MFC下 由于自己定义的函数需要写进类里 所以在这里不知道如何实现 求大神指导
class ModelController : public osgGA::GUIEventHandler
{
public:
ModelController( osg::MatrixTransform* node )
: _model(node)
{}
virtual bool handle( const osgGA::GUIEventAdapter& ea,
osgGA::GUIActionAdapter& aa );
protected:
osg::ref_ptr<osg::MatrixTransform> _model;
};
bool ModelController::handle( const osgGA::GUIEventAdapter& ea,
osgGA::GUIActionAdapter& aa )
{
if ( !_model ) return false;
osg::Matrix matrix = _model->getMatrix();
switch ( ea.getEventType() )
{
case osgGA::GUIEventAdapter::KEYDOWN:
switch ( ea.getKey() )
{
case 'a': case 'A':
matrix *= osg::Matrix::rotate(-0.1f, osg::Z_AXIS);
break;
case 'd': case 'D':
matrix *= osg::Matrix::rotate(0.1f, osg::Z_AXIS);
break;
case 'w': case 'W':
matrix *= osg::Matrix::rotate(-0.1f, osg::X_AXIS);
break;
case 's': case 'S':
matrix *= osg::Matrix::rotate(0.1f, osg::X_AXIS);
break;
default:
break;
}
_model->setMatrix( matrix );
break;
default:
break;
}
return false;
}
|
|