88 lines
1.2 KiB
C++
88 lines
1.2 KiB
C++
#ifndef SCENE_H
|
|
#define SCENE_H
|
|
|
|
#include "SFML/System.hpp"
|
|
|
|
class SceneNode;
|
|
|
|
class Scene
|
|
{
|
|
public:
|
|
Scene();
|
|
void update();
|
|
private:
|
|
SceneNode* m_sceneNodeTree;
|
|
};
|
|
|
|
//Node Interface
|
|
class SceneNode
|
|
{
|
|
public:
|
|
SceneNode();
|
|
virtual void update() = 0;
|
|
private:
|
|
SceneNode* m_parentNode;
|
|
std::vector<SceneNode*> m_childrenNode;
|
|
};
|
|
|
|
//general Node
|
|
|
|
class ObjectNode : public SceneNode, public PhongEntity
|
|
{
|
|
//add bullet rigidbody
|
|
public:
|
|
virtual void update();
|
|
};
|
|
|
|
class FragmentNode: public ObjectNode
|
|
{
|
|
// TODO: later
|
|
};
|
|
|
|
class ItemNode: public ObjectNode
|
|
{
|
|
// TODO: later
|
|
};
|
|
|
|
// Node
|
|
class GUINode : public SceneNode, public GUIEntity
|
|
{
|
|
public:
|
|
virtual void update();
|
|
};
|
|
|
|
class PlayerNode: public SceneNode, public FPSCamera
|
|
{
|
|
public:
|
|
virtual void update();
|
|
};
|
|
|
|
class EnvironmentNode : public SceneNode
|
|
{
|
|
public:
|
|
virtual void update();
|
|
// parametre skybox
|
|
// directionnal light
|
|
// parametre fog
|
|
};
|
|
|
|
class LightNode : public SceneNode
|
|
{
|
|
public:
|
|
virtual void update();
|
|
//position
|
|
//puissance
|
|
//lighting angle
|
|
//couleur
|
|
};
|
|
|
|
class ChunkNode: public SceneNode
|
|
{
|
|
public:
|
|
virtual void update();
|
|
// map
|
|
};
|
|
|
|
|
|
#endif // SCENE_H
|