internal static GameObject PickGameObject(Vector2 position, bool selectPrefabRoot, GameObject[] ignore, GameObject[] filter)
{
int num;
GameObject gameObject = HandleUtility.PickGameObjectDelegated(position, ignore, filter, out num);
GameObject result;
if (gameObject && selectPrefabRoot)
{
GameObject gameObject2 = HandleUtility.FindSelectionBase(gameObject) ?? gameObject;
Transform activeTransform = Selection.activeTransform;
GameObject y = (!activeTransform) ? null : (HandleUtility.FindSelectionBase(activeTransform.gameObject) ?? activeTransform.gameObject);
if (gameObject2 == y)
{
result = gameObject;
}
else
{
result = gameObject2;
}
}
else
{
result = gameObject;
}
return result;
}