OdysseyDecomp/lib/al/Library/Math/InOutParam.cpp
2025-01-02 22:13:57 +01:00

58 lines
1.8 KiB
C++

#include "Library/Math/InOutParam.h"
#include "Library/Math/MathUtil.h"
#include "Library/Yaml/ByamlIter.h"
namespace al {
InOutParam::InOutParam() = default;
InOutParam::InOutParam(const InOutParam& src)
: mInMin(src.mInMin), mInMax(src.mInMax), mOutMin(src.mOutMin), mOutMax(src.mOutMax) {}
InOutParam::InOutParam(f32 inMin, f32 inMax, f32 outMin, f32 outMax)
: mInMin(inMin), mInMax(inMax), mOutMin(outMin), mOutMax(outMax) {}
void InOutParam::init(const ByamlIter& iter) {
iter.tryGetFloatByKey(&mInMin, "InMin");
iter.tryGetFloatByKey(&mInMax, "InMax");
iter.tryGetFloatByKey(&mOutMin, "OutMin");
iter.tryGetFloatByKey(&mOutMax, "OutMax");
}
f32 InOutParam::calcLeapValue(f32 value) const {
return lerpValue(value, mInMin, mInMax, mOutMin, mOutMax);
}
f32 InOutParam::calcEaseInValue(f32 value) const {
f32 lerp = lerpValue(value, mInMin, mInMax, 0.0f, 1.0f);
f32 eased = easeIn(lerp);
return mOutMin + eased * (mOutMax - mOutMin);
}
f32 InOutParam::calcEaseOutValue(f32 value) const {
f32 lerp = lerpValue(value, mInMin, mInMax, 0.0f, 1.0f);
f32 eased = easeOut(lerp);
return mOutMin + eased * (mOutMax - mOutMin);
}
f32 InOutParam::calcEaseInOutValue(f32 value) const {
f32 lerp = lerpValue(value, mInMin, mInMax, 0.0f, 1.0f);
f32 eased = easeInOut(lerp);
return mOutMin + eased * (mOutMax - mOutMin);
}
f32 InOutParam::calcSqrtValue(f32 value) const {
f32 lerp = lerpValue(value, mInMin, mInMax, 0.0f, 1.0f);
f32 eased = sead::Mathf::sqrt(lerp);
return mOutMin + eased * (mOutMax - mOutMin);
}
f32 InOutParam::calcSquareValue(f32 value) const {
f32 lerp = lerpValue(value, mInMin, mInMax, 0.0f, 1.0f);
f32 eased = sead::Mathf::square(lerp);
return mOutMin + eased * (mOutMax - mOutMin);
}
} // namespace al