@@ -19,6 +19,7 @@ struct RenderChunk { | |||
struct RenderCamera { | |||
SwanCommon::Vec2 pos; | |||
SwanCommon::Vec2i size; | |||
float zoom; | |||
}; | |||
@@ -1,5 +1,6 @@ | |||
#pragma once | |||
#include <swan-common/Vector2.h> | |||
#include <memory> | |||
namespace Cygnet { | |||
@@ -15,6 +16,7 @@ public: | |||
void clear(); | |||
void flip(); | |||
void onResize(int w, int h); | |||
SwanCommon::Vec2i size() { return { w_, h_ }; } | |||
private: | |||
std::unique_ptr<WindowState> state_; |
@@ -152,7 +152,7 @@ Renderer::~Renderer() = default; | |||
void Renderer::draw(const RenderCamera &cam) { | |||
Mat3gf camMat; | |||
camMat.translate(cam.pos.scale(-1, 1) * cam.zoom); // TODO: Change something to make this -cam.pos | |||
camMat.scale({ cam.zoom, cam.zoom }); | |||
camMat.scale({ cam.zoom * ((float)cam.size.y / (float)cam.size.x), cam.zoom }); | |||
auto &chunkProg = state_->chunkProg; | |||
chunkProg.enable(); |
@@ -50,6 +50,7 @@ int main() { | |||
Cygnet::RenderCamera cam = { | |||
.pos = { 0, 0 }, | |||
.size = win.size(), | |||
.zoom = 1, | |||
}; | |||
@@ -84,6 +85,7 @@ int main() { | |||
switch (evt.window.event) { | |||
case SDL_WINDOWEVENT_SIZE_CHANGED: | |||
win.onResize(evt.window.data1, evt.window.data2); | |||
cam.size = win.size(); | |||
break; | |||
} | |||
break; |