#include <string>
#include <whiteout/models/wem/anim/clip.h>
namespace whiteout {
namespace models {
namespace wem {
namespace {
const std::string kMoveSpeedMilli = "moveSpeedMilli";
const std::string kRarityMilli = "rarityMilli";
}
const char* ToString(Interpolation interp) {
switch (interp) {
case Interpolation::Step:
return "step";
case Interpolation::Linear:
return "linear";
case Interpolation::Hermite:
return "hermite";
case Interpolation::Bezier:
return "bezier";
case Interpolation::Slerp:
return "slerp";
case Interpolation::Count:
break;
}
return "invalid";
}
const SubTrack* SubTrackContainer::find(u32 channel) const {
for (const SubTrack& track : subTracks) {
if (track.channel == channel) {
return &track;
}
}
return nullptr;
}
f32 ClipMoveSpeed(const Clip& clip) {
const i64 whole = clip.native.value("m3MoveSpeed", clip.native.value("moveSpeed", 0));
return Milli(clip.native, kMoveSpeedMilli, static_cast<f32>(whole));
}
void SetClipMoveSpeed(Clip& clip, f32 speed) {
SetMilli(clip.native, kMoveSpeedMilli, speed);
}
f32 ClipRarity(const Clip& clip) {
return Milli(clip.native, kRarityMilli, static_cast<f32>(clip.native.value("rarity", 0)));
}
void SetClipRarity(Clip& clip, f32 rarity) {
SetMilli(clip.native, kRarityMilli, rarity);
}
u32 AnimSet::find(u32 tagId) const {
for (const AnimTag& entry : byTag) {
if (entry.tagId == tagId) {
return entry.clip;
}
}
return kInvalidIndex;
}
} } }