2020-10-03 15:22:44 +00:00
|
|
|
#include "global.h"
|
2020-03-17 04:31:30 +00:00
|
|
|
|
2020-05-19 20:27:25 +00:00
|
|
|
f32 func_8006C510(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5) {
|
|
|
|
char pad[0x1C];
|
|
|
|
f32 sq = SQ(arg0);
|
|
|
|
f32 cube = sq * arg0;
|
2020-03-17 04:31:30 +00:00
|
|
|
|
2020-05-19 20:27:25 +00:00
|
|
|
return (((cube + cube) - sq * 3.0f) + 1.0f) * arg2 + (sq * 3.0f - (cube + cube)) * arg3 +
|
|
|
|
((cube - (sq + sq)) + arg0) * arg4 * arg1 + (cube - sq) * arg5 * arg1;
|
|
|
|
}
|
|
|
|
|
|
|
|
f32 func_8006C5A8(f32 target, TransformData* transData, s32 refIdx) {
|
|
|
|
s32 i;
|
|
|
|
s32 j;
|
|
|
|
|
|
|
|
if (target <= transData->unk_02) {
|
|
|
|
return transData->unk_08;
|
|
|
|
}
|
|
|
|
if (target >= transData[refIdx - 1].unk_02) {
|
|
|
|
return transData[refIdx - 1].unk_08;
|
|
|
|
}
|
|
|
|
|
|
|
|
for (i = 0;; i++) {
|
|
|
|
j = i + 1;
|
|
|
|
if (transData[j].unk_02 > target) {
|
|
|
|
if (transData[i].unk_00 & 1) {
|
|
|
|
return transData[i].unk_08;
|
|
|
|
} else if (transData[i].unk_00 & 2) {
|
|
|
|
return transData[i].unk_08 +
|
|
|
|
((target - (f32)transData[i].unk_02) / ((f32)transData[j].unk_02 - (f32)transData[i].unk_02)) *
|
|
|
|
(transData[j].unk_08 - transData[i].unk_08);
|
|
|
|
} else {
|
|
|
|
f32 diff = (f32)transData[j].unk_02 - (f32)transData[i].unk_02;
|
|
|
|
return func_8006C510((target - transData[i].unk_02) / ((f32)transData[j].unk_02 - transData[i].unk_02),
|
|
|
|
diff * (1.0f / 30.0f), transData[i].unk_08, transData[j].unk_08,
|
|
|
|
transData[i].unk_06, transData[j].unk_04);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|