/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
- using Delta.Engine;
- using Delta.Rendering.Basics.Drawing;
- using Delta.Rendering.Basics.Fonts;
- using Delta.Rendering.Basics.Materials;
- using Delta.Utilities.Datatypes;
- using NUnit.Framework;
-
- namespace Delta.InputSystem.Tests
- {
- /// <summary>
- /// Accelerometer tests
- /// </summary>
- internal class AccelerometerTests
- {
- #region CheckAccelerometerStates
- /// <summary>
- /// Check accelerometer states
- /// </summary>
- [Test, Category("Visual")]
- public static void CheckAccelerometerStates()
- {
- Input.IgnoreDeviceOrientation = true;
- Application.Start(delegate
- {
- Font.Default.Draw(
- "Accelerometer IsConnected " + Input.Accelerometer.IsConnected,
- Rectangle.FromCenter(new Point(0.5f, 0.55f), Size.Half));
- Font.Default.Draw(
- "Accelerometer Rotation " + Input.Accelerometer.Rotation,
- Rectangle.FromCenter(new Point(0.5f, 0.6f), Size.Half));
- Font.Default.Draw(
- "Accelerometer X " + Input.Accelerometer.Acceleration.X,
- Rectangle.FromCenter(new Point(0.5f, 0.65f), Size.Half));
- Font.Default.Draw(
- "Accelerometer Y " + Input.Accelerometer.Acceleration.Y,
- Rectangle.FromCenter(new Point(0.5f, 0.7f), Size.Half));
- Font.Default.Draw(
- "Accelerometer Z " + Input.Accelerometer.Acceleration.Z,
- Rectangle.FromCenter(new Point(0.5f, 0.75f), Size.Half));
-
- // Draw some lines for the accelerometer
- Line.Draw(new Point(0.3f, 0.4f), new Point(
- 0.2f + Input.Accelerometer.Acceleration.X * 0.6f, 0.4f),
- Color.Red);
- Line.Draw(new Point(0.3f, 0.4f), new Point(0.3f,
- 0.2f + Input.Accelerometer.Acceleration.Y * 0.6f),
- Color.Yellow);
-
- // Also draw a line for the rotation
- Point rotatedLine =
- new Point(0.2f, 0).Rotate(Input.Accelerometer.Rotation);
- Line.Draw(Point.Half - rotatedLine, Point.Half + rotatedLine,
- Color.Green);
- });
- }
- #endregion
-
- #region AccelerometerMiniGame
- /// <summary>
- /// Accelerometer mini game
- /// </summary>
- [Test, Category("Visual")]
- public static void AccelerometerMiniGame()
- {
- Input.IgnoreDeviceOrientation = true;
- Material2D playerMaterial = Material2D.Default;
- Point position = Point.Half;
- Point velocity;
- Size playerSize = new Size(0.05f);
- Application.Start(delegate
- {
- // input
- Vector accInput = Input.Accelerometer.Acceleration;
- velocity = new Point(-accInput.Y, -accInput.X);
-
- // movement
- position += velocity * Time.Delta;
- if (position.X < ScreenSpace.DrawArea.X)
- position.X = ScreenSpace.DrawArea.X;
- if (position.X > ScreenSpace.DrawArea.Right)
- position.X = ScreenSpace.DrawArea.Right;
- if (position.Y < ScreenSpace.DrawArea.Top)
- position.Y = ScreenSpace.DrawArea.Top;
- if (position.Y > ScreenSpace.DrawArea.Bottom)
- position.Y = ScreenSpace.DrawArea.Bottom;
-
- // draw
- playerMaterial.Draw(new Rectangle(position.X - playerSize.WidthHalf,
- position.Y - playerSize.HeightHalf, playerSize.Width,
- playerSize.HeightHalf));
- });
- }
- #endregion
- }
- }