diff options
Diffstat (limited to 'chickadee/graphics/tiled.scm')
-rw-r--r-- | chickadee/graphics/tiled.scm | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/chickadee/graphics/tiled.scm b/chickadee/graphics/tiled.scm index 46dfea3..5b3e9bf 100644 --- a/chickadee/graphics/tiled.scm +++ b/chickadee/graphics/tiled.scm @@ -468,26 +468,23 @@ (define *position* (vec2 0.0 0.0)) (define *region* (make-rect 0.0 0.0 0.0 0.0)) -;; Make a default region that is as big as the viewport. -(define (default-region tile-map position) - (let ((vp (current-viewport))) - (set-rect-x! *region* (vec2-x position)) - (set-rect-y! *region* (vec2-y position)) - (set-rect-width! *region* (viewport-width vp)) - (set-rect-height! *region* (viewport-height vp)) - *region*)) - (define* (draw-tile-map tile-map #:key layers (camera %null-vec2) (position %null-vec2) - (region (default-region tile-map camera)) (origin %null-vec2) (scale %default-scale) (rotation 0.0)) "Draw TILE-MAP. By default, all layers are drawn. The LAYERS argument may be used to specify a list of layers to draw, instead." + ;; Make the region as big as the current viewport. + (let ((vp (current-viewport))) + (set-rect-x! *region* (vec2-x camera)) + (set-rect-y! *region* (vec2-y camera)) + (set-rect-width! *region* (viewport-width vp)) + (set-rect-height! *region* (viewport-height vp))) + ;; Translation must be adjusted by inverse of camera. (vec2-copy! camera *position*) (vec2-mult! *position* -1.0) (vec2-add! *position* position) @@ -496,4 +493,4 @@ argument may be used to specify a list of layers to draw, instead." #:position *position* #:rotation rotation #:scale scale) - (draw-tile-map* tile-map *matrix* region #:layers layers)) + (draw-tile-map* tile-map *matrix* *region* #:layers layers)) |