metaforce/Runtime/Character/CMetaAnimBlend.cpp

32 lines
1.3 KiB
C++
Raw Normal View History

#include "Runtime/Character/CMetaAnimBlend.hpp"
#include "Runtime/Character/CAnimTreeBlend.hpp"
#include "Runtime/Character/CMetaAnimFactory.hpp"
2016-04-10 14:22:59 -07:00
2021-04-10 01:42:06 -07:00
namespace metaforce {
2016-04-10 14:22:59 -07:00
2018-12-07 21:30:43 -08:00
CMetaAnimBlend::CMetaAnimBlend(CInputStream& in) {
x4_animA = CMetaAnimFactory::CreateMetaAnim(in);
x8_animB = CMetaAnimFactory::CreateMetaAnim(in);
xc_blend = in.ReadFloat();
x10_ = in.ReadBool();
2016-04-10 14:22:59 -07:00
}
2018-12-07 21:30:43 -08:00
void CMetaAnimBlend::GetUniquePrimitives(std::set<CPrimitive>& primsOut) const {
x4_animA->GetUniquePrimitives(primsOut);
x4_animA->GetUniquePrimitives(primsOut);
2016-04-10 14:22:59 -07:00
}
2018-12-07 21:30:43 -08:00
std::shared_ptr<CAnimTreeNode> CMetaAnimBlend::VGetAnimationTree(const CAnimSysContext& animSys,
const CMetaAnimTreeBuildOrders& orders) const {
2019-03-09 00:58:27 -08:00
CMetaAnimTreeBuildOrders oa = CMetaAnimTreeBuildOrders::NoSpecialOrders();
2021-06-07 12:29:18 -07:00
CMetaAnimTreeBuildOrders ob = orders.x0_recursiveAdvance
? CMetaAnimTreeBuildOrders::PreAdvanceForAll(*orders.x0_recursiveAdvance)
: CMetaAnimTreeBuildOrders::NoSpecialOrders();
2019-03-09 00:58:27 -08:00
auto a = x4_animA->GetAnimationTree(animSys, oa);
auto b = x8_animB->GetAnimationTree(animSys, ob);
2021-06-07 12:29:18 -07:00
return std::make_shared<CAnimTreeBlend>(x10_, a, b, xc_blend, CAnimTreeBlend::CreatePrimitiveName(a, b, xc_blend));
2016-04-10 14:22:59 -07:00
}
2021-04-10 01:42:06 -07:00
} // namespace metaforce