public virtual bool FullPick(PPickPath pickPath) {
if ((Pickable || ChildrenPickable) && FullIntersects(pickPath.PickBounds)) {
pickPath.PushNode(this);
pickPath.PushMatrix(matrix);
bool thisPickable = Pickable && pickPath.AcceptsNode(this);
if (thisPickable && Pick(pickPath)) {
return true;
}
if (ChildrenPickable) {
int count = ChildrenCount;
for (int i = count - 1; i >= 0; i--) {
if (children[i].FullPick(pickPath)) {
return true;
}
}
}
if (thisPickable && PickAfterChildren(pickPath)) {
return true;
}
pickPath.PopMatrix(matrix);
pickPath.PopNode(this);
}
return false;
}