metaforce/Runtime/Character/CMetaAnimSequence.cpp

45 lines
1.5 KiB
C++
Raw Normal View History

#include "Runtime/Character/CMetaAnimSequence.hpp"
#include "Runtime/Character/CAnimTreeSequence.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
std::vector<std::shared_ptr<IMetaAnim>> CMetaAnimSequence::CreateSequence(CInputStream& in) {
std::vector<std::shared_ptr<IMetaAnim>> ret;
u32 seqCount = in.ReadLong();
2018-12-07 21:30:43 -08:00
ret.reserve(seqCount);
2016-04-10 20:59:54 -07:00
2018-12-07 21:30:43 -08:00
for (u32 i = 0; i < seqCount; ++i)
ret.push_back(CMetaAnimFactory::CreateMetaAnim(in));
2016-04-10 20:59:54 -07:00
2018-12-07 21:30:43 -08:00
return ret;
2016-04-10 14:22:59 -07:00
}
2018-12-07 21:30:43 -08:00
CMetaAnimSequence::CMetaAnimSequence(CInputStream& in) : x4_sequence(CreateSequence(in)) {}
2016-04-10 20:59:54 -07:00
2018-12-07 21:30:43 -08:00
void CMetaAnimSequence::GetUniquePrimitives(std::set<CPrimitive>& primsOut) const {
for (const std::shared_ptr<IMetaAnim>& anim : x4_sequence)
anim->GetUniquePrimitives(primsOut);
2016-04-10 14:22:59 -07:00
}
2018-12-07 21:30:43 -08:00
std::shared_ptr<CAnimTreeNode> CMetaAnimSequence::VGetAnimationTree(const CAnimSysContext& animSys,
const CMetaAnimTreeBuildOrders& orders) const {
2019-03-09 00:58:27 -08:00
if (orders.x0_recursiveAdvance)
return GetAnimationTree(animSys, CMetaAnimTreeBuildOrders::PreAdvanceForAll(*orders.x0_recursiveAdvance));
2016-08-27 14:16:44 -07:00
2018-01-29 17:04:01 -08:00
#if 0
2019-03-09 00:58:27 -08:00
/* Originally used to generate name string */
std::vector<std::string> anims;
anims.reserve(anims.size());
for (const std::shared_ptr<IMetaAnim>& anim : x4_sequence) {
std::shared_ptr<CAnimTreeNode> chNode = anim->GetAnimationTree(animSys, orders);
anims.emplace_back(chNode->GetName());
}
2018-01-29 17:04:01 -08:00
#endif
2016-08-27 14:16:44 -07:00
2019-03-09 00:58:27 -08:00
return std::make_shared<CAnimTreeSequence>(x4_sequence, animSys, "");
2016-04-10 14:22:59 -07:00
}
2021-04-10 01:42:06 -07:00
} // namespace metaforce