其实这些OGRE已经帮我们做好了。。不多说 看代码
这里关键是要监听类要继承MouseListener
然后在mousePressed(MouseEvent* e)进行处理,关键是这个函数
virtual void mousePressed(MouseEvent* e)
{
// Left mouse button down
if (e->getButtonID() & MouseEvent::BUTTON0_MASK)
{
// Setup the ray scene query
Ray mouseRay = mCamera->getCameraToViewportRay( e->getX(), e->getY() );
mRaySceneQuery->setRay( mouseRay );
// Execute query
RaySceneQueryResult &result = mRaySceneQuery->execute();
RaySceneQueryResult::iterator itr = result.begin( );
// Get results, create a node/entity on the position
if ( itr != result.end() && itr->worldFragment )
{
char name[16];
sprintf( name, "Robot%d", mCount++ );
Entity *ent = mSceneMgr->createEntity( name, "robot.mesh" );
mCurrentObject = mSceneMgr->getRootSceneNode( )->createChildSceneNode( String(name) + "Node", itr->worldFragment->singleIntersection );
mCurrentObject->attachObject( ent );
mCurrentObject->setScale( 0.1f, 0.1f, 0.1f );
} // if
mLMouseDown = true;
} // if
// Right mouse button down
else if (e->getButtonID() & MouseEvent::BUTTON1_MASK)
{
mRMouseDown = true;
CEGUI::MouseCursor::getSingleton().hide( );
} // else if
} // mousePressed