void HandleInput(Event guiEvent, VoiceOverrideRoomEnterButton voiceOverrideRoomEnterButton) { Ray mouseRay = HandleUtility.GUIPointToWorldRay(guiEvent.mousePosition); float drawPlaneHeight = 0; float dstToDrawPlane = (drawPlaneHeight - mouseRay.origin.y) / mouseRay.direction.y; Vector3 mousePosition = mouseRay.GetPoint(dstToDrawPlane); if (guiEvent.type == EventType.MouseDown && guiEvent.button == 0 && guiEvent.modifiers == EventModifiers.None) { HandleLeftMouseDown(mousePosition, voiceOverrideRoomEnterButton); } }
void HandleLeftMouseDown(Vector3 mousePosition, VoiceOverrideRoomEnterButton voiceOverrideRoomEnterButton) { if (Utilities.IsValid(voiceOverrideRoomEnterButton.voiceOverrideRoom)) { var roomGuiPosition = HandleUtility.WorldToGUIPoint(voiceOverrideRoomEnterButton.voiceOverrideRoom.transform.position); var mouseGuiPosition = HandleUtility.WorldToGUIPoint(mousePosition); var clickCloseToRoomGameObject = Vector2.Distance(roomGuiPosition, mouseGuiPosition) < 10f; if (clickCloseToRoomGameObject) { Selection.SetActiveObjectWithContext(voiceOverrideRoomEnterButton.voiceOverrideRoom.gameObject, voiceOverrideRoomEnterButton.voiceOverrideRoom); EditorGUIUtility.PingObject(voiceOverrideRoomEnterButton.voiceOverrideRoom); } } }