Files
vr-configurator/vr-configurator/Assets/Scripts/Util/MathUtil.cs

110 lines
3.1 KiB
C#

using System;
using UnityEngine;
// THIS IS TAKEN OUT OF A MATH LIBRARY
public static class MathUtil
{
public static float EaseIn(float startNum, float endNum, float pct)
{
return startNum + (endNum - startNum) * (pct * pct);
}
public static Vector3 EaseIn(Vector3 start, Vector3 end, float pct)
{
return start + (end - start) * (pct * pct);
}
public static float EaseIn_Cube(float startNum, float endNum, float pct)
{
return startNum + (endNum - startNum) * (pct * pct * pct);
}
public static float EaseIn_Pow(float startNum, float endNum, float pct, float pow)
{
return startNum + (endNum - startNum) * Mathf.Pow(pct, pow);
}
public static float EaseOut(float startNum, float endNum, float pct)
{
return startNum + (endNum - startNum) * (1f - (1f - pct) * (1f - pct));
}
public static Vector3 EaseOut(Vector3 start, Vector3 end, float pct)
{
return start + (end - start) * (1f - (1f - pct) * (1f - pct));
}
public static float EaseOut_Cube(float startNum, float endNum, float pct)
{
return startNum + (endNum - startNum) * (1f - (1f - pct) * (1f - pct) * (1f - pct));
}
public static float EaseOut_Pow(float start, float end, float pct, float pow)
{
return start + (end - start) * (1f - Mathf.Pow(1f - pct, pow));
}
public static float EaseBoth(float startNum, float endNum, float pct)
{
if (pct < 0.5)
{
return MathUtil.EaseIn(startNum, (startNum + endNum) / 2f, pct * 2f);
}
return MathUtil.EaseOut((startNum + endNum) / 2f, endNum, (pct - 0.5f) * 2f);
}
public static Vector3 EaseBoth(Vector3 start, Vector3 end, float pct)
{
if (pct < 0.5)
{
return MathUtil.EaseIn(start, (start + end) / 2f, pct * 2f);
}
return MathUtil.EaseOut((start + end) / 2f, end, (pct - 0.5f) * 2f);
}
public static float EaseBoth_Cube(float startNum, float endNum, float pct)
{
if (pct < 0.5)
{
return MathUtil.EaseIn_Cube(startNum, (startNum + endNum) / 2f, pct * 2f);
}
return MathUtil.EaseOut_Cube((startNum + endNum) / 2f, endNum, (pct - 0.5f) * 2f);
}
public static float Bump(float startNum, float bumpAmount, float pct)
{
if (pct < 0.5)
{
return MathUtil.EaseOut(startNum, startNum + bumpAmount, pct * 2f);
}
return MathUtil.EaseIn(startNum + bumpAmount, startNum, (pct - 0.5f) * 2f);
}
public static float Linear(float startNum, float endNum, float pct)
{
return startNum + (endNum - startNum) * pct;
}
public static Vector3 Linear(Vector3 start, Vector3 end, float pct)
{
return start + (end - start) * pct;
}
public static float AvgAngle(float a, float b)
{
float num = Math.Abs(a - b);
float num2;
if (num < 180f)
{
num2 = (a + b) / 2f;
}
else
{
num2 = (a + b) / 2f + 180f;
}
return (num2 + 360f) % 360f;
}
}