本文整理汇总了C++中ogre::RaySceneQuery::setQueryTypeMask方法的典型用法代码示例。如果您正苦于以下问题:C++ RaySceneQuery::setQueryTypeMask方法的具体用法?C++ RaySceneQuery::setQueryTypeMask怎么用?C++ RaySceneQuery::setQueryTypeMask使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ogre::RaySceneQuery
的用法示例。
在下文中一共展示了RaySceneQuery::setQueryTypeMask方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: quickSelect
bool DemoApp::quickSelect()
{
// Create RaySceneQuery
Ogre::Ray mouseRay = mCamera->getCameraToViewportRay(static_cast<float>(mMouse->getMouseState().X.abs)/mMouse->getMouseState().width, static_cast<float>(mMouse->getMouseState().Y.abs)/mMouse->getMouseState().height);
Ogre::RaySceneQuery * mRaySceneQuery = mSceneMgr->createRayQuery(Ogre::Ray());
// Set ray
mRaySceneQuery->setRay(mouseRay);
mRaySceneQuery->setQueryTypeMask(Ogre::SceneManager::ENTITY_TYPE_MASK);
mRaySceneQuery->setSortByDistance(true);
// Ray-cast and get first hit
Ogre::RaySceneQueryResult &result = mRaySceneQuery->execute();
Ogre::RaySceneQueryResult::iterator itr = result.begin();
if((itr != result.end() && itr->movable))
{
//Get hit location
Ogre::String name = itr->movable->getName();
bool found=false;
if(name=="Box")
{
itr++;
name = itr->movable->getName();
}
for(int i=0;i<TANK_LIMIT;i++)
{
if(name=="Tank"+std::to_string(i))
{
tanks.at(i).selected=true;
if(tanks.at(i).mSelectionCircle->getParentSceneNode()!=tanks.at(i).tankNode)
tanks.at(i).tankNode->attachObject(tanks.at(i).mSelectionCircle);
if(tanks.at(i).mHealthBar->getParentSceneNode()!=tanks.at(i).tankNode)
tanks.at(i).tankNode->attachObject(tanks.at(i).mHealthBar);
found=true;
tanks.at(i).path2->setVisible(true);
}
else if(controlPressed==false)
{
tanks.at(i).selected=false;
if(tanks.at(i).mSelectionCircle->getParentSceneNode()==tanks.at(i).tankNode)
tanks.at(i).tankNode->detachObject(tanks.at(i).mSelectionCircle);
if(tanks.at(i).mHealthBar->getParentSceneNode()==tanks.at(i).tankNode)
tanks.at(i).tankNode->detachObject(tanks.at(i).mHealthBar);
tanks.at(i).path2->setVisible(false);
}
}
if(found==false)
return false;
else return true;
}
return false;
}