OdysseyDecomp/lib/al/Project/Fluid/FlowMapCtrl.cpp
2026-04-22 20:18:01 +02:00

33 lines
1 KiB
C++

#include "Project/Fluid/FlowMapCtrl.h"
#include "Library/LiveActor/ActorModelFunction.h"
#include "Library/Math/MathUtil.h"
namespace al {
FlowMapCtrl::FlowMapCtrl(LiveActor* parentActor) : mParent(parentActor) {
setMaterialProgrammable(parentActor);
}
void FlowMapCtrl::update() {
s32 halfInterval = mInterval / 2;
sead::Vector4f flowParameters;
flowParameters.x = mSpeed;
flowParameters.y =
calcRate01(halfInterval - sead::Mathi::abs(halfInterval - mFlowStep), 0.0f, halfInterval);
flowParameters.z = calcRate01(mFlowStep, 0.0f, mInterval);
flowParameters.w = calcRate01(wrapValue(mFlowStep + halfInterval, mInterval), 0.0f, mInterval);
s32 materialCount = getMaterialCount(mParent);
for (s32 i = 0; i < materialCount; i++) {
const char* materialName = getMaterialName(mParent, i);
setModelMaterialParameterV4F(mParent, materialName, "flow0_param", flowParameters);
}
mFlowStep++;
mFlowStep = wrapValue(mFlowStep, mInterval);
}
} // namespace al