if( prot.max > prot.min )
{
if( prot.wrap )
- {
- T range = prot.max - prot.min + 1;
- if( range > 0 )
- {
- while( new_val < prot.min )
- new_val += range;
- while( new_val > prot.max )
- new_val -= range;
- }
- }
+ new_val = SGMisc<double>::normalizePeriodic(prot.min, prot.max, new_val);
else
- new_val = std::min<T>(prot.max, std::max<T>(prot.min, new_val));
+ new_val = SGMisc<T>::clip(new_val, prot.min, prot.max);
}
setValue(prot.prop, new_val);
}
-
- template<class T>
- static const T getValue(SGPropertyNode_ptr& prop);
-
- template<class T>
- static void setValue(SGPropertyNode_ptr& prop, const T& val);
+ // Special handling for bool (relative change = toggle, no min/max, no wrap)
+ static void updateValue(_serial_prot& prot, bool val);
};