From 1ad377e3cde4011b9c2934c152335293261c3f1d Mon Sep 17 00:00:00 2001 From: David Thompson Date: Tue, 28 Aug 2018 08:59:27 -0400 Subject: Add sane default canvas view. Cuts down on boilerplate that the user needs to write. --- starling/node-2d.scm | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/starling/node-2d.scm b/starling/node-2d.scm index c0cb243..a0b2746 100644 --- a/starling/node-2d.scm +++ b/starling/node-2d.scm @@ -33,7 +33,9 @@ #:use-module (chickadee render texture) #:use-module (chickadee render viewport) #:use-module (chickadee scripting) + #:use-module (ice-9 match) #:use-module (oop goops) + #:use-module (sdl2 video) #:use-module (starling asset) #:use-module (starling kernel) #:use-module (starling node) @@ -175,8 +177,19 @@ ;; The canvas is the root of a 2D scene. It handles rendering one or ;; more views. +(define (make-default-views) + (match (window-size (window (current-kernel))) + ((width height) + (list + (make + #:camera (make + #:width width + #:height height) + #:area (make-rect 0 0 width height)))))) + (define-class () - (views #:accessor views #:init-form '() #:init-keyword #:views)) + (views #:accessor views #:init-thunk make-default-views + #:init-keyword #:views)) (define-method (update (canvas ) dt) (for-each (lambda (view) -- cgit v1.2.3