mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-27 02:54:08 +00:00
58 lines
1.8 KiB
C++
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
|