engine now has basic compatibility with the new renderer scene format

This commit is contained in:
Anselme 2016-03-14 00:24:24 +01:00
parent e292902cbd
commit ca6f1bf916
6 changed files with 52 additions and 30 deletions

View File

@ -1,7 +1,7 @@
#ifndef CAMERANODE_H #ifndef CAMERANODE_H
#define CAMERANODE_H #define CAMERANODE_H
#include "scene.h" #include "scenetree.h"
#include "camera.h" #include "camera.h"
#include "glm/vec3.hpp" #include "glm/vec3.hpp"

View File

@ -8,7 +8,7 @@
#include <btBulletCollisionCommon.h> #include <btBulletCollisionCommon.h>
#include <btBulletDynamicsCommon.h> #include <btBulletDynamicsCommon.h>
#include "resourcemanager.h" #include "resourcemanager.h"
#include "scene.h" #include "scenetree.h"
#include "cameranode.h" #include "cameranode.h"
Engine::Engine() : Engine::Engine() :
@ -19,14 +19,11 @@ Engine::Engine() :
m_clock = new sf::Clock(); m_clock = new sf::Clock();
m_clock->restart(); m_clock->restart();
m_renderer = new SparrowRenderer(); m_renderer = new SparrowRenderer();
m_renderer->setCamera(NULL);
} }
Engine::~Engine() Engine::~Engine()
{ {
delete m_clock; delete m_clock;
if(m_window != NULL)
m_renderer->destroyGL();
delete m_renderer; delete m_renderer;
if(m_window != NULL) if(m_window != NULL)
{ {
@ -84,9 +81,8 @@ void Engine::update()
void Engine::start() void Engine::start()
{ {
m_running = true; m_running = true;
while(!m_input->isCloseRequested() && m_running){ while(!m_input->isCloseRequested() && m_running)
update(); update();
}
} }
void Engine::stop() void Engine::stop()
@ -106,5 +102,5 @@ unsigned int Engine::getDeltaTime()
void Engine::setScene(std::string sceneName) void Engine::setScene(std::string sceneName)
{ {
m_scene = RESOURCE_GET(Scene, sceneName); m_scene = RESOURCE_GET(SceneTree, sceneName);
} }

View File

@ -5,7 +5,7 @@
class Input; class Input;
class SparrowRenderer; class SparrowRenderer;
class Scene; class SceneTree;
namespace sf namespace sf
{ {
class Clock; class Clock;
@ -45,7 +45,7 @@ private:
sf::Window* m_window; sf::Window* m_window;
Input* m_input; Input* m_input;
Scene* m_scene; SceneTree* m_scene;
btDiscreteDynamicsWorld* m_world; btDiscreteDynamicsWorld* m_world;
SparrowRenderer* m_renderer; SparrowRenderer* m_renderer;

View File

@ -9,14 +9,9 @@
#include "tools/pathfinder.h" #include "tools/pathfinder.h"
int main(){ int main(){
CameraNode camera; SceneTree scene("testScene");
RESOURCE_ADD(&camera, SceneNode, "camera");
Scene scene("testScene");
scene.addChild("camera");
Engine engine; Engine engine;
engine.getRenderer()->setCamera(&camera);
engine.createWindow("test"); engine.createWindow("test");
engine.setScene("testScene"); engine.setScene("testScene");
engine.start(); engine.start();

View File

@ -1,17 +1,34 @@
#include "scene.h" #include "scenetree.h"
#include "resourcemanager.h" #include "resourcemanager.h"
// Scene // Scene
Scene::Scene(std::string name) : SceneTree::SceneTree(std::string name) :
m_name(name) m_name(name),
m_skybox(NULL)
{ {
RESOURCE_ADD(this, Scene, m_name); RESOURCE_ADD(this, SceneTree, m_name);
} }
Scene::~Scene() SceneTree::~SceneTree()
{ {
RESOURCE_ADD(NULL, Scene, m_name); RESOURCE_ADD(NULL, SceneTree, m_name);
}
SceneIterator<Light*>* SceneTree::getLights()
{
return NULL;
}
SceneIterator<GeometryNode*>* SceneTree::getGeometry()
{
return NULL;
}
void SceneTree::update()
{
m_objects.update();
m_map.update();
} }
// Container Node // Container Node

View File

@ -1,8 +1,10 @@
#ifndef SCENE_H #ifndef SCENETREE_H
#define SCENE_H #define SCENETREE_H
#include <vector> #include <vector>
#include <string> #include <string>
#include "scene.h"
#include "light.h"
class SceneNode class SceneNode
{ {
@ -22,18 +24,30 @@ protected:
std::vector<SceneNode*> m_children; std::vector<SceneNode*> m_children;
}; };
class Scene : public ContainerNode class SceneTree : public Scene
{ {
public: public:
Scene(std::string name); SceneTree(std::string name);
~Scene(); ~SceneTree();
virtual SceneIterator<Light*>* getLights();
virtual SceneIterator<GeometryNode*>* getGeometry();
void update();
Texture* getSkybox() {return m_skybox;}
void setSkybox(Texture* skybox) {m_skybox = skybox;}
private: private:
std::string m_name; std::string m_name;
ContainerNode m_objects;
ContainerNode m_map;
Texture* m_skybox;
}; };
//general Node //general Node
class ObjectNode : public SceneNode//, public PhongEntity class ObjectNode : public SceneNode
{ {
//add bullet rigidbody //add bullet rigidbody
public: public:
@ -72,7 +86,7 @@ public:
// parametre fog // parametre fog
}; };
class LightNode : public SceneNode class LightNode : public SceneNode, public Light
{ {
public: public:
virtual void update(); virtual void update();
@ -89,4 +103,4 @@ public:
// map // map
}; };
#endif // SCENE_H #endif // SCENETREE_H