AnimationSystem working

This commit is contained in:
viktorljung
2016-01-24 18:31:23 +01:00
parent dd80323342
commit 8cf9caf7aa
7 changed files with 103 additions and 17 deletions
+10 -6
View File
@@ -7,25 +7,29 @@ void AnimationSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& a
}
Model* model = ResourceManager::Load<Model>(entity["Model"]["Resource"]);
//Skeleton* skeleton = model->m_Skeleton;
//auto animation == skeleton->GetAnimation(animation["Name"]);
Skeleton* skeleton = model->m_RawModel->m_Skeleton;
const Skeleton::Animation* animation = skeleton->GetAnimation(animationComponent["Name"]);
double animationSpeed = (double)animationComponent["Speed"];
if( animationSpeed != 0.0) {
double nextTime = (double)animationComponent["Time"] + animationSpeed * dt;
if (!animationComponent["Loop"] && glm::abs(nextTime) > animation->Duration) {
if (!(bool)animationComponent["Loop"] && glm::abs(nextTime) > animation->Duration) {
(double&)animationComponent["Time"] = glm::sign(nextTime) * animation->Duration;
(double&)animationComponent["Speed"] = 0.0;
Events::AnimationComplete e;
e.Entity = entity;
// e.Name = animationComponent->Name;
e.Name = (std::string)animationComponent["Name"];
m_EventBroker->Publish(e);
} else {
(double&)animationComponent["Time"] = nextTime;
if (glm::abs(nextTime) > animation->Duration) {
(double&)animationComponent["Time"] = glm::abs(nextTime) - animation->Duration;
} else {
(double&)animationComponent["Time"] = nextTime;
}
}
}
}