I have a very strange crash in my iPad app with a RaySceneQuery. To handle the touch input, I use two different SceneQueries, a RaySceneQuery for a single touch and a PlaneBoundedVolumeListSceneQuery for a double touch, so you can select more than one object at once.
In my init method, I'm initializing both queries like this:
Code: Select all
raySceneQuery = ogreSceneManager->createRayQuery(Ogre::Ray());
raySceneQuery->setSortByDistance(true);
raySceneQuery->setQueryTypeMask(Ogre::SceneManager::ENTITY_TYPE_MASK);
volumeSceneQuery = ogreSceneManager->createPlaneBoundedVolumeQuery(Ogre::PlaneBoundedVolumeList());
volumeSceneQuery->setQueryTypeMask(Ogre::SceneManager::ENTITY_TYPE_MASK);
Code: Select all
processSingleTouch() {
Ogre::Ray ray = cam->getCameraToViewportRay(Ogre::Real(x), Ogre::Real(y));
raySceneQuery->setRay(ray);
Ogre::RaySceneQueryResult& result = raySceneQuery->execute(); }
Code: Select all
processDoubleTouuch() {
Ogre::PlaneBoundedVolumeList volumes;
volumes.push_back(cam->getCameraToViewportBoxVolume(x1,y1,x2,y2,false));
volumeSceneQuery->setVolumes(volumes);
Ogre::SceneQueryResult& result = volumeSceneQuery->execute(); }
I have absolutely no idea why this happens. I quad-checked the code, even some programmer friends looked over it and we just can't find an error. Maybe I'm using them wrong? Maybe it's even a bug in Ogre? Has anyone every experienced a similar problem?
Any help would be greatly appreciated!