Ejemplo n.º 1
0
void mouse(int button, int state, int x, int y)
{
   if (state)
   {
      G.mgr->mouseButtonRelease(button, x, y);
   }
   else
   {
      OSG::Line ray = G.mgr->calcViewRay(x, y);
      OSG::IntersectActionRefPtr ia = OSG::IntersectAction::create();
      ia->setLine(ray);
      ia->apply(G.mgr->getRoot());

      if(ia->didHit())
      {
         G.selectedNode = ia->getHitObject();

         if(OSG::getVoidP(G.selectedNode))
         {
            if(static_cast<BoardGame::Figure*>(OSG::getVoidP(G.selectedNode)))
            {
               std::cout << "Selected figure" << std::endl;
               ia = 0;
               return;
            }
         }
      }
      ia = 0;

      G.mgr->mouseButtonPress(button, x, y);
   }

   glutPostRedisplay();
}