#ifndef SCENE_H #define SCENE_H #include #include "Model.h" #include "Camera.h" // Класс сцены class Scene { public: Scene(); // Конструктор пустой сцены Scene(const Scene ©); // Конструктор копирования Scene& operator=(const Scene& other); // Оператор присваивания void render(const GLuint &model_uniform); // Рендер сцены Node root; // Корневой узел // Списки объектов, выступающих узлами std::list nodes; // Список пустых узлов std::list models; // Список моделей для рендера std::list cameras; // Список камер protected: void rebuld_tree(const Scene& from); // Перестройка дерева после копирования или присваивания template void rebuild_Nodes_list(T& nodes, const Scene& from); // Перестройка узлов выбранного списка template void move_parent(Node& for_node, const std::list& from_nodes, std::list& this_nodes); // Сдвигает родителя узла между двумя списками при условии его принадлежности к оригинальному }; #endif // SCENE_H