KVOID Kylin::PhyX::CoverMonitor::Testing( KFLOAT fElapsed ) { if (!KylinRoot::GetSingletonPtr()->GetActiveCamera()) return; Ogre::Ray kRay = KylinRoot::GetSingletonPtr()->GetActiveCamera()->GetCameraToTargetRay(); KFLOAT fDistance = KylinRoot::GetSingletonPtr()->GetActiveCamera()->GetCameraDistance(); KVEC<Ogre::Entity *> kEntities; if ( OgreUtils::PickEntities(kRay,kEntities,KylinRoot::KR_SCENE_OBJ,fDistance) ) { for (int i = 0; i < kEntities.size(); i++) { if (!IsInclude(kEntities[i])) { EntityMaterialInstance* pEnt = KNEW EntityMaterialInstance(kEntities[i]); pEnt->setTransparency(COVER_OBJ_ALPHA); pEnt->setSceneBlending(SBT_TRANSPARENT_ALPHA); m_kCoverObj.push_back(pEnt); } } ////////////////////////////////////////////////////////////////////////// KBOOL bFlag = false; for ( CoverObjs::iterator it = m_kCoverObj.begin(); it != m_kCoverObj.end(); it ++ ) { bFlag = false; for (int i = 0; i < kEntities.size(); i++) { if ((*it)->getHost() == kEntities[i]) { bFlag = true; break; } } if (bFlag = false) { SAFE_DEL((*it)); it = m_kCoverObj.erase(it); } } } else { Destroy(); } }
void operator() (FeatureType const & f) { feature::TypesHolder types(f); if (!types.Has(m_coastType) && NeedProcess(types)) { double const d = f.GetDistance(m_pt, m_scale); ASSERT_GREATER_OR_EQUAL(d, 0.0, ()); if (IsInclude(d, types)) { string name; f.GetReadableName(name); string house = f.GetHouseNumber(); // if geom type is not GEOM_POINT, result center point doesn't matter in future use m2::PointD const pt = (types.GetGeoType() == feature::GEOM_POINT) ? f.GetCenter() : m2::PointD(); // name, house are assigned like move semantics m_cont.push_back(FeatureInfoT(GetResultDistance(d, types), types, name, house, pt)); } }