First. Am I able to even use the RaySceneQuery method using the generic ST_GENERIC scene manager.
This is my picking method which was found from another forum post.
Code: Select all
// Start a new ray query
Ogre::Ray cameraRay = PrimedEngine::Instance().GetCamera()->getCameraToViewportRay( m_mouseX, m_mouseY );
Ogre::RaySceneQuery *raySceneQuery = PrimedEngine::Instance().GetSceneManager()->createRayQuery( cameraRay );
raySceneQuery->execute( );
Ogre::RaySceneQueryResult result = raySceneQuery->getLastResults( );
Ogre::MovableObject *closestObject = NULL;
float closestDistance = LONG_MAX; //used to be real
std::list< Ogre::RaySceneQueryResultEntry >::iterator rayIterator;
for ( rayIterator = result.begin( ); rayIterator != result.end( ); rayIterator++ )
{
if ( ( *rayIterator ).distance < closestDistance )
{
closestObject = ( *rayIterator ).movable;
closestDistance = ( *rayIterator ).distance;
}
}
// No object clicked
if ( closestObject == NULL )
{
PrimedEngine::Instance().GetRenderWindow()->setDebugText( "Nothing" );
}
else
{
Ogre::Entity *TestEntity = NULL;
PrimedEngine::Instance().GetRenderWindow()->setDebugText( closestObject->getMovableType() );
if(closestObject->getMovableType()=="Entity")
{
TestEntity = (Entity *)closestObject;
}
}
raySceneQuery->clearResults( );
PrimedEngine::Instance().GetSceneManager( )->destroyQuery( raySceneQuery ); When using ST_EXTERIOR_FAR or ST_EXTERIOR_REAL_FAR the picking method works and detects the entity but then I get a second problem where my CEGUI mouse pointer dissapers from the screen LOL.
I read that RaySceneQuery will only work with certain Scene Managers but Which Ones? I want to use the Generic one as it appears thats the best for the default Octree occlusion I want for all my meshes.
I am using 0.15.1 version of OGER. All i have in my scene is 1 ninja.mesh and thats it.
