/// <summary>
        /// Draws the shapes onto the canvas, which is displayed afterwards
        /// </summary>
        protected override void OnDraw(Canvas canvas)
        {
            // Draw shapes
            m_ShapeRadiusLeft.Draw(canvas);
            m_ShapeRadiusRight.Draw(canvas);
            m_ShapeStickLeft.Draw(canvas);
            m_ShapeStickRight.Draw(canvas);


            // Set paint for data text
            Paint paint = new Paint();

            paint.SetARGB(255, 0, 0, 0);
            paint.TextSize    = 20;
            paint.TextAlign   = Paint.Align.Center;
            paint.StrokeWidth = 5;

            // Draw data text for left joystick
            canvas.DrawText("DATA LEFT JOYSTICK", m_LeftJS.CENTER_X, m_LeftJS.CENTER_Y - SCREEN_HEIGHT / 2 - 30, paint);
            canvas.DrawText("Throttle " + m_LeftJS.GetThrottleValue(), m_LeftJS.CENTER_X, m_LeftJS.CENTER_Y - SCREEN_HEIGHT / 2, paint);
            canvas.DrawText("Rotation " + m_LeftJS.GetRotationValue(), m_LeftJS.CENTER_X, m_LeftJS.CENTER_Y - SCREEN_HEIGHT / 2 + 30, paint);
            canvas.DrawText("Angle is " + m_LeftJS.GetAngle() + " °", m_LeftJS.CENTER_X, m_LeftJS.CENTER_Y - SCREEN_HEIGHT / 2 + 60, paint);
            canvas.DrawText("Direction is " + m_LeftJS.GetDirection(), m_LeftJS.CENTER_X, m_LeftJS.CENTER_Y - SCREEN_HEIGHT / 2 + 90, paint);

            // Draw data text for right joystick
            canvas.DrawText("DATA RIGHT JOYSTICK", m_RightJS.CENTER_X, m_RightJS.CENTER_Y - SCREEN_HEIGHT / 2 - 30, paint);
            canvas.DrawText("Power is " + m_RightJS.GetPower() + " %", m_RightJS.CENTER_X, m_RightJS.CENTER_Y - SCREEN_HEIGHT / 2, paint);
            canvas.DrawText("Abs is " + m_RightJS.GetAbs(), m_RightJS.CENTER_X, m_RightJS.CENTER_Y - SCREEN_HEIGHT / 2 + 30, paint);
            canvas.DrawText("Angle is " + m_RightJS.GetAngle() + " °", m_RightJS.CENTER_X, m_RightJS.CENTER_Y - SCREEN_HEIGHT / 2 + 60, paint);
            canvas.DrawText("Direction is " + m_RightJS.GetDirection(), m_RightJS.CENTER_X, m_RightJS.CENTER_Y - SCREEN_HEIGHT / 2 + 90, paint);
        }
 /// <summary>
 /// Sets new bounds for the joystick oval
 /// </summary>
 /// <param name="xPosition">X-Position of the touch</param>
 /// <param name="yPosition">Y-Position of the touch</param>
 private void UpdateOvals(float xPosition, float yPosition)
 {
     // Check if touch is in left or right of the screen
     if (xPosition <= SCREEN_WIDTH / 2)
     {
         // Handle touch in the left half
         m_LeftJS.SetPosition(xPosition, yPosition);
         m_LeftJS.GetPower();
         // Check if touch was inside the displacement radius
         if ((m_LeftJS.GetAbs()) <= m_LeftJS.m_DisplacementRadius) // if((abs + m_LeftJS.m_StickRadius...
         {
             // Draw left joystick with original coordinates
             SetBoundsForLeftStick(
                 (int)xPosition - (int)m_LeftJS.m_StickRadius,
                 (int)yPosition - (int)m_LeftJS.m_StickRadius,
                 (int)xPosition + (int)m_LeftJS.m_StickRadius,
                 (int)yPosition + (int)m_LeftJS.m_StickRadius);
         }
         else
         {
             // Draw left joystick with maximum coordinates
             SetBoundsForLeftStick(
                 (int)(m_LeftJS.m_DisplacementRadius * Math.Cos(m_LeftJS.GetAngle() * Math.PI / 180)) - (int)m_LeftJS.m_StickRadius + (int)m_LeftJS.CENTER_X,
                 (int)(m_LeftJS.m_DisplacementRadius * Math.Sin(m_LeftJS.GetAngle() * Math.PI / 180)) - (int)m_LeftJS.m_StickRadius + (int)m_LeftJS.CENTER_Y,
                 (int)(m_LeftJS.m_DisplacementRadius * Math.Cos(m_LeftJS.GetAngle() * Math.PI / 180)) + (int)m_LeftJS.m_StickRadius + (int)m_LeftJS.CENTER_X,
                 (int)(m_LeftJS.m_DisplacementRadius * Math.Sin(m_LeftJS.GetAngle() * Math.PI / 180)) + (int)m_LeftJS.m_StickRadius + (int)m_LeftJS.CENTER_Y);
         }
     }
     else
     {
         // Handle touch in the right half
         m_RightJS.SetPosition(xPosition, yPosition);
         // Check if touch was inside the displacement radius
         if ((m_RightJS.GetAbs()) <= m_RightJS.m_DisplacementRadius)
         {
             // Draw right joystick with original coordinates
             SetBoundsForRightStick(
                 (int)xPosition - (int)m_RightJS.m_StickRadius,
                 (int)yPosition - (int)m_RightJS.m_StickRadius,
                 (int)xPosition + (int)m_RightJS.m_StickRadius,
                 (int)yPosition + (int)m_RightJS.m_StickRadius);
         }
         else
         {
             // Draw left joystick with maximum coordinates
             SetBoundsForRightStick(
                 (int)(m_RightJS.m_DisplacementRadius * Math.Cos(m_RightJS.GetAngle() * Math.PI / 180)) - (int)m_RightJS.m_StickRadius + (int)m_RightJS.CENTER_X,
                 (int)(m_RightJS.m_DisplacementRadius * Math.Sin(m_RightJS.GetAngle() * Math.PI / 180)) - (int)m_RightJS.m_StickRadius + (int)m_RightJS.CENTER_Y,
                 (int)(m_RightJS.m_DisplacementRadius * Math.Cos(m_RightJS.GetAngle() * Math.PI / 180)) + (int)m_RightJS.m_StickRadius + (int)m_RightJS.CENTER_X,
                 (int)(m_RightJS.m_DisplacementRadius * Math.Sin(m_RightJS.GetAngle() * Math.PI / 180)) + (int)m_RightJS.m_StickRadius + (int)m_RightJS.CENTER_Y);
         }
     }
 }