diff --git a/bin/pokemon.exe b/bin/pokemon.exe index 405539a..5e71e2b 100644 Binary files a/bin/pokemon.exe and b/bin/pokemon.exe differ diff --git a/bin/pokemon.pdb b/bin/pokemon.pdb index 8fa18ad..8198d10 100644 Binary files a/bin/pokemon.pdb and b/bin/pokemon.pdb differ diff --git a/src/main.cpp b/src/main.cpp index e989a26..588f43a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -257,24 +257,6 @@ void change_map_size(char direction, int amount) { free(old_map); } -float ilerp(float a, float b, float v) { - return (v - a) / (b - a); -} - -V2 ilerp(V2 a, V2 b, V2 v) { - return (v - a) / (b - a); -} - -float remap(float in_a, float in_b, float out_a, float out_b, float v) { - float t = ilerp(in_a, in_b, v); - return lerp(out_a, t, out_b); -} - -V2 remap(V2 in_a, V2 in_b, V2 out_a, V2 out_b, V2 v) { - V2 t = ilerp(in_a, in_b, v); - return lerp(out_a, t, out_b); -} - //Userinputs, Steuerung, FensterÄnderungen -> WindowProc LRESULT WindowMsgs(HWND Window, UINT Message, WPARAM wParam, LPARAM lParam) { LRESULT Result = 0; diff --git a/src/math_graphics.h b/src/math_graphics.h index db3082c..3852d71 100644 --- a/src/math_graphics.h +++ b/src/math_graphics.h @@ -70,10 +70,19 @@ constexpr inline T min(T a, T b) { return a < b ? a : b; } -constexpr float lerp(float a, float t, float b) { +constexpr float lerp(float a, float b, float t) { return (1.0f - t) * a + t * b; } +float ilerp(float a, float b, float v) { + return (v - a) / (b - a); +} + +float remap(float in_a, float in_b, float out_a, float out_b, float v) { + float t = ilerp(in_a, in_b, v); + return lerp(out_a, out_b, t); +} + //----------------------------------------------- //Vektorberechnung 2-dim @@ -103,7 +112,6 @@ union V2 { } }; - //Negation von 2-dim Vektor inline V2 operator -(V2 a) { return { @@ -154,12 +162,13 @@ inline V2 operator *(V2 a, float b) { }; } +//Skalarmultiplikation -> mit V2 Pointer inline V2 &operator *= (V2 &a, float b) { a = a * b; return a; } -//Division mit nem Skalar Oo -> Skalar geteilt durch Vektor +//Division mit einem Skalar Oo -> Skalar geteilt durch Vektor inline V2 operator /(float a, V2 b) { return { a / b.x, @@ -167,7 +176,7 @@ inline V2 operator /(float a, V2 b) { }; } -//Division mit nem Skalar Oo -> Vektor geteilt durch Skalar +//Division mit einem Skalar Oo -> Vektor geteilt durch Skalar inline V2 operator /(V2 a, float b) { return { a.x / b, @@ -175,6 +184,7 @@ inline V2 operator /(V2 a, float b) { }; } +//Division mit einem Skalar -> 2 Vektoren inline V2 operator /(V2 a, V2 b) { return { a.x / b.x, @@ -182,12 +192,12 @@ inline V2 operator /(V2 a, V2 b) { }; } -inline V2& operator /= (V2& a, float b) { +//Division mit einem Skalar -> mit V2 Pointer +inline V2 &operator /= (V2 &a, float b) { a = a / b; return a; } - //Skalarprodukt inline float dot(V2 a, V2 b) { return a.x * b.x + a.y * b.y; @@ -237,6 +247,7 @@ inline V2 clamp01(V2 a) { }; } +//Vektor mit den kleinsten Werten 2er Vektoren inline V2 min(V2 a, V2 b) { return { min(a.x, b.x), @@ -244,6 +255,7 @@ inline V2 min(V2 a, V2 b) { }; } +//Vektor mit den groessten Werten 2er Vektoren inline V2 max(V2 a, V2 b) { return { max(a.x, b.x), @@ -251,21 +263,34 @@ inline V2 max(V2 a, V2 b) { }; } +//kleinster Vektor Wert inline float min(V2 a) { return min(a.x, a.y); } +//groesster Vektor Wert inline float max(V2 a) { return max(a.x, a.y); } -inline V2 lerp(V2 a, V2 t, V2 b) { +//Lerp mit 2 Vektoren +inline V2 lerp(V2 a, V2 b, V2 t) { return V2{ - lerp(a.x, t.x, b.x), - lerp(a.y, t.y, b.y), + lerp(a.x, b.x, t.x), + lerp(a.y, b.y, t.y), }; } +// +V2 ilerp(V2 a, V2 b, V2 v) { + return (v - a) / (b - a); +} + +// +V2 remap(V2 in_a, V2 in_b, V2 out_a, V2 out_b, V2 v) { + V2 t = ilerp(in_a, in_b, v); + return lerp(out_a, out_b, t); +} //----------------------------------------------- //Vektorberechnung 3-dim @@ -321,7 +346,6 @@ inline V3 operator -(V3 a) { }; } - //Addition 2er 2-dim Vektoren inline V3 operator +(V3 a, V3 b) { return {