Files
Continentis/Assets/UMod/Examples/Scripts/SimpleRotate.cs
SoulliesOfficial 9b1b5ca93f initial
2025-10-03 00:02:43 -04:00

63 lines
1.7 KiB
C#

using System;
using UnityEngine;
namespace UMod.Example
{
public class SimpleRotate : MonoBehaviour
{
// Private
[Flags]
private enum RotateAxisFlags
{
X = 1,
Y = 2,
Z = 4,
}
public enum RotateAxis
{
X,
XY,
XYZ,
Y,
YZ,
Z,
}
// Public
public float rotateSpeed = 20;
public RotateAxis rotateAxis = RotateAxis.Y;
// Methods
public void Update()
{
float rotatePerFrame = rotateSpeed * Time.deltaTime;
RotateAxisFlags rotateFlags = GetAxisFlags();
float x = ((rotateFlags & RotateAxisFlags.X) != 0) ? rotatePerFrame : 0;
float y = ((rotateFlags & RotateAxisFlags.Y) != 0) ? rotatePerFrame : 0;
float z = ((rotateFlags & RotateAxisFlags.Z) != 0) ? rotatePerFrame : 0;
Quaternion extraRotation = Quaternion.Euler(x, y, z);
transform.Rotate(x, y, z, Space.World);
}
private RotateAxisFlags GetAxisFlags()
{
switch (rotateAxis)
{
case RotateAxis.X: return RotateAxisFlags.X;
case RotateAxis.XY: return RotateAxisFlags.X | RotateAxisFlags.Y;
case RotateAxis.XYZ: return RotateAxisFlags.X | RotateAxisFlags.Y | RotateAxisFlags.Z;
case RotateAxis.Y: return RotateAxisFlags.Y;
case RotateAxis.YZ: return RotateAxisFlags.Y | RotateAxisFlags.Z;
case RotateAxis.Z: return RotateAxisFlags.Z;
}
return 0;
}
}
}