diff --git a/World.cpp b/World.cpp index ec29ffa..9c8ccb0 100644 --- a/World.cpp +++ b/World.cpp @@ -94,11 +94,15 @@ void World::fillColumn(sf::RenderWindow& window, int column, float scale, sf::Co float World::castRay(float originX, float originY, float orientation) { + /* + * Reference used for ray intersection computations : + * https://web.archive.org/web/20220628034315/https://yunes.informatique.univ-paris-diderot.fr/wp-content/uploads/cours/INFOGRAPHIE/08-Raycasting.pdf + */ float deltaX; float deltaY; if(orientation < 45 || orientation > 315) { - deltaX = ; + } else if(orientation < 135) { @@ -113,11 +117,16 @@ float World::castRay(float originX, float originY, float orientation) } - return(); + return 0; } void World::render(sf::RenderWindow& window) const { + /* + * Draw ground and sky planes through half of the screen, as the walls + * will get drawn over them. + * This doesn't work if we support textures/levels. + */ sf::RectangleShape ground = sf::RectangleShape(sf::Vector2f(window.getSize().x,window.getSize().y/2.0)); ground.setFillColor(groundColor); ground.setPosition(0,window.getSize().y/2.0); @@ -128,10 +137,13 @@ void World::render(sf::RenderWindow& window) const window.draw(ground); window.draw(ceiling); + /* + * Throw rays and draw walls over the ceiling and ground. + * Only throws in the plane, which doesn't work for levels/3D. + */ for(int i = 0;i