48 lines
1.0 KiB
C++
48 lines
1.0 KiB
C++
#ifndef SCENETREE_H
|
|
#define SCENETREE_H
|
|
|
|
#include <vector>
|
|
#include <string>
|
|
#include "scene.h"
|
|
#include "light.h"
|
|
#include "resourcemanager.h"
|
|
|
|
#include "containernode.h"
|
|
|
|
class CameraNode;
|
|
|
|
/**
|
|
* @brief The SceneNode class represents a class of the game
|
|
* that will be updated or used for rendering every frame
|
|
*/
|
|
|
|
class SceneTree : public Scene
|
|
{
|
|
public:
|
|
SceneTree();
|
|
~SceneTree();
|
|
|
|
virtual SceneIterator<Light*>* getLights();
|
|
virtual SceneIterator<GeometryNode*>* getGeometry();
|
|
|
|
void update();
|
|
|
|
Texture* getSkybox() {return m_skybox;}
|
|
void setSkybox(Texture* skybox) {m_skybox = skybox;}
|
|
|
|
void setMainCamera(CameraNode *camera);
|
|
|
|
ContainerNode* getRootObject(){return &m_root;}
|
|
void addToIndex(SceneNode* node);
|
|
void removeObject(ContainerNode* parent,SceneNode *node);
|
|
void removeFromIndex(SceneNode *node);
|
|
void updateShaders();
|
|
private:
|
|
ContainerNode m_root;
|
|
std::vector<Light*> m_lights;
|
|
std::vector<GeometryNode*> m_geometries;
|
|
Texture* m_skybox;
|
|
};
|
|
|
|
#endif // SCENETREE_H
|