From a5db6ebc1852ed1ef035b66e43efcd59f62d3a00 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Fri, 23 Oct 2015 11:54:41 -0400 Subject: [PATCH] Communicate target-frame-rate in frame-events --- prospect-gl/2d.rkt | 4 ++-- prospect-gl/examples/basic.rkt | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/prospect-gl/2d.rkt b/prospect-gl/2d.rkt index c9a0787..e546e66 100644 --- a/prospect-gl/2d.rkt +++ b/prospect-gl/2d.rkt @@ -34,7 +34,7 @@ (struct window (width height) #:transparent) ;; Message sent by world. Describes frame about to be rendered. -(struct frame-event (counter timestamp) #:transparent) +(struct frame-event (counter timestamp target-frame-rate) #:transparent) ;; Message sent by world. Describes a key event. Key is a sealed ;; key-event%. `press?` is #t when the key is pressed (or @@ -320,7 +320,7 @@ (define/override (on-paint) (with-gl-context (lambda () - (inject-event! (message (frame-event counter (sim-time)))) + (inject-event! (message (frame-event counter (sim-time) target-frame-rate))) (set! counter (+ counter 1)) (quiesce!) (unless initialised? diff --git a/prospect-gl/examples/basic.rkt b/prospect-gl/examples/basic.rkt index 0c0b641..c6eadbd 100644 --- a/prospect-gl/examples/basic.rkt +++ b/prospect-gl/examples/basic.rkt @@ -46,9 +46,9 @@ (patch-project/set/single p key-pressed-projection)) (define new-keys-down (set-subtract (set-union keys-down added) removed)) (transition (list x y new-keys-down) '())] - [(message (at-meta (frame-event _ _))) + [(message (at-meta (frame-event _ _ target-frame-rate))) (define-values (old-x old-y) (values x y)) - (define speed 6) + (define speed (/ 360.0 target-frame-rate)) (let* ((x (if (set-member? keys-down 'left) (- x speed) x)) (x (if (set-member? keys-down 'right) (+ x speed) x)) (y (if (set-member? keys-down 'up) (- y speed) y)) @@ -59,13 +59,13 @@ (list 100 100 (set)) (update-sprites (simple-sprite -0.5 100 100 (image-width CC) (image-height CC) CC)) - (sub (frame-event ? ?) #:meta-level 1) + (sub (frame-event ? ? ?) #:meta-level 1) (sub (key-pressed ?)))) (define (spawn-frame-counter) (spawn (lambda (e s) (match e - [(message (at-meta (frame-event counter elapsed-ms))) + [(message (at-meta (frame-event counter elapsed-ms _))) (and (> elapsed-ms 0) (let ((i (text (format "~a fps" (/ counter (/ elapsed-ms 1000.0))) 22 "black"))) (transition s (update-sprites (simple-sprite -10 300 10 @@ -74,7 +74,7 @@ i)))))] [_ #f])) (void) - (sub (frame-event ? ?) #:meta-level 1))) + (sub (frame-event ? ? ?) #:meta-level 1))) (2d-world (spawn-keyboard-integrator) (spawn-background)