Communicate target-frame-rate in frame-events

This commit is contained in:
Tony Garnock-Jones 2015-10-23 11:54:41 -04:00
parent 419bb054f1
commit a5db6ebc18
2 changed files with 7 additions and 7 deletions

View File

@ -34,7 +34,7 @@
(struct window (width height) #:transparent) (struct window (width height) #:transparent)
;; Message sent by world. Describes frame about to be rendered. ;; 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 ;; Message sent by world. Describes a key event. Key is a sealed
;; key-event%. `press?` is #t when the key is pressed (or ;; key-event%. `press?` is #t when the key is pressed (or
@ -320,7 +320,7 @@
(define/override (on-paint) (define/override (on-paint)
(with-gl-context (with-gl-context
(lambda () (lambda ()
(inject-event! (message (frame-event counter (sim-time)))) (inject-event! (message (frame-event counter (sim-time) target-frame-rate)))
(set! counter (+ counter 1)) (set! counter (+ counter 1))
(quiesce!) (quiesce!)
(unless initialised? (unless initialised?

View File

@ -46,9 +46,9 @@
(patch-project/set/single p key-pressed-projection)) (patch-project/set/single p key-pressed-projection))
(define new-keys-down (set-subtract (set-union keys-down added) removed)) (define new-keys-down (set-subtract (set-union keys-down added) removed))
(transition (list x y new-keys-down) '())] (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-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)) (let* ((x (if (set-member? keys-down 'left) (- x speed) x))
(x (if (set-member? keys-down 'right) (+ x speed) x)) (x (if (set-member? keys-down 'right) (+ x speed) x))
(y (if (set-member? keys-down 'up) (- y speed) y)) (y (if (set-member? keys-down 'up) (- y speed) y))
@ -59,13 +59,13 @@
(list 100 100 (set)) (list 100 100 (set))
(update-sprites (update-sprites
(simple-sprite -0.5 100 100 (image-width CC) (image-height CC) CC)) (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 ?)))) (sub (key-pressed ?))))
(define (spawn-frame-counter) (define (spawn-frame-counter)
(spawn (lambda (e s) (spawn (lambda (e s)
(match e (match e
[(message (at-meta (frame-event counter elapsed-ms))) [(message (at-meta (frame-event counter elapsed-ms _)))
(and (> elapsed-ms 0) (and (> elapsed-ms 0)
(let ((i (text (format "~a fps" (/ counter (/ elapsed-ms 1000.0))) 22 "black"))) (let ((i (text (format "~a fps" (/ counter (/ elapsed-ms 1000.0))) 22 "black")))
(transition s (update-sprites (simple-sprite -10 300 10 (transition s (update-sprites (simple-sprite -10 300 10
@ -74,7 +74,7 @@
i)))))] i)))))]
[_ #f])) [_ #f]))
(void) (void)
(sub (frame-event ? ?) #:meta-level 1))) (sub (frame-event ? ? ?) #:meta-level 1)))
(2d-world (spawn-keyboard-integrator) (2d-world (spawn-keyboard-integrator)
(spawn-background) (spawn-background)