If target fps is 0 the program does not crash anymore.
const r_color border_mask = 0x222222FF;
u_memset(r_asset_fallback_tile, 0, R_TILE_W * R_TILE_H);
- LRTS_UNUSED(border_mask);
-
for (i = 0; i < R_TILE_H/2; i++) {
draw_end = 4 * (i + 1);
i32 i, j;
struct u_vec2 start;
struct u_vec2 end;
-
- start.x = 0;
- start.y = 0;
-
- end.x = m->width;
- end.y = m->height;
-
- /* find start tile that is inside of camera viewport */
+ /* estimate the viewport based on the orthogonal map
+ * This is not perfect, but it is good enough to avoid drawing a
+ * full size map.
+ */
+ start.x = t_main_camera.x / R_TILE_W;
+ start.y = t_main_camera.y / R_TILE_H;
+
+ end.x = ((t_main_camera.x + t_main_camera.viewport_x) / R_TILE_W) * 2;
+ end.y = ((t_main_camera.y + t_main_camera.viewport_y) / R_TILE_H) * 2;
for (i = start.x; i < end.x; i++) {
for (j = start.y; j < end.y; j++) {
struct lrts_config* cfg = lrts_cfg();
target_fps = cfg->target_fps;
- per_frame = in_sec / target_fps;
-
- delta = u_timer_delta(&u_fps_timer);
- delay = per_frame - delta;
/* 0 target fps means we do not delay */
- if (target_fps > 0 && delta < per_frame) {
- p_delay(delay);
+ if (target_fps > 0) {
+ per_frame = in_sec / target_fps;
+
+ delta = u_timer_delta(&u_fps_timer);
+ delay = per_frame - delta;
+ if (delta < per_frame) {
+ p_delay(delay);
+ }
}
delta = u_timer_end(&u_fps_timer);