calculate method
Offset
calculate({
- required JoystickMode mode,
- required Offset startDragStickPosition,
- required Offset currentDragStickPosition,
- 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);
}
}