add loop option to playAnimation
This commit is contained in:
@@ -594,7 +594,7 @@ namespace polyvox
|
||||
{
|
||||
if (!_view || !_mainCamera || !_swapChain)
|
||||
{
|
||||
Log("Not ready for rendering");
|
||||
// Log("Not ready for rendering");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -668,8 +668,12 @@ namespace polyvox
|
||||
}
|
||||
}
|
||||
|
||||
void FilamentViewer::playAnimation(int index) {
|
||||
embeddedAnimationBuffer = make_unique<EmbeddedAnimationBuffer>(index, _animator->getAnimationDuration(index));
|
||||
void FilamentViewer::playAnimation(int index, bool loop) {
|
||||
if(index > _animator->getAnimationCount() - 1) {
|
||||
Log("Asset does not contain an animation at index %d", index);
|
||||
} else {
|
||||
embeddedAnimationBuffer = make_unique<EmbeddedAnimationBuffer>(index, _animator->getAnimationDuration(index), loop);
|
||||
}
|
||||
}
|
||||
|
||||
void FilamentViewer::updateEmbeddedAnimation() {
|
||||
@@ -679,8 +683,12 @@ namespace polyvox
|
||||
embeddedAnimationBuffer->hasStarted = true;
|
||||
embeddedAnimationBuffer->lastTime = std::chrono::high_resolution_clock::now();
|
||||
} else if(dur.count() >= embeddedAnimationBuffer->duration) {
|
||||
embeddedAnimationBuffer = nullptr;
|
||||
return;
|
||||
if(embeddedAnimationBuffer->loop) {
|
||||
embeddedAnimationBuffer->lastTime = std::chrono::high_resolution_clock::now();
|
||||
} else {
|
||||
embeddedAnimationBuffer = nullptr;
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
startTime = dur.count();
|
||||
}
|
||||
|
||||
@@ -55,11 +55,12 @@ namespace polyvox {
|
||||
};
|
||||
|
||||
struct EmbeddedAnimationBuffer {
|
||||
EmbeddedAnimationBuffer(int animationIndex, float duration) : animationIndex(animationIndex), duration(duration) {}
|
||||
EmbeddedAnimationBuffer(int animationIndex, float duration, bool loop) : animationIndex(animationIndex), duration(duration), loop(loop) {}
|
||||
bool hasStarted = false;
|
||||
int animationIndex;
|
||||
float duration = 0;
|
||||
time_point_t lastTime;
|
||||
bool loop;
|
||||
};
|
||||
|
||||
|
||||
@@ -117,7 +118,7 @@ namespace polyvox {
|
||||
void applyWeights(float* weights, int count);
|
||||
void animateWeights(float* data, int numWeights, int length, float frameRate);
|
||||
// void animateBones();
|
||||
void playAnimation(int index);
|
||||
void playAnimation(int index, bool loop);
|
||||
bool setCamera(const char* nodeName);
|
||||
void destroySwapChain();
|
||||
void createSwapChain(void* surface);
|
||||
|
||||
Reference in New Issue
Block a user