(use-modules (chickadee) (chickadee math rect) (chickadee math vector) (chickadee render) (chickadee render font) (chickadee render particles) (chickadee render texture) (chickadee scripting) (ice-9 format) ((sdl2) #:select (sdl-ticks))) (define particles #f) (define texture #f) (define start-time (sdl-ticks)) (define avg-frame-time 0) (define stats-text "") (define (load) (set! *random-state* (random-state-from-platform)) (set! texture (load-image "images/explosion.png")) (set! particles (make-particles 1000 #:texture texture #:animation-columns 12 #:speed-range (vec2 1.0 10.0) #:lifetime 50 #:sort 'young)) (add-particle-emitter particles (make-particle-emitter (make-rect 320.0 240.0 0.0 0.0) 8)) (script (forever (sleep 60) (set! stats-text (format #f "particles: ~d fps: ~1,2f" (particles-size particles) (/ 1000.0 avg-frame-time)))))) (define stats-text-pos (vec2 4.0 464.0)) (define (draw alpha) (draw-particles particles) (draw-text stats-text stats-text-pos) (let ((current-time (sdl-ticks))) (set! avg-frame-time (+ (* (- current-time start-time) 0.1) (* avg-frame-time 0.9))) (set! start-time current-time))) (define (update dt) (update-agenda 1) (update-particles particles)) (run-game #:load load #:draw draw #:update update)