2022-11-23 11:23:27 +00:00
# ifndef SCENE_H
# define SCENE_H
# include <list>
# include "Model.h"
# include "Camera.h"
# define DEFAULT_MTL_DIR ". / "
class Scene loadOBJtoScene ( const char * filename , const char * mtl_directory = DEFAULT_MTL_DIR , const char * texture_directory = DEFAULT_MTL_DIR ) ;
// Класс сцены
class Scene
{
public :
Scene ( ) ; // Конструктор пустой сцены
Scene ( const Scene & copy ) ; // Конструктор копирования
Scene & operator = ( const Scene & other ) ; // Оператор присваивания
2022-12-20 10:18:06 +00:00
void render ( ShaderProgram & shaderProgram , UBO & material_buffer ) ; // Рендер сцены
2022-11-23 11:23:27 +00:00
Node root ; // Корневой узел
// Списки объектов, выступающих узлами
std : : list < Node > nodes ; // Список пустых узлов
std : : list < Model > models ; // Список моделей для рендера
std : : list < Camera > cameras ; // Список камер
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