From ca6f1bf916fd78ee12c0a9f5c440f3a945dd24d2 Mon Sep 17 00:00:00 2001 From: Anselme Date: Mon, 14 Mar 2016 00:24:24 +0100 Subject: [PATCH] engine now has basic compatibility with the new renderer scene format --- src/cameranode.h | 2 +- src/engine.cpp | 10 +++------- src/engine.h | 4 ++-- src/main.cpp | 7 +------ src/{scene.cpp => scenetree.cpp} | 29 +++++++++++++++++++++++------ src/{scene.h => scenetree.h} | 30 ++++++++++++++++++++++-------- 6 files changed, 52 insertions(+), 30 deletions(-) rename src/{scene.cpp => scenetree.cpp} (66%) rename src/{scene.h => scenetree.h} (66%) diff --git a/src/cameranode.h b/src/cameranode.h index 331cb41..bd42753 100644 --- a/src/cameranode.h +++ b/src/cameranode.h @@ -1,7 +1,7 @@ #ifndef CAMERANODE_H #define CAMERANODE_H -#include "scene.h" +#include "scenetree.h" #include "camera.h" #include "glm/vec3.hpp" diff --git a/src/engine.cpp b/src/engine.cpp index cdcf083..c4b3aa7 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -8,7 +8,7 @@ #include #include #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); } diff --git a/src/engine.h b/src/engine.h index a16e4f5..2b88cdc 100644 --- a/src/engine.h +++ b/src/engine.h @@ -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; diff --git a/src/main.cpp b/src/main.cpp index 2f4f09f..eabdeb4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -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(); diff --git a/src/scene.cpp b/src/scenetree.cpp similarity index 66% rename from src/scene.cpp rename to src/scenetree.cpp index 42858da..b51a203 100644 --- a/src/scene.cpp +++ b/src/scenetree.cpp @@ -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* SceneTree::getLights() +{ + return NULL; +} + +SceneIterator* SceneTree::getGeometry() +{ + return NULL; +} + +void SceneTree::update() +{ + m_objects.update(); + m_map.update(); } // Container Node diff --git a/src/scene.h b/src/scenetree.h similarity index 66% rename from src/scene.h rename to src/scenetree.h index 3dd8761..2dea1ad 100644 --- a/src/scene.h +++ b/src/scenetree.h @@ -1,8 +1,10 @@ -#ifndef SCENE_H -#define SCENE_H +#ifndef SCENETREE_H +#define SCENETREE_H #include #include +#include "scene.h" +#include "light.h" class SceneNode { @@ -22,18 +24,30 @@ protected: std::vector m_children; }; -class Scene : public ContainerNode +class SceneTree : public Scene { public: - Scene(std::string name); - ~Scene(); + SceneTree(std::string name); + ~SceneTree(); + + virtual SceneIterator* getLights(); + virtual SceneIterator* 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