diff --git a/SFMLEngine/makingAGameTick/app b/SFMLEngine/makingAGameTick/app index e4b3500..90483f1 100755 Binary files a/SFMLEngine/makingAGameTick/app and b/SFMLEngine/makingAGameTick/app differ diff --git a/SFMLEngine/makingAGameTick/game.o b/SFMLEngine/makingAGameTick/game.o index d8fedc6..caab821 100644 Binary files a/SFMLEngine/makingAGameTick/game.o and b/SFMLEngine/makingAGameTick/game.o differ diff --git a/SFMLEngine/makingAGameTick/makefile b/SFMLEngine/makingAGameTick/makefile index b74a707..e3a10a6 100644 --- a/SFMLEngine/makingAGameTick/makefile +++ b/SFMLEngine/makingAGameTick/makefile @@ -1,4 +1,4 @@ -CXXFLAGS = -Wextra -Wall -Wfloat-equal -Wundef -Wshadow -Wpointer-arith -Wcast-align -Wstrict-overflow=5 -Wwrite-strings -Wcast-qual -Wunreachable-code -pedantic -Wswitch-default +CXXFLAGS = -Wextra -Wall -Wfloat-equal -Wundef -Wshadow -Wpointer-arith -Wcast-align -Wstrict-overflow=5 -Wwrite-strings -Wcast-qual -Wunreachable-code -pedantic -Wswitch-default -Wno-unused-parameter # https://stackoverflow.com/a/3376483 compile:./game.cpp diff --git a/SFMLEngine/makingAGameTick/scenenode.cpp b/SFMLEngine/makingAGameTick/scenenode.cpp index 8845c16..41efe5e 100644 --- a/SFMLEngine/makingAGameTick/scenenode.cpp +++ b/SFMLEngine/makingAGameTick/scenenode.cpp @@ -30,4 +30,22 @@ SceneNode::ScenePointer SceneNode::detachChild(const SceneNode& node) // finds n return result; // and we return the pointer to the node } +void SceneNode::drawCurrent(sf::RenderTarget& target, sf::RenderStates states) const +{ + +} + +void SceneNode::draw(sf::RenderTarget& target, sf::RenderStates states) const +{ + states.transform *= getTransform(); + // *= combines the parent's absolute transform with the relative one of the current node; + // states.transform contains the absolute world transform + drawCurrent(target, states); // now we can draw the derived object using states, this is similar to how sf::Sprite handles transforms + + for (const ScenePointer& child : mChildren) + { + child -> draw(target, states); // we also need to draw all the child nodes + } +} + #endif diff --git a/SFMLEngine/makingAGameTick/scenenode.hpp b/SFMLEngine/makingAGameTick/scenenode.hpp index ac0f25c..f3da137 100644 --- a/SFMLEngine/makingAGameTick/scenenode.hpp +++ b/SFMLEngine/makingAGameTick/scenenode.hpp @@ -18,7 +18,7 @@ class SceneNode : public sf::Transformable, public sf::Drawable, private sf::Non // Virtual functions are member functions whose behavior can be overridden in derived classes // draw() function allows our class to be used like this: /* - sf::RenderWindow window(...); + sf::RenderWindow window(...); // window class calls our draw() function SceneNode::ScenePointer node(...); window.draw(*node); */