diff --git a/camera.cpp b/camera.cpp new file mode 100644 index 0000000..14dc741 --- /dev/null +++ b/camera.cpp @@ -0,0 +1,31 @@ +#include "camera.h" +#include + +#include + +#define PI 3.14159265 + +static void drawLine(sf::RenderWindow* window, sf::Vector2f pos, float angle, float length, sf::Color color); + +void camera_update(Camera* camera, sf::RenderWindow* window) +{ + if (!camera || !window) return; + + drawLine(window, camera->pos, camera->direction, 100, sf::Color::Red); +} + +static void drawLine(sf::RenderWindow* window, sf::Vector2f pos, float angle, float length, sf::Color color) +{ + if (!window) return; + + sf::Vector2f endOffset(length * cos(angle * PI/180.f), length * sin(angle * PI/180.3)); + sf::Vertex start(pos); + sf::Vertex end(pos + endOffset); + + start.color = color; + end.color = color; + + sf::Vertex line[] = { start, end }; + + window->draw(line, 2, sf::Lines); +} diff --git a/camera.h b/camera.h new file mode 100644 index 0000000..0f66971 --- /dev/null +++ b/camera.h @@ -0,0 +1,17 @@ +#ifndef CAMERA_H +#define CAMERA_H + +#include +#include + +typedef struct +{ + sf::Vector2f pos; + float direction; + float resolution; + float fov; +} Camera; + +void camera_update(Camera* camera, sf::RenderWindow* window); + +#endif diff --git a/view.cpp b/view.cpp index 73612e0..3cbf59f 100644 --- a/view.cpp +++ b/view.cpp @@ -3,12 +3,15 @@ #include #include "level.h" +#include "camera.h" static int handleKeyCode(sf::Keyboard::Key key); static sf::Uint32 style = sf::Style::Titlebar; static sf::RenderWindow window(sf::VideoMode(500, 500), "Raycasting", style); +static Camera camera = { sf::Vector2f(300.f, 250.f), 0.f, 1.f, 70.f }; + int view_init() { printf("view_init()\n"); @@ -35,6 +38,7 @@ int view_update() window.clear(); if (!level_update()) return 0; + camera_update(&camera, &window); window.display(); return 1;