Theoretically, this should work:
{
MarkerNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
//if (mTrayMgr->injectMouseDown(arg, id)) return true; //do you need that for something???
if( e->button() == Qt::LeftButton )
{
ent_marker = mSceneMgr->createEntity( Ogre::SceneManager:: PT_SPHERE);
MarkerNode->attachObject(ent_marker);
MarkerNode->setScale(0.1f, 0.1f, 0.1f);
Ogre::Real screenWidth = Ogre::Root::getSingleton().getAutoCreatedWindow()->getWidth();
Ogre::Real screenHeight = Ogre::Root::getSingleton().getAutoCreatedWindow()->getHeight();
Ogre::Real offsetX = e->posF().x() / this->width();
Ogre::Real offsetY = e->posF().y() / this->height();
Ogre::Ray mouseRay = mCamera1->getCameraToViewportRay(offsetX, offsetY);
std::pair<bool, Ogre::Real> result = mouseRay.intersects(CubeNode->getAttachedObject (0) ->getBoundingBox());
if(result.first)
{
Ogre:: Vector3 point = mouseRay.getPoint(result.second);
MarkerNode->setPosition(point);
}
break;
}
}
bool OgreWidget::mousePressEvent( QMouseEvent* e )
{
MarkerNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
//if (mTrayMgr->injectMouseDown(arg, id)) return true; //do you need that for something???
if( e->button() == Qt::LeftButton )
{
ent_marker = mSceneMgr->createEntity( Ogre::SceneManager:: PT_SPHERE);
MarkerNode->attachObject(ent_marker);
MarkerNode->setScale(0.1f, 0.1f, 0.1f);
Ogre::Real screenWidth = Ogre::Root::getSingleton().getAutoCreatedWindow()->getWidth();
Ogre::Real screenHeight = Ogre::Root::getSingleton().getAutoCreatedWindow()->getHeight();
Ogre::Real offsetX = e->posF().x() / this->width();
Ogre::Real offsetY = e->posF().y() / this->height();
Ogre::Ray mouseRay = mCamera1->getCameraToViewportRay(offsetX, offsetY);
std::pair<bool, Ogre::Real> result = mouseRay.intersects(CubeNode->getAttachedObject (0) ->getBoundingBox());
if(result.first)
{
Ogre:: Vector3 point = mouseRay.getPoint(result.second);
MarkerNode->setPosition(point);
}
break;
}
QWidget::mousePressEvent( e );
}
To copy to clipboard, switch view to plain text mode
Bookmarks