void SelectFromPoint(Vector2 mousePosition, bool isSelectionModification, bool removeSelection)
        {
            var ray          = _camera.CreateCameraRay(mousePosition);
            var currentState = _selectionManager.GetState();

            if (currentState.Mode == GeometrySelectionMode.Face)
            {
                if (currentState.Mode == GeometrySelectionMode.Face)
                {
                    var faceState = currentState as FaceSelectionState;

                    if (GeometryIntersection.IntersectFace(ray, faceState.RenderObject.Geometry, faceState.RenderObject.ModelMatrix, out var selectedFace) != null)
                    {
                        FaceSelectionCommand faceSelectionCommand = new FaceSelectionCommand(selectedFace.Value, isSelectionModification, removeSelection);
                        _commandManager.ExecuteCommand(faceSelectionCommand);
                        return;
                    }
                }
            }

            // Pick object
            var selectedObject = _sceneManger.SelectObject(ray);

            if (selectedObject == null && isSelectionModification == false)
            {
                // Only clear selection if we are not in geometry mode and the selection count is not empty
                if (currentState.Mode != GeometrySelectionMode.Object || currentState.SelectionCount() != 0)
                {
                    var selectionCommand = new ObjectSelectionCommand(new List <ISelectable>(), false, false);
                    _commandManager.ExecuteCommand(selectionCommand);
                }
            }
            else if (selectedObject != null)
            {
                var selectionCommand = new ObjectSelectionCommand(selectedObject, isSelectionModification, removeSelection);
                _commandManager.ExecuteCommand(selectionCommand);
            }
        }