1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Smoothed yaw rotation for objects (#6825)

This commit is contained in:
SmallJoker 2018-08-03 00:25:37 +02:00 committed by Paramat
parent 741e3efaf5
commit f3997025fd
4 changed files with 89 additions and 52 deletions

View file

@ -376,3 +376,22 @@ inline u32 npot2(u32 orig) {
orig |= orig >> 16;
return orig + 1;
}
// Gradual steps towards the target value in a wrapped (circular) system
// using the shorter of both ways
template<typename T>
inline void wrappedApproachShortest(T &current, const T target, const T stepsize,
const T maximum)
{
T delta = target - current;
if (delta < 0)
delta += maximum;
if (delta > stepsize && maximum - delta > stepsize) {
current += (delta < maximum / 2) ? stepsize : -stepsize;
if (current >= maximum)
current -= maximum;
} else {
current = target;
}
}