Skip to content

Commit abebacb

Browse files
committed
Add pingpong and fract methods to Math
godotengine/godot#53819
1 parent 13d36b3 commit abebacb

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

include/godot_cpp/core/math.hpp

+16
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,22 @@ inline float wrapf(real_t value, real_t min, real_t max) {
565565
return is_zero_approx(range) ? min : value - (range * floor((value - min) / range));
566566
}
567567

568+
inline float fract(float value) {
569+
return value - floor(value);
570+
}
571+
572+
inline double fract(double value) {
573+
return value - floor(value);
574+
}
575+
576+
inline float pingpong(float value, float length) {
577+
return (length != 0.0f) ? abs(fract((value - length) / (length * 2.0f)) * length * 2.0f - length) : 0.0f;
578+
}
579+
580+
inline double pingpong(double value, double length) {
581+
return (length != 0.0) ? abs(fract((value - length) / (length * 2.0)) * length * 2.0 - length) : 0.0;
582+
}
583+
568584
inline unsigned int next_power_of_2(unsigned int x) {
569585
if (x == 0)
570586
return 0;

0 commit comments

Comments
 (0)