Theoretically, this should work:
Qt Code:
  1. bool OgreWidget::mousePressEvent( QMouseEvent* e )
  2. {
  3. MarkerNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
  4. //if (mTrayMgr->injectMouseDown(arg, id)) return true; //do you need that for something???
  5. if( e->button() == Qt::LeftButton )
  6. {
  7. ent_marker = mSceneMgr->createEntity( Ogre::SceneManager:: PT_SPHERE);
  8. MarkerNode->attachObject(ent_marker);
  9. MarkerNode->setScale(0.1f, 0.1f, 0.1f);
  10. Ogre::Real screenWidth = Ogre::Root::getSingleton().getAutoCreatedWindow()->getWidth();
  11. Ogre::Real screenHeight = Ogre::Root::getSingleton().getAutoCreatedWindow()->getHeight();
  12.  
  13. Ogre::Real offsetX = e->posF().x() / this->width();
  14. Ogre::Real offsetY = e->posF().y() / this->height();
  15. Ogre::Ray mouseRay = mCamera1->getCameraToViewportRay(offsetX, offsetY);
  16. std::pair<bool, Ogre::Real> result = mouseRay.intersects(CubeNode->getAttachedObject (0) ->getBoundingBox());
  17.  
  18. if(result.first)
  19. {
  20. Ogre:: Vector3 point = mouseRay.getPoint(result.second);
  21. MarkerNode->setPosition(point);
  22. }
  23. break;
  24. }
  25.  
  26. QWidget::mousePressEvent( e );
  27. }
To copy to clipboard, switch view to plain text mode