Hallo.
Ich habe 2 Cubes erstellt und möchte jetzt gern wissen, ob ich mit der Maus über einen bin.
Ich habe dies hier für auswählen gefunden, komme damit aber nicht ganz klar. Kann mir jemand bei dem Problemen weiterhelfen?
Hier mein bisheriger Code um ein wenig von Irrlicht zu verstehen (p.s. ich benutze absichtlich alle namesapces).
Code:
irr::video::IVideoDriver* driver = device->getVideoDriver();
irr::scene::ISceneManager* smgr = device->getSceneManager();
irr::gui::IGUIEnvironment* guienv = device->getGUIEnvironment();
irr::scene::ICameraSceneNode* cam = smgr->addCameraSceneNode(0, irr::core::vector3df(0,30,-40), irr::core::vector3df(0,5,0));
smgr->addLightSceneNode(0, irr::core::vector3df(0,20,-30));
irr::scene::ISceneNode* cube1 = smgr->addCubeSceneNode();
cube1->setMaterialTexture(0, driver->getTexture("../../irrlicht-1.5/media/t351sml.jpg"));
cube1->setMaterialFlag(irr::video::EMF_LIGHTING, false);
irr::scene::ISceneNode* cube2 = smgr->addCubeSceneNode(5.0f, 0, -1, irr::core::vector3df(10,0,0));
while (device->run())
{
driver->beginScene(true, true, irr::video::SColor(255,100,101,140));
smgr->drawAll();
guienv->drawAll();
driver->endScene();
// http://www.irrlicht3d.de/forum2/viewtopic.php?p=4523#p4523
// maus position ermitteln (2d koordinate)
irr::core::vector3df pt;
irr::core::triangle3df triangle;
irr::core::position2d<irr::s32> mousepos = device->getCursorControl()->getPosition();
// maus position zu einem 3d strahl transformieren (mit hilfe der aktuellen kamera)
irr::core::line3df ray = smgr->getSceneCollisionManager()->getRayFromScreenCoordinates(mousepos, cam);
irr::scene::ITriangleSelector* selector = smgr->createTriangleSelector(cube1, ???????); // da stand "node" drin, das habe ich aber nicht, wo muss ich das setzen?
//smgr->getSceneCollisionManager()->getCollisionPoint(ray, selector, pt, triangle);
// optional: koordinate in objekt-koordinatensystem umrechnen
//node->getRelativeTransformation().transformVect(pt);
//Caption = mousepos.X;
}
device->drop();