public static float GetCanyonNoise(Vector2 position, NoiseParameters noiseParameters, FastNoise noise, CanyonParameters canyonParameters, int seed = 0) { //Noise Height, Value bettween CayonParameters's limits, Results float n = 1.0f - GetFractalErosionNoise(position, noiseParameters, noise, seed); float n2 = MathFunc.Clamp01(MathFunc.Lerp(0f, 1f, MathFunc.InverseLerp(canyonParameters.minCanyonHeight, canyonParameters.canyonPlateauHeight, n))); float h = 0f; float t = (canyonParameters.canyonPlateauHeight - canyonParameters.minCanyonHeight); if (n <= canyonParameters.canyonPlateauHeight) { if (n >= canyonParameters.minCanyonHeight) { h = canyonParameters.GetValueAtHeight(n2); return(h); } else { return(canyonParameters.minCanyonHeight - n * -3f); } } else { //h = (n*(canyonParameters.canyonPlateauHeight-canyonParameters.minCanyonHeight)/2f)+1f; //h = (n-t)*0.2f+t; float x = 1f; //h = (n)*x+(t*(x*2)+0); h = 1 + (n - canyonParameters.canyonPlateauHeight) * 0.2f; return(h); } }
public static float LerpAngle(float a, float b, float t) { float num = MathFunc.Repeat(b - a, 360f); if (num > 180f) { num -= 360f; } return(a + num * MathFunc.Clamp01(t)); }
public float LevelProgress(int exp) { int levelForExp = LevelForExp(exp); int levelExp = ExpForLevel(levelForExp); float expDiff = exp - levelExp; float expDelta = ExpToNextLevel(levelForExp); if (expDelta == 0) { return(1f); } return(MathFunc.Clamp01((float)expDiff / (float)expDelta)); }
public static float InverseLerp(float a, float b, float value) { float result; if (a != b) { result = MathFunc.Clamp01((value - a) / (b - a)); } else { result = 0f; } return(result); }
public static float GetFractalAlpsNoise(Vector2 position, NoiseParameters noiseParameters, FastNoise noise, int seed = 0) { float warp = 1.5f; float sum = 0f; float freq = 1.0f, amp = 1.0f; Vector2 dsum = new Vector2(0, 0); for (int i = 0; i < noiseParameters.octaves; i++) { Vector3 n = GetDerivativePerlinNoise(position * freq, noise, seed + i); sum += amp * (1 - MathFunc.Abs(n.x)); dsum += amp * new Vector2(n.y, n.z) * -n.x; freq *= noiseParameters.lacunarity; amp *= noiseParameters.gain * MathFunc.Clamp01(sum); } return(sum); }
public static float SmoothStep(float from, float to, float t) { t = MathFunc.Clamp01(t); t = -2f * t * t * t + 3f * t * t; return(to * t + from * (1f - t)); }
public static float Lerp(float a, float b, float t) { return(a + (b - a) * MathFunc.Clamp01(t)); }