Merge branch 'pipeline_refactoring' of https://git.epicsparrow.com/epicsparrow/sparrowengine into pipeline_refactoring
This commit is contained in:
commit
aab6ff7575
@ -99,7 +99,7 @@ unsigned int Engine::getDeltaTime()
|
||||
return m_timeStamp - m_lastTimeStamp;
|
||||
}
|
||||
|
||||
void Engine::setScene(std::string sceneName)
|
||||
void Engine::setScene(SceneTree *scene)
|
||||
{
|
||||
m_scene = RESOURCE_GET(SceneTree, sceneName);
|
||||
m_scene = scene;
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ public:
|
||||
unsigned int w = 800,
|
||||
unsigned int h = 600,
|
||||
bool isWindowed = true);
|
||||
void setScene(std::string sceneName);
|
||||
void setScene(SceneTree *scene);
|
||||
void initPhysics();
|
||||
|
||||
void start();
|
||||
|
@ -10,12 +10,11 @@
|
||||
#include "tools/loader.h"
|
||||
|
||||
int main(){
|
||||
SceneTree scene("testScene");
|
||||
|
||||
Engine engine;
|
||||
|
||||
engine.createWindow("test");
|
||||
engine.setScene("testScene");
|
||||
SceneTree scene; // the opengl context must exist before the scene is created
|
||||
engine.setScene(&scene);
|
||||
engine.start();
|
||||
|
||||
/* GraphNode n1 = GraphNode();
|
||||
|
@ -1,27 +1,36 @@
|
||||
#include "scenetree.h"
|
||||
#include "resourcemanager.h"
|
||||
#include <pipeline.h>
|
||||
|
||||
// Scene
|
||||
|
||||
SceneTree::SceneTree(std::string name) :
|
||||
m_name(name),
|
||||
SceneTree::SceneTree() :
|
||||
Scene(),
|
||||
m_skybox(NULL)
|
||||
{
|
||||
RESOURCE_ADD(this, SceneTree, m_name);
|
||||
m_simplepipeline = new SimplePipeline();
|
||||
m_simplepipeline->setClearColor(glm::vec3(0.1f, 0.4f, 0.25f));
|
||||
}
|
||||
|
||||
SceneTree::~SceneTree()
|
||||
{
|
||||
RESOURCE_ADD(NULL, SceneTree, m_name);
|
||||
|
||||
}
|
||||
|
||||
void SceneTree::setMainCamera(CameraNode *camera)
|
||||
{
|
||||
m_simplepipeline->setCamera(camera);
|
||||
}
|
||||
|
||||
SceneIterator<Light*>* SceneTree::getLights()
|
||||
{
|
||||
// TODO
|
||||
return NULL;
|
||||
}
|
||||
|
||||
SceneIterator<GeometryNode*>* SceneTree::getGeometry()
|
||||
{
|
||||
// TODO
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -38,9 +47,8 @@ void ContainerNode::update()
|
||||
sn->update();
|
||||
}
|
||||
|
||||
void ContainerNode::addChild(const std::string &childName)
|
||||
void ContainerNode::addChild(SceneNode* node)
|
||||
{
|
||||
SceneNode* node = RESOURCE_GET(SceneNode, childName);
|
||||
if(node != NULL)
|
||||
{
|
||||
m_children.push_back(node);
|
||||
@ -48,18 +56,15 @@ void ContainerNode::addChild(const std::string &childName)
|
||||
}
|
||||
}
|
||||
|
||||
void ContainerNode::removeChild(const std::string &childName)
|
||||
void ContainerNode::removeChild(SceneNode* node)
|
||||
{
|
||||
SceneNode* node = RESOURCE_GET(SceneNode, childName);
|
||||
if(node != NULL)
|
||||
{
|
||||
for(unsigned int i=0; i<m_children.size(); ++i)
|
||||
for(auto it = m_children.begin(); it != m_children.end(); ++it)
|
||||
{
|
||||
if(m_children[i] == node)
|
||||
if(*it == node)
|
||||
{
|
||||
m_children[i]->m_parent = NULL;
|
||||
m_children[i] == m_children.back();
|
||||
m_children.pop_back();
|
||||
m_children.erase(it);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -7,6 +7,8 @@
|
||||
#include "light.h"
|
||||
#include "resourcemanager.h"
|
||||
|
||||
class SimplePipeline;
|
||||
|
||||
/**
|
||||
* @brief The SceneNode class represents a class of the game
|
||||
* that will be updated or used for rendering every frame
|
||||
@ -25,8 +27,16 @@ class ContainerNode : public SceneNode
|
||||
{
|
||||
public:
|
||||
virtual void update();
|
||||
void addChild(const std::string &childName);
|
||||
void removeChild(const std::string &childName);
|
||||
|
||||
/**
|
||||
* @brief addChild adds node in the ContainerNode's children list
|
||||
*/
|
||||
void addChild(SceneNode* node);
|
||||
|
||||
/**
|
||||
* @brief removeChild removes the first iteration of node of the children list
|
||||
*/
|
||||
void removeChild(SceneNode* node);
|
||||
protected:
|
||||
std::vector<SceneNode*> m_children;
|
||||
};
|
||||
@ -42,7 +52,7 @@ class CameraNode : public Camera, SceneNode
|
||||
class SceneTree : public Scene
|
||||
{
|
||||
public:
|
||||
SceneTree(std::string name);
|
||||
SceneTree();
|
||||
~SceneTree();
|
||||
|
||||
virtual SceneIterator<Light*>* getLights();
|
||||
@ -53,13 +63,13 @@ public:
|
||||
Texture* getSkybox() {return m_skybox;}
|
||||
void setSkybox(Texture* skybox) {m_skybox = skybox;}
|
||||
|
||||
void setMainCamera(const std::string &name) {m_camera = RESOURCE_GET(CameraNode, name);}
|
||||
void addRootObject(const std::string &name) {m_root.addChild(name);}
|
||||
void setMainCamera(CameraNode *camera);
|
||||
void addRootObject(SceneNode *node) {m_root.addChild(node);}
|
||||
|
||||
private:
|
||||
std::string m_name;
|
||||
ContainerNode m_root;
|
||||
Texture* m_skybox;
|
||||
SimplePipeline* m_simplepipeline;
|
||||
};
|
||||
|
||||
// Additionnal Nodes :
|
||||
|
Loading…
x
Reference in New Issue
Block a user