Beispiel #1
0
        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));
        }
Beispiel #2
0
        private void RestoreTilt()
        {
            _tiltX  = 0;
            _tiltY  = 0;
            _stickX = _originX;
            _stickY = _originY;

            Tilt = new Point(_tiltX, _tiltY);

            TiltChanged?.Invoke(new SKPoint(_tiltX, _tiltY));
        }
Beispiel #3
0
 protected virtual void OnMMA8491QTiltChange(MMA8491QTiltEventArgs e)
 {
     TiltChanged?.Invoke(this, e);
 }