summaryrefslogtreecommitdiff
path: root/examples/framebuffer.scm
diff options
context:
space:
mode:
Diffstat (limited to 'examples/framebuffer.scm')
-rw-r--r--examples/framebuffer.scm36
1 files changed, 21 insertions, 15 deletions
diff --git a/examples/framebuffer.scm b/examples/framebuffer.scm
index 894cbc3..50c65e8 100644
--- a/examples/framebuffer.scm
+++ b/examples/framebuffer.scm
@@ -31,30 +31,36 @@
(load "common.scm")
-(define framebuffer
- (make-framebuffer 320 240))
-
(define inner-camera
(2d-camera #:area (make-rect 0 0 320 240)))
(define outer-camera
(2d-camera #:area (make-rect 0 0 640 480)))
-(define inner-sprite
- (load-sprite "images/p1_front.png"))
+(define-signal framebuffer
+ (on-start (make-framebuffer 320 240)))
+
+(define-signal outer-sprite
+ (signal-map-maybe (lambda (framebuffer)
+ (make-sprite (framebuffer-texture framebuffer)
+ #:anchor 'bottom-left))
+ framebuffer))
-(define outer-sprite
- (make-sprite (framebuffer-texture framebuffer)
- #:anchor 'bottom-left))
+(define-signal player-sprite
+ (on-start (load-sprite "images/p1_front.png")))
(define-signal scene
- (render-begin
- (with-framebuffer framebuffer
- (with-camera inner-camera
- (move (vector2 160 120)
- (render-sprite inner-sprite))))
- (with-camera outer-camera
- (scale 2 (render-sprite outer-sprite)))))
+ (signal-let ((framebuffer framebuffer)
+ (outer-sprite outer-sprite)
+ (inner-sprite player-sprite))
+ (if (and framebuffer outer-sprite inner-sprite)
+ (render-begin
+ (with-framebuffer framebuffer
+ (with-camera inner-camera
+ (move (vector2 160 120) (render-sprite inner-sprite))))
+ (with-camera outer-camera
+ (scale 2 (render-sprite outer-sprite))))
+ render-nothing)))
(with-window (make-window #:title "Simple Sprite Demo")
(run-game-loop scene))