3#include <zenkit/ModelScript.hh>
4#include <zenkit/ModelAnimation.hh>
23 zenkit::MdsEventType
def = zenkit::MdsEventType::UNKNOWN;
25 std::string_view
slot[2] = {};
37 zenkit::MdsFightMode
weaponCh = zenkit::MdsFightMode::INVALID;
50 std::vector<zenkit::AnimationSample>
samples;
52 std::vector<Tempest::Vec3>
tr;
60 std::vector<zenkit::MdsSoundEffectGround>
gfx;
61 std::vector<zenkit::MdsSoundEffect>
sfx;
62 std::vector<MdsParticleEffect>
pfx;
63 std::vector<zenkit::MdsModelTag>
tag;
64 std::vector<zenkit::MdsEventTag>
events;
78 Sequence(
const zenkit::MdsAnimation& hdr, std::string_view
name);
80 bool isRotate()
const {
return bool(
flags & zenkit::AnimationFlags::ROTATE); }
81 bool isMove()
const {
return bool(
flags & zenkit::AnimationFlags::MOVE); }
82 bool isFly()
const {
return bool(
flags & zenkit::AnimationFlags::FLY); }
83 bool isIdle()
const {
return bool(
flags & zenkit::AnimationFlags::IDLE); }
84 bool isFinished(uint64_t now, uint64_t sTime, uint16_t comboLen)
const;
86 bool canInterrupt(uint64_t now, uint64_t sTime, uint16_t comboLen)
const;
93 bool isPrehit(uint64_t sTime, uint64_t now)
const;
99 Tempest::Vec3
speed(uint64_t at, uint64_t dt)
const;
106 zenkit::AnimationFlags
flags = zenkit::AnimationFlags::NONE;
116 std::vector<const Sequence*>
comb;
117 std::shared_ptr<AnimData>
data;
121 static void processEvent(
const zenkit::MdsEventTag& e,
EvCount& ev, uint64_t time);
122 bool extractFrames(uint64_t &frameA, uint64_t &frameB,
bool &invert, uint64_t barrier, uint64_t sTime, uint64_t now)
const;
126 Animation(zenkit::ModelScript &p, std::string_view name,
bool ignoreErrChunks);
134 Sequence& loadMAN(
const zenkit::MdsAnimation& hdr, std::string_view name);
137 mutable const Sequence* sqHot =
nullptr;
138 std::vector<Sequence> sequences;
139 std::vector<zenkit::MdsAnimationAlias> ref;
140 std::vector<std::string> mesh;
141 zenkit::MdsSkeleton meshDef;
const Sequence * sequenceAsc(std::string_view name) const
const Sequence * sequence(std::string_view name) const
std::string_view defaultMesh() const
std::vector< Tempest::Vec3 > tr
std::vector< zenkit::MdsSoundEffect > sfx
std::vector< zenkit::AnimationSample > samples
void setupEvents(float fpsRate)
std::vector< uint64_t > defParFrame
std::vector< MdsParticleEffect > pfx
std::vector< uint64_t > defWindow
std::vector< uint32_t > nodeIndex
std::vector< zenkit::MdsMorphAnimation > mmStartAni
std::vector< zenkit::MdsModelTag > tag
std::vector< uint64_t > defHitEnd
std::vector< zenkit::MdsSoundEffectGround > gfx
std::vector< zenkit::MdsEventTag > events
zenkit::MdsFightMode weaponCh
std::vector< EvMorph > morph
std::vector< EvTimed > timed
float atkTotalTime(uint16_t comboLen) const
bool canInterrupt(uint64_t now, uint64_t sTime, uint16_t comboLen) const
bool isAttackAnim() const
void processPfx(uint64_t barrier, uint64_t sTime, uint64_t now, MdlVisual &visual, World &world) const
bool isDefParWindow(uint64_t t) const
Tempest::Vec3 speed(uint64_t at, uint64_t dt) const
bool isFinished(uint64_t now, uint64_t sTime, uint16_t comboLen) const
Tempest::Vec3 translateXZ(uint64_t at) const
bool isPrehit(uint64_t sTime, uint64_t now) const
void schemeName(char buf[64]) const
zenkit::AnimationFlags flags
void processEvents(uint64_t barrier, uint64_t sTime, uint64_t now, EvCount &ev) const
bool isInComboWindow(uint64_t t, uint16_t comboLen) const
void processSfx(uint64_t barrier, uint64_t sTime, uint64_t now, Npc *npc, Interactive *mob) const
std::vector< const Sequence * > comb
bool isDefWindow(uint64_t t) const
std::shared_ptr< AnimData > data