void ccPointPickingGenericInterface::onItemPicked(const PickedItem& pi)
{
	if (m_processing && pi.entity)
	{
		processPickedPoint(pi);
	}
}
void ccPointPickingGenericInterface::handlePickedItem(int entityID, unsigned itemIdx, int x, int y)
{
	if (!m_processing)
		return;

	ccPointCloud* cloud = 0;

	ccHObject* obj = MainWindow::TheInstance()->db()->find(entityID);
	if (!obj)
		return;
	
	if (obj->isKindOf(CC_TYPES::POINT_CLOUD))
	{
		cloud = static_cast<ccPointCloud*>(obj);
		if (!cloud)
		{
			assert(false);
			ccLog::Warning("[Item picking] Picked point is not in pickable entities DB?!");
			return;
		}

		const CCVector3* P = cloud->getPoint(itemIdx);
		if (P)
		{
			processPickedPoint(cloud, itemIdx, x, y);
		}
		else
		{
			ccLog::Warning("[Item picking] Invalid point index!");
		}
	}
	else if (obj->isKindOf(CC_TYPES::MESH))
	{
		//NOT HANDLED: 'POINT_PICKING' mode only for now
		assert(false);
	}
	else
	{
		//unhandled entity
		assert(false);
	}
}