From 417ebc04afe1fb98c6df4480be8725877697069a Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sun, 16 May 2021 11:40:47 +0200 Subject: Restore effects using clocks --- guile/starlet/clock.scm | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'guile/starlet/clock.scm') diff --git a/guile/starlet/clock.scm b/guile/starlet/clock.scm index 46dd316..29782a0 100644 --- a/guile/starlet/clock.scm +++ b/guile/starlet/clock.scm @@ -32,6 +32,7 @@ clock-stopped? clock-reversed? + elapsed-time elapsed-fraction)) @@ -45,7 +46,7 @@ ;; "Real" clocks are straightforward objects for measuring differences in time ;; between now and some point in the past, allowing for temporarily "pausing" ;; the clock. The time difference cannot be negative: if the start time is in -;; the future, then "time-elapsed" will return 0. +;; the future, then "elapsed-time" will return 0. (define-class () (start-real-time @@ -74,7 +75,7 @@ (make )) -(define-method (time-elapsed (clock )) +(define-method (elapsed-time (clock )) (if (clock-stopped? clock) (get-start-elapsed-time clock) (max 0 @@ -91,13 +92,13 @@ ;; Stop the clock running (define-method (stop-clock! (clock )) - (set-start-elapsed-time! clock (time-elapsed clock)) + (set-start-elapsed-time! clock (elapsed-time clock)) (set-clock-stopped! clock #t)) ;; Start the clock running (forwards) (define-method (start-clock! (clock )) - (set-start-elapsed-time! clock (time-elapsed clock)) + (set-start-elapsed-time! clock (elapsed-time clock)) (set-start-real-time! clock (time-now)) (set-clock-reversed! clock #f) (set-clock-stopped! clock #f)) @@ -105,7 +106,7 @@ ;; Start the clock running, backwards (define-method (reverse-clock! (clock )) - (set-start-elapsed-time! clock (time-elapsed clock)) + (set-start-elapsed-time! clock (elapsed-time clock)) (set-start-real-time! clock (time-now)) (set-clock-reversed! clock #t) (set-clock-stopped! clock #f)) @@ -139,18 +140,18 @@ (clock-reversed? (get-parent-clock clock))) -(define-method (time-elapsed (clock )) - (max 0 (- (time-elapsed (get-parent-clock clock)) +(define-method (elapsed-time (clock )) + (max 0 (- (elapsed-time (get-parent-clock clock)) (get-delay-time clock)))) (define-method (elapsed-fraction (clock )) (if (= (get-duration clock) 0) - (if (> (time-elapsed clock) 0) + (if (> (elapsed-time clock) 0) 1.0 0.0) (min 1.0 - (/ (time-elapsed clock) + (/ (elapsed-time clock) (get-duration clock))))) -- cgit v1.2.3