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