Compile fixes and added test case to verify onDone and onLoop triggers

This commit is contained in:
Anthony J. Thibault 2015-09-02 10:31:45 -07:00
parent d151474446
commit d13a188dde

View file

@ -40,7 +40,7 @@ void AnimTests::testClipInternalState() {
AnimClip clip(id, url, startFrame, endFrame, timeScale, loopFlag); AnimClip clip(id, url, startFrame, endFrame, timeScale, loopFlag);
QVERIFY(clip.getID() == id); QVERIFY(clip.getID() == id);
QVERIFY(clip.getType() == AnimNode::ClipType); QVERIFY(clip.getType() == AnimNode::Type::Clip);
QVERIFY(clip._url == url); QVERIFY(clip._url == url);
QVERIFY(clip._startFrame == startFrame); QVERIFY(clip._startFrame == startFrame);
@ -55,7 +55,7 @@ static float framesToSec(float secs) {
} }
void AnimTests::testClipEvaulate() { void AnimTests::testClipEvaulate() {
std::string id = "my clip node"; std::string id = "myClipNode";
std::string url = "https://hifi-public.s3.amazonaws.com/ozan/support/FightClubBotTest1/Animations/standard_idle.fbx"; std::string url = "https://hifi-public.s3.amazonaws.com/ozan/support/FightClubBotTest1/Animations/standard_idle.fbx";
float startFrame = 2.0f; float startFrame = 2.0f;
float endFrame = 22.0f; float endFrame = 22.0f;
@ -67,21 +67,30 @@ void AnimTests::testClipEvaulate() {
AnimClip clip(id, url, startFrame, endFrame, timeScale, loopFlag); AnimClip clip(id, url, startFrame, endFrame, timeScale, loopFlag);
clip.evaluate(vars, framesToSec(10.0f)); AnimNode::Triggers triggers;
clip.evaluate(vars, framesToSec(10.0f), triggers);
QCOMPARE_WITH_ABS_ERROR(clip._frame, 12.0f, EPSILON); QCOMPARE_WITH_ABS_ERROR(clip._frame, 12.0f, EPSILON);
// does it loop? // does it loop?
clip.evaluate(vars, framesToSec(11.0f)); triggers.clear();
clip.evaluate(vars, framesToSec(11.0f), triggers);
QCOMPARE_WITH_ABS_ERROR(clip._frame, 3.0f, EPSILON); QCOMPARE_WITH_ABS_ERROR(clip._frame, 3.0f, EPSILON);
// did we receive a loop trigger?
QVERIFY(std::find(triggers.begin(), triggers.end(), "myClipNodeOnLoop") != triggers.end());
// does it pause at end? // does it pause at end?
triggers.clear();
clip.setLoopFlagVar("FalseVar"); clip.setLoopFlagVar("FalseVar");
clip.evaluate(vars, framesToSec(20.0f)); clip.evaluate(vars, framesToSec(20.0f), triggers);
QCOMPARE_WITH_ABS_ERROR(clip._frame, 22.0f, EPSILON); QCOMPARE_WITH_ABS_ERROR(clip._frame, 22.0f, EPSILON);
// did we receive a done trigger?
QVERIFY(std::find(triggers.begin(), triggers.end(), "myClipNodeOnDone") != triggers.end());
} }
void AnimTests::testClipEvaulateWithVars() { void AnimTests::testClipEvaulateWithVars() {
std::string id = "my clip node"; std::string id = "myClipNode";
std::string url = "https://hifi-public.s3.amazonaws.com/ozan/support/FightClubBotTest1/Animations/standard_idle.fbx"; std::string url = "https://hifi-public.s3.amazonaws.com/ozan/support/FightClubBotTest1/Animations/standard_idle.fbx";
float startFrame = 2.0f; float startFrame = 2.0f;
float endFrame = 22.0f; float endFrame = 22.0f;
@ -105,7 +114,8 @@ void AnimTests::testClipEvaulateWithVars() {
clip.setTimeScaleVar("timeScale2"); clip.setTimeScaleVar("timeScale2");
clip.setLoopFlagVar("loopFlag2"); clip.setLoopFlagVar("loopFlag2");
clip.evaluate(vars, framesToSec(0.1f)); AnimNode::Triggers triggers;
clip.evaluate(vars, framesToSec(0.1f), triggers);
// verify that the values from the AnimVariantMap made it into the clipNode's // verify that the values from the AnimVariantMap made it into the clipNode's
// internal state // internal state
@ -137,11 +147,11 @@ void AnimTests::testLoader() {
QVERIFY((bool)node); QVERIFY((bool)node);
QVERIFY(node->getID() == "blend"); QVERIFY(node->getID() == "blend");
QVERIFY(node->getType() == AnimNode::BlendLinearType); QVERIFY(node->getType() == AnimNode::Type::BlendLinear);
QVERIFY((bool)node); QVERIFY((bool)node);
QVERIFY(node->getID() == "blend"); QVERIFY(node->getID() == "blend");
QVERIFY(node->getType() == AnimNode::BlendLinearType); QVERIFY(node->getType() == AnimNode::Type::BlendLinear);
auto blend = std::static_pointer_cast<AnimBlendLinear>(node); auto blend = std::static_pointer_cast<AnimBlendLinear>(node);
QVERIFY(blend->_alpha == 0.5f); QVERIFY(blend->_alpha == 0.5f);