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
#define CAMERANODE_H
#include "scene.h"
#include "scenetree.h"
#include "camera.h"
#include "glm/vec3.hpp"

View File

@ -8,7 +8,7 @@
#include <btBulletCollisionCommon.h>
#include <btBulletDynamicsCommon.h>
#include "resourcemanager.h"
#include "scene.h"
#include "scenetree.h"
#include "cameranode.h"
Engine::Engine() :
@ -19,14 +19,11 @@ Engine::Engine() :
m_clock = new sf::Clock();
m_clock->restart();
m_renderer = new SparrowRenderer();
m_renderer->setCamera(NULL);
}
Engine::~Engine()
{
delete m_clock;
if(m_window != NULL)
m_renderer->destroyGL();
delete m_renderer;
if(m_window != NULL)
{
@ -84,9 +81,8 @@ void Engine::update()
void Engine::start()
{
m_running = true;
while(!m_input->isCloseRequested() && m_running){
while(!m_input->isCloseRequested() && m_running)
update();
}
}
void Engine::stop()
@ -106,5 +102,5 @@ unsigned int Engine::getDeltaTime()
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 SparrowRenderer;
class Scene;
class SceneTree;
namespace sf
{
class Clock;
@ -45,7 +45,7 @@ private:
sf::Window* m_window;
Input* m_input;
Scene* m_scene;
SceneTree* m_scene;
btDiscreteDynamicsWorld* m_world;
SparrowRenderer* m_renderer;

View File

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

View File

@ -1,17 +1,34 @@
#include "scene.h"
#include "scenetree.h"
#include "resourcemanager.h"
// Scene
Scene::Scene(std::string name) :
m_name(name)
SceneTree::SceneTree(std::string 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

View File

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