Random Functions

This commit is contained in:
2021-01-30 15:30:35 +08:00
parent ca8149da1f
commit 76edfff94f
334 changed files with 59303 additions and 8 deletions

View File

@@ -11,8 +11,18 @@ public class Graph : MonoBehaviour
[SerializeField]
FunctionLibrary.FunctionName function = default;
public enum TransitionMode { Normal, Cycle, Random }
[SerializeField]
TransitionMode transitionMode = TransitionMode.Normal;
[SerializeField, Min(0.0f)]
float functionDuration = 1.0f;
Transform[] points;
float duration = 0.0f;
private void Awake()
{
var step = 2f / resolution;
@@ -28,6 +38,26 @@ public class Graph : MonoBehaviour
}
private void Update()
{
duration += Time.deltaTime;
if (duration >= functionDuration)
{
duration -= functionDuration;
PickNextFunction();
}
UpdateFunction();
}
private void PickNextFunction()
{
if (transitionMode == TransitionMode.Normal) return;
function = transitionMode == TransitionMode.Cycle ?
FunctionLibrary.GetNextFunctionName(function) :
FunctionLibrary.GetRandomFunctionNameOtherThan(function);
}
private void UpdateFunction()
{
FunctionLibrary.Function f = FunctionLibrary.GetFunction(function);
var time = Time.time;
@@ -45,4 +75,5 @@ public class Graph : MonoBehaviour
points[i].localPosition = f(u, v, time);
}
}
}