PageRenderTime 44ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/InputSystem/Tests/AccelerometerTests.cs

#
C# | 95 lines | 75 code | 6 blank | 14 comment | 4 complexity | d2a4a4d818ac40d1b1c153caa39c8df2 MD5 | raw file
Possible License(s): Apache-2.0
  1. using Delta.Engine;
  2. using Delta.Rendering.Basics.Drawing;
  3. using Delta.Rendering.Basics.Fonts;
  4. using Delta.Rendering.Basics.Materials;
  5. using Delta.Utilities.Datatypes;
  6. using NUnit.Framework;
  7. namespace Delta.InputSystem.Tests
  8. {
  9. /// <summary>
  10. /// Accelerometer tests
  11. /// </summary>
  12. internal class AccelerometerTests
  13. {
  14. #region CheckAccelerometerStates
  15. /// <summary>
  16. /// Check accelerometer states
  17. /// </summary>
  18. [Test, Category("Visual")]
  19. public static void CheckAccelerometerStates()
  20. {
  21. Input.IgnoreDeviceOrientation = true;
  22. Application.Start(delegate
  23. {
  24. Font.Default.Draw(
  25. "Accelerometer IsConnected " + Input.Accelerometer.IsConnected,
  26. Rectangle.FromCenter(new Point(0.5f, 0.55f), Size.Half));
  27. Font.Default.Draw(
  28. "Accelerometer Rotation " + Input.Accelerometer.Rotation,
  29. Rectangle.FromCenter(new Point(0.5f, 0.6f), Size.Half));
  30. Font.Default.Draw(
  31. "Accelerometer X " + Input.Accelerometer.Acceleration.X,
  32. Rectangle.FromCenter(new Point(0.5f, 0.65f), Size.Half));
  33. Font.Default.Draw(
  34. "Accelerometer Y " + Input.Accelerometer.Acceleration.Y,
  35. Rectangle.FromCenter(new Point(0.5f, 0.7f), Size.Half));
  36. Font.Default.Draw(
  37. "Accelerometer Z " + Input.Accelerometer.Acceleration.Z,
  38. Rectangle.FromCenter(new Point(0.5f, 0.75f), Size.Half));
  39. // Draw some lines for the accelerometer
  40. Line.Draw(new Point(0.3f, 0.4f), new Point(
  41. 0.2f + Input.Accelerometer.Acceleration.X * 0.6f, 0.4f),
  42. Color.Red);
  43. Line.Draw(new Point(0.3f, 0.4f), new Point(0.3f,
  44. 0.2f + Input.Accelerometer.Acceleration.Y * 0.6f),
  45. Color.Yellow);
  46. // Also draw a line for the rotation
  47. Point rotatedLine =
  48. new Point(0.2f, 0).Rotate(Input.Accelerometer.Rotation);
  49. Line.Draw(Point.Half - rotatedLine, Point.Half + rotatedLine,
  50. Color.Green);
  51. });
  52. }
  53. #endregion
  54. #region AccelerometerMiniGame
  55. /// <summary>
  56. /// Accelerometer mini game
  57. /// </summary>
  58. [Test, Category("Visual")]
  59. public static void AccelerometerMiniGame()
  60. {
  61. Input.IgnoreDeviceOrientation = true;
  62. Material2D playerMaterial = Material2D.Default;
  63. Point position = Point.Half;
  64. Point velocity;
  65. Size playerSize = new Size(0.05f);
  66. Application.Start(delegate
  67. {
  68. // input
  69. Vector accInput = Input.Accelerometer.Acceleration;
  70. velocity = new Point(-accInput.Y, -accInput.X);
  71. // movement
  72. position += velocity * Time.Delta;
  73. if (position.X < ScreenSpace.DrawArea.X)
  74. position.X = ScreenSpace.DrawArea.X;
  75. if (position.X > ScreenSpace.DrawArea.Right)
  76. position.X = ScreenSpace.DrawArea.Right;
  77. if (position.Y < ScreenSpace.DrawArea.Top)
  78. position.Y = ScreenSpace.DrawArea.Top;
  79. if (position.Y > ScreenSpace.DrawArea.Bottom)
  80. position.Y = ScreenSpace.DrawArea.Bottom;
  81. // draw
  82. playerMaterial.Draw(new Rectangle(position.X - playerSize.WidthHalf,
  83. position.Y - playerSize.HeightHalf, playerSize.Width,
  84. playerSize.HeightHalf));
  85. });
  86. }
  87. #endregion
  88. }
  89. }