diff --git a/math.d b/math.d index bf04f6b..5d46369 100644 --- a/math.d +++ b/math.d @@ -952,22 +952,22 @@ Transform(Vec3* vec, Mat4* mat, f32 last = 1.0) *vec = tvec.xyz; } -pragma(inline) f32 -Lerp(f32 x, f32 y, f32 a) +pragma(inline) T +Lerp(T)(T x, T y, T a) { return x * (1 - a) + y * a; } -pragma(inline) f32 -InverseLerp(f32 v, f32 min, f32 max) +pragma(inline) T +InverseLerp(T)(T v, T min, T max) { return (v - min) / (max - min); } -pragma(inline) f32 -Remap(f32 v, f32 in_min, f32 in_max, f32 out_min, f32 out_max) +pragma(inline) T +Remap(T)(T v, T in_min, T in_max, T out_min, T out_max) { - f32 t = InverseLerp(v, in_min, in_max); + T t = InverseLerp(v, in_min, in_max); return Lerp(out_min, out_max, t); } @@ -1217,5 +1217,10 @@ version(DLIB_TEST) unittest assert(Mix(m0, m1, 1.0) == m1); assert(Mix(m0, m1, 0.5) == Vec4(5.0)); assert(Mix(m0, m1, 0.75) == Vec4(7.5)); + + void TestModify(Vec4 v) + { + v.r = 55; + } } }