Discrete2DRotation.cs

 avatar
unknown
csharp
2 years ago
1.1 kB
14
Indexable
using UnityEngine;

public class Discrete2DRotation
{
	public enum RotationDirection
	{
		North,
		Northeast,
		East,
		Southeast,
		South,
		Southwest,
		West,
		Northwest
	}

	private RotationDirection _currentDirection;

	public Discrete2DRotation(RotationDirection initialDirection = RotationDirection.North)
	{
		_currentDirection = initialDirection;
	}

	public float RotationAngle
	{
		get
		{
			return GetRotationAngle(_currentDirection);
		}
	}

	public RotationDirection CurrentDirection
	{
		get => _currentDirection;
		set => _currentDirection = value;
	}

	private float GetRotationAngle(RotationDirection direction)
	{
		switch (direction)
		{
			case RotationDirection.North:
				return 0;
			case RotationDirection.Northeast:
				return 45;
			case RotationDirection.East:
				return 90;
			case RotationDirection.Southeast:
				return 135;
			case RotationDirection.South:
				return 180;
			case RotationDirection.Southwest:
				return 225;
			case RotationDirection.West:
				return 270;
			case RotationDirection.Northwest:
				return 315;
			default:
				return 0;
		}
	}
}