private void Joystick_Pan(Xamarin.Forms.Point point) { var newStickX = (float)(_stickX + point.X); var newStickY = (float)(_stickY + point.Y); var stickAngle = MathHelper.Angle(new SKPoint(_originX, _originY), new SKPoint(newStickX, newStickY)); var distance = MathHelper.Distance(new SKPoint(_originX, _originY), new SKPoint(newStickX, newStickY)); if (distance > _areaRadius * .5f) { _stickX = (float)Math.Cos(stickAngle) * _areaRadius * .5f + _originX; _stickY = (float)Math.Sin(stickAngle) * _areaRadius * .5f + _originY; distance = _areaRadius * .5f; } else { _stickX = newStickX; _stickY = newStickY; } _tiltX = (float)Math.Cos(stickAngle) * distance / (_areaRadius * .5f); _tiltY = (float)Math.Sin(stickAngle) * distance / (_areaRadius * .5f); Tilt = new Point(_tiltX, _tiltY); TiltChanged?.Invoke(new SKPoint(_tiltX, _tiltY)); }
private void RestoreTilt() { _tiltX = 0; _tiltY = 0; _stickX = _originX; _stickY = _originY; Tilt = new Point(_tiltX, _tiltY); TiltChanged?.Invoke(new SKPoint(_tiltX, _tiltY)); }
protected virtual void OnMMA8491QTiltChange(MMA8491QTiltEventArgs e) { TiltChanged?.Invoke(this, e); }