calculate method

  1. @override
Offset calculate({
  1. required JoystickMode mode,
  2. required Offset startDragStickPosition,
  3. required Offset currentDragStickPosition,
  4. required Size baseSize,
})
override

Implementation

@override
Offset calculate({
  required JoystickMode mode,
  required Offset startDragStickPosition,
  required Offset currentDragStickPosition,
  required Size baseSize,
}) {
  double x = currentDragStickPosition.dx - startDragStickPosition.dx;
  double y = currentDragStickPosition.dy - startDragStickPosition.dy;

  final xOffset = _normalizeOffset(x / (baseSize.width / 2));
  final yOffset = _normalizeOffset(y / (baseSize.height / 2));

  switch (mode) {
    case JoystickMode.all:
      return Offset(xOffset, yOffset);
    case JoystickMode.vertical:
      return Offset(0.0, yOffset);
    case JoystickMode.horizontal:
      return Offset(xOffset, 0.0);
    case JoystickMode.horizontalAndVertical:
      return Offset(xOffset.abs() > yOffset.abs() ? xOffset : 0,
          yOffset.abs() > xOffset.abs() ? yOffset : 0);
  }
}