metaforce/Runtime/Character/CSegStatementSet.cpp

21 lines
761 B
C++
Raw Permalink Normal View History

#include "Runtime/Character/CSegStatementSet.hpp"
#include "Runtime/Character/CCharLayoutInfo.hpp"
#include "Runtime/Character/CSegIdList.hpp"
2016-04-16 03:24:25 +00:00
2021-04-10 08:42:06 +00:00
namespace metaforce {
2016-04-16 03:24:25 +00:00
2018-12-08 05:30:43 +00:00
void CSegStatementSet::Add(const CSegIdList& list, const CCharLayoutInfo& layout, const CSegStatementSet& other,
float weight) {
for (const CSegId& id : list.GetList()) {
x4_segData[id].x0_rotation *=
zeus::CQuaternion::slerp(zeus::CQuaternion(), other.x4_segData[id].x0_rotation, weight);
2018-12-08 05:30:43 +00:00
if (other.x4_segData[id].x1c_hasOffset && x4_segData[id].x1c_hasOffset) {
zeus::CVector3f off = other.x4_segData[id].x10_offset - layout.GetFromParentUnrotated(id);
x4_segData[id].x10_offset += off * weight;
2016-04-16 03:24:25 +00:00
}
2018-12-08 05:30:43 +00:00
}
2016-04-16 03:24:25 +00:00
}
2021-04-10 08:42:06 +00:00
} // namespace metaforce