private void CalculatePointerMessages(Vector2 pointerLocation, bool pointerNewlyPressed, bool pointerNewlyReleased) { var gameObjectsUnderMouse = new List <int>(); int?pickedGameObjectId = null; var objectPicked = _sceneGraph.Pick(pointerLocation, ref pickedGameObjectId); if (objectPicked) { if (pickedGameObjectId != _previousGameObjectUnderPointer && _previousGameObjectUnderPointer.HasValue) { _messageManager.QueueMessage(new PointerExitMessage(_previousGameObjectUnderPointer.Value)); } if (_previousGameObjectUnderPointer == null || pickedGameObjectId.Value != _previousGameObjectUnderPointer.Value) { _previousGameObjectUnderPointer = pickedGameObjectId; _messageManager.QueueMessage(new PointerEnterMessage(pickedGameObjectId.Value)); } if (pointerNewlyPressed) { _messageManager.QueueMessage(new PointerPressMessage(pickedGameObjectId.Value)); } if (pointerNewlyReleased) { _messageManager.QueueMessage(new PointerReleaseMessage(pickedGameObjectId.Value)); } } else if (_previousGameObjectUnderPointer >= 0) { _messageManager.QueueMessage(new PointerExitMessage(_previousGameObjectUnderPointer.Value)); _previousGameObjectUnderPointer = null; } }
private void CalculateKeyDownMessages(KeyboardState newKeyState) { var keys = newKeyState.GetPressedKeys().Where(key => !_oldKeyState.IsKeyDown(key)); foreach (var key in keys) { _messageManager.QueueMessage(new KeyDownMessage(key)); } }