Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
FloatCurve.cs
浏览该文件的文档.
1using Engine;
3
4namespace Game {
5 public struct FloatCurve {
8 public string ConvertToString(object value) =>
9 Engine.Serialization.HumanReadableConverter.ValuesListToString('|', ((FloatCurve)value).Points ?? []);
10
11 public object ConvertFromString(Type type, string data) =>
12 new FloatCurve(Engine.Serialization.HumanReadableConverter.ValuesListFromString<Vector2>('|', data));
13 }
14
15 public Vector2[] Points;
16
17 public FloatCurve(params Vector2[] points) => Points = points.ToArray();
18
19 public float Sample(float x) {
20 if (Points == null
21 || Points.Length == 0) {
22 return 0f;
23 }
24 int num = -1;
25 for (int i = 0; i < Points.Length; i++) {
26 if (Points[i].X > x) {
27 num = i;
28 break;
29 }
30 }
31 if (num < 0) {
32 return Points[Points.Length - 1].Y;
33 }
34 if (num == 0) {
35 return Points[0].Y;
36 }
37 Vector2 vector = Points[num - 1];
38 Vector2 vector2 = Points[num];
39 return MathUtils.Lerp(vector.Y, vector2.Y, MathUtils.LinearStep(vector.X, vector2.X, x));
40 }
41 }
42}
static float Lerp(float x1, float x2, float f)
static float LinearStep(float zero, float one, float f)
object ConvertFromString(Type type, string data)
float Sample(float x)
FloatCurve(params Vector2[] points)