ZObject* ZObjectManager::Pick(ZObject* pMyObject,rvector& pos,rvector& dir, RPickInfo* pInfo) { ZObject* pPickObject = NULL; float best_dist = 10000.f; RPickInfo PickInfo; memset(&PickInfo,0,sizeof(RPickInfo)); ZObject* pObject; for (iterator itor = begin(); itor != end(); ++itor) { pObject = (*itor).second; if(pObject != pMyObject) { if(pObject->Pick(pos, dir, &PickInfo)) { if(PickInfo.t < best_dist) { pPickObject = pObject; *pInfo = PickInfo; best_dist = PickInfo.t; } } } } return pPickObject; }
ZObject* ZObjectManager::Pick(int x,int y,RPickInfo* pInfo) { ZObject* pPickObject = NULL; float best_dist = 10000.f; RPickInfo PickInfo; ZObject* pObject; for (iterator itor = begin(); itor != end(); ) { pObject = (*itor).second; if(pObject->Pick(x,y,&PickInfo)) { if(PickInfo.t < best_dist) { pPickObject = pObject; *pInfo = PickInfo; best_dist = PickInfo.t; } } ++itor; } return pPickObject; }