|
例程中有一个漫游器的例子 以下是部分的代码
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::translate( 5.0f, 0.0f, 0.0f);
break;
case 'd': case 'D':
matrix *= osg::Matrix::translate( -5.0f, 0.0f, 0.0f);
break;
case 'w': case 'W':
matrix *= osg::Matrix::translate( 0.0f, -5.0f, 0.0f);
break;
case 's': case 'S':
matrix *= osg::Matrix::translate( 0.0f, 5.0f, 0.0f);
break;
default:
break;
}
_model->setMatrix( matrix );
break;
default:
break;
}
return false;
}此处实现的是位置的变换
若这里的响应是要增加或者删除场景的节点,应该如何处理 |
|