Rev Author Line No. Line
1 ovan 1 #ifndef ENGINE
2 #define ENGINE
3  
4 #include "../device/device.h"
5 #include "../driver/fbo.h"
6  
7 //#include "node.h"
8  
9 #include "billboard/billboard.h"
10 #include "billboard/sprite.h"
11 #include "camera/camera.h"
12 #include "real/natif.h"
13 #include "real/octree.h"
14 #include "real/grid.h"
15  
16 namespace sleek
17 {
18     namespace scene3d
19     {
20         class engine : public std::enable_shared_from_this<engine>
21         {
22             public:
23                 engine(device::Device *, driver::driver *) noexcept;
24                 virtual ~engine() noexcept;
25  
26                 inline std::shared_ptr<engine> getptr() noexcept
27                 {
28                     return shared_from_this();
29                 }
30  
31                 Node *addSceneNode(Node*) noexcept;
32                 u32   getNumberNode() const noexcept { return nd.size(); }
33                 Node *getNode(u32 i) const noexcept { return nd[i]; }
34                 void removeNode(Node*) noexcept;
35  
36                 void clear() noexcept;
37  
38                 void enableDebugDraw(bool) noexcept;
39                 bool isDebugDraw() const noexcept;
40  
41                 device::Device *getDevice() const noexcept;
42                 driver::driver *getDrawManager() const noexcept;
43                 camera::Camera *getCamera() const noexcept;
44  
45                 void render() noexcept;
46             protected:
47                 device::Device *screen;
48                 camera::Camera *cm;
49                 driver::driver *mom;
50             private:
51                 bool debug_draw;
52                 std::vector<Node*> nd;
53                 const char *currentScene;
54         };
55     }
56 }
57 #endif // ENGINE_H