Files
Cielonos/Assets/Scripts/SLSUtilities/General/MathExtensions.cs

131 lines
3.8 KiB
C#
Raw Normal View History

2025-11-25 08:19:33 -05:00
using System;
using UnityEngine;
2026-02-13 09:22:11 -05:00
namespace SLSUtilities.General
2025-11-25 08:19:33 -05:00
{
public static class MathExtensions
{
public static float ClampAngle(float lfAngle, float lfMin, float lfMax)
{
if (lfAngle < -360f) lfAngle += 360f;
if (lfAngle > 360f) lfAngle -= 360f;
return Mathf.Clamp(lfAngle, lfMin, lfMax);
}
public static Vector3 Flatten(this Vector3 vector)
{
return new Vector3(vector.x, 0, vector.z);
}
}
2026-04-18 13:57:19 -04:00
public abstract class LerpValue<T>
{
public T currentValue;
public T targetValue;
public bool IsPausing { get; set; }
public bool advancedSettings = false;
public abstract void Update(float deltaTime);
public abstract void Update(float customSpeed, float deltaTime);
}
2025-11-25 08:19:33 -05:00
2026-04-18 13:57:19 -04:00
public class LerpFloat : LerpValue<float>
2025-11-25 08:19:33 -05:00
{
public float lerpSpeed;
2026-04-18 13:57:19 -04:00
public float increaseSpeed;
public float decreaseSpeed;
2025-11-25 08:19:33 -05:00
public LerpFloat(float initialValue, float lerpSpeed)
{
this.currentValue = initialValue;
this.targetValue = initialValue;
2026-04-18 13:57:19 -04:00
this.advancedSettings = false;
2025-11-25 08:19:33 -05:00
this.lerpSpeed = lerpSpeed;
}
2026-04-18 13:57:19 -04:00
public LerpFloat(float initialValue, float increaseSpeed, float decreaseSpeed)
{
this.currentValue = initialValue;
this.targetValue = initialValue;
this.advancedSettings = true;
this.increaseSpeed = increaseSpeed;
this.decreaseSpeed = decreaseSpeed;
}
2025-11-25 08:19:33 -05:00
2026-04-18 13:57:19 -04:00
public override void Update(float deltaTime)
2025-11-25 08:19:33 -05:00
{
2026-04-18 13:57:19 -04:00
if (IsPausing) return;
if (advancedSettings)
{
if(targetValue > currentValue)
{
currentValue = Mathf.Lerp(currentValue, targetValue, increaseSpeed * deltaTime);
}
else
{
currentValue = Mathf.Lerp(currentValue, targetValue, decreaseSpeed * deltaTime);
}
}
else
{
currentValue = Mathf.Lerp(currentValue, targetValue, lerpSpeed * deltaTime);
}
2025-11-25 08:19:33 -05:00
}
2026-04-18 13:57:19 -04:00
public override void Update(float customSpeed, float deltaTime)
2025-11-25 08:19:33 -05:00
{
currentValue = Mathf.Lerp(currentValue, targetValue, customSpeed * deltaTime);
}
}
public class LerpVector3
{
public Vector3 currentValue;
public Vector3 targetValue;
public float lerpSpeed;
public LerpVector3(Vector3 initialValue, float lerpSpeed)
{
this.currentValue = initialValue;
this.targetValue = initialValue;
this.lerpSpeed = lerpSpeed;
}
public void Update(float deltaTime)
{
currentValue = Vector3.Lerp(currentValue, targetValue, lerpSpeed * deltaTime);
}
public void Update(float customSpeed, float deltaTime)
{
currentValue = Vector3.Lerp(currentValue, targetValue, customSpeed * deltaTime);
}
}
public class LerpColor
{
public Color currentValue;
public Color targetValue;
public float lerpSpeed;
public LerpColor(Color initialValue, float lerpSpeed)
{
this.currentValue = initialValue;
this.targetValue = initialValue;
this.lerpSpeed = lerpSpeed;
}
public void Update(float deltaTime)
{
currentValue = Color.Lerp(currentValue, targetValue, lerpSpeed * deltaTime);
}
public void Update(float customSpeed, float deltaTime)
{
currentValue = Color.Lerp(currentValue, targetValue, customSpeed * deltaTime);
}
}
}