diff --git a/framework/random/src/mm/random/srng.hpp b/framework/random/src/mm/random/srng.hpp index 6eff526..2de281d 100644 --- a/framework/random/src/mm/random/srng.hpp +++ b/framework/random/src/mm/random/srng.hpp @@ -7,7 +7,7 @@ namespace MM::Random { // Seeded (Pseudo-) Random Number Generator struct SRNG { - // make shuffle compat + // make shuffle compat // TODO: add more type info using result_type = uint32_t; @@ -35,7 +35,7 @@ struct SRNG { } bool roll(float prob) { - return zeroToOne() <= prob; + return zeroToOne() <= prob; // TODO: just < ? } // more advanced diff --git a/framework/std_utils/src/mm/scalar_range2.hpp b/framework/std_utils/src/mm/scalar_range2.hpp index 79d16c6..2d9f763 100644 --- a/framework/std_utils/src/mm/scalar_range2.hpp +++ b/framework/std_utils/src/mm/scalar_range2.hpp @@ -60,6 +60,16 @@ struct ScalarRange2 { [[nodiscard]] constexpr bool inRange(T&& value) const { return value >= min() && value <= max(); } + + // lerp between min and max + [[nodiscard]] constexpr T map(const float a) const { + return min() * (1.f-a) + max() * a; + } + + // reverse map + [[nodiscard]] constexpr float unmap(const T& v) const { + return (v - min()) / static_cast(max() - min()); + } }; } // MM