public override void OnSceneViewGUI(SceneView sceneView) { if (MenuTool == null) { PerformRemoveFromParent(); return; } if ((!MenuTool.WindowIsActive || MenuTool.Target != Manager.MouseOverObject) && Manager.HijackLeftMouseClick() && SceneViewWindow.GetMouseOverWindow(Event.current.mousePosition) == null) { // We know that we're hovering 'mouse over object' but we should check if we have a // good hit on some if it's children as well. Since: // - We're using unity's internal 'pick object' functionality and it's not always // (understandably) finding the leafs. We're interested in the leafs since we // present a list of all parents to MenuTool.Target. GameObject target = Manager.MouseOverObject; if (target != null && target.transform.childCount > 0) { var childHits = AgXUnity.Utils.Raycast.TestChildren(target, HandleUtility.GUIPointToWorldRay(Event.current.mousePosition), 500f); if (childHits.Count > 0 && childHits[0].Triangle.Valid) { target = childHits[0].Triangle.Target; } } MenuTool.Target = target; MenuTool.Show(); } }