33 lines
1.5 KiB
C++
33 lines
1.5 KiB
C++
#ifndef SCENE_H
|
||
#define SCENE_H
|
||
|
||
#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::vector<Node> nodes; // Список пустых узлов
|
||
std::vector<Model> models; // Список моделей для рендера
|
||
std::vector<Camera> cameras; // Список камер
|
||
|
||
protected:
|
||
void rebuld_tree(const Scene& from); // Перестройка дерева после копирования или присваивания
|
||
template <class T>
|
||
void rebuild_Nodes_vector(T& nodes, const Scene& from); // Перестройка узлов выбранного списка
|
||
template <class T>
|
||
bool move_pointer(Node& for_node, const std::vector<T>& from_nodes, std::vector<T>& this_nodes); // Сдвигает родителя узла между двумя списками при условии его принадлежности к оригинальному, возвращает признак замены
|
||
};
|
||
|
||
#endif // SCENE_H
|