@@ -12,6 +12,7 @@ const Texture = @import("./texture.zig").Texture;
1212const Map = @import ("./map.zig" ).Map ;
1313const tile = @import ("./tile.zig" );
1414const generate = @import ("./generate.zig" );
15+ const Mat4f = math .Mat4 (f32 );
1516
1617// Setup environment
1718pub const panic = platform .panic ;
@@ -109,21 +110,23 @@ pub fn onEvent(event: platform.event.Event) !void {
109110}
110111
111112pub fn render (alpha : f64 ) ! void {
112- const screen_size_int = platform .getScreenSize ();
113- const screen_size = screen_size_int .intToFloat (f32 );
114-
115- flatRenderer .setSize (screen_size );
113+ const screen_size = platform .getScreenSize ();
116114
117115 gl .clearColor (0.0 , 0.0 , 0.0 , 1.0 );
118116 gl .clear (gl .COLOR_BUFFER_BIT | gl .DEPTH_BUFFER_BIT );
119- gl .viewport (0 , 0 , screen_size_int .x , screen_size_int .y );
117+ gl .viewport (0 , 0 , screen_size .x , screen_size .y );
118+
119+ const cam_size = screen_size .intToFloat (f32 );
120+ const cam_pos = playerPos .scale (16 ).intToFloat (f32 ).subv (cam_size .scaleDiv (2 ));
121+
122+ flatRenderer .perspective = Mat4f .orthographic (cam_pos .x , cam_pos .x + cam_size .x , cam_pos .y + cam_size .y , cam_pos .y , -1 , 1 );
120123
121- map .render ();
122- render_tile (.{ .pos = 25 }, playerPos );
124+ map .render (& flatRenderer );
125+ render_tile (& flatRenderer , .{ .pos = 25 }, playerPos );
123126 flatRenderer .flush ();
124127}
125128
126- pub fn render_tile (tid : tile.TID , pos : Vec2i ) void {
129+ pub fn render_tile (fr : * FlatRenderer , tid : tile.TID , pos : Vec2i ) void {
127130 const id = tid .pos ;
128131
129132 const tileposy = id / (tilesetTex .size .x / TILE_W );
@@ -132,5 +135,5 @@ pub fn render_tile(tid: tile.TID, pos: Vec2i) void {
132135 const texpos1 = vec2f (@intToFloat (f32 , tileposx ) / @intToFloat (f32 , tilesetTex .size .x / TILE_W ), @intToFloat (f32 , tileposy ) / @intToFloat (f32 , tilesetTex .size .y / TILE_H ));
133136 const texpos2 = vec2f (@intToFloat (f32 , tileposx + 1 ) / @intToFloat (f32 , tilesetTex .size .x / TILE_W ), @intToFloat (f32 , tileposy + 1 ) / @intToFloat (f32 , tilesetTex .size .y / TILE_H ));
134137
135- flatRenderer .drawTextureRect (tilesetTex , texpos1 , texpos2 , pos .scale (16 ).intToFloat (f32 ), vec2f (16 , 16 )) catch unreachable ;
138+ fr .drawTextureRect (tilesetTex , texpos1 , texpos2 , pos .scale (16 ).intToFloat (f32 ), vec2f (16 , 16 )) catch unreachable ;
136139}
0 commit comments