From 9a2e8d907b86b974c1644ae6e75eb7adefa384b2 Mon Sep 17 00:00:00 2001 From: Aaron Franke Date: Sun, 18 Sep 2022 18:07:24 -0500 Subject: [PATCH] Add pingpong and fract methods to Math https://github.com/godotengine/godot/pull/53819 --- include/godot_cpp/core/math.hpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/include/godot_cpp/core/math.hpp b/include/godot_cpp/core/math.hpp index ca1e6e9..e864ee1 100644 --- a/include/godot_cpp/core/math.hpp +++ b/include/godot_cpp/core/math.hpp @@ -583,6 +583,22 @@ inline float wrapf(real_t value, real_t min, real_t max) { return is_zero_approx(range) ? min : value - (range * floor((value - min) / range)); } +inline float fract(float value) { + return value - floor(value); +} + +inline double fract(double value) { + return value - floor(value); +} + +inline float pingpong(float value, float length) { + return (length != 0.0f) ? abs(fract((value - length) / (length * 2.0f)) * length * 2.0f - length) : 0.0f; +} + +inline double pingpong(double value, double length) { + return (length != 0.0) ? abs(fract((value - length) / (length * 2.0)) * length * 2.0 - length) : 0.0; +} + inline unsigned int next_power_of_2(unsigned int x) { if (x == 0) return 0;