SnapRotate.cs

 avatar
unknown
csharp
2 years ago
841 B
14
Indexable
using UnityEngine;

[ExecuteInEditMode]
public class SnapRotate : MonoBehaviour
{
	public Discrete2DRotation Pitch { get; private set; }
	public Discrete2DRotation Yaw { get; private set; }
	public Discrete2DRotation Roll { get; private set; }

	public SnapRotate()
	{
		Pitch = new Discrete2DRotation();
		Yaw = new Discrete2DRotation();
		Roll = new Discrete2DRotation();
	}

	private void Update()
	{
		ApplyRotation();
	}

	private void OnValidate()
	{
		ApplyRotation();
	}

	private void ApplyRotation()
	{
		// Reset the rotation
		transform.rotation = Quaternion.identity;

		// Apply pitch, yaw, and roll rotations sequentially
		transform.Rotate(Vector3.right, Pitch.RotationAngle, Space.Self);
		transform.Rotate(Vector3.up, Yaw.RotationAngle, Space.Self);
		transform.Rotate(Vector3.forward, Roll.RotationAngle, Space.Self);
	}
}
Editor is loading...