Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}