diff --git a/include/Scene.h b/include/Scene.h index cd27a6f..2d59f7e 100644 --- a/include/Scene.h +++ b/include/Scene.h @@ -24,7 +24,7 @@ class Scene Scene(const Scene ©); // Конструктор копирования Scene& operator=(const Scene& other); // Оператор присваивания - void render(ShaderProgram &shaderProgram, UBO &material_buffer); // Рендер сцены + void render(ShaderProgram &shaderProgram, UBO &material_buffer, bool recalc_animations = false); // Рендер сцены void set_group_id(GLuint64 id, GLuint etc = 0); // Изменение флага записи идентификатора для всех моделей diff --git a/src/Scene.cpp b/src/Scene.cpp index ab6d81c..a58e576 100644 --- a/src/Scene.cpp +++ b/src/Scene.cpp @@ -30,9 +30,16 @@ Scene& Scene::operator=(const Scene& other) } // Рендер сцены -void Scene::render(ShaderProgram &shaderProgram, UBO &material_buffer) +void Scene::render(ShaderProgram &shaderProgram, UBO &material_buffer, bool recalc_animations) { - for (auto & model : models) + // Если требуется пересчитаем анимации + if (recalc_animations) + for (auto & animation : animations) + if (animation.isEnabled()) + animation.process(); + + // Рендер моделей + for (auto & model : models) model.render(shaderProgram, material_buffer); }