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(); }