+ game-loop-flag)
+
+(define (process-game-elements elements)
+ (cond ((not (list? elements))
+ (process-game-elements (list elements)))
+ (else
+ (draw-meshes (filter (lambda (e) (mesh? e)) elements))
+)))
+
+;;; Extensions to main loop
+
+(define extensions '())
+
+(define (add-extension! proc pri)
+ "Add an extension with a priority to the main loop"
+ (set! extensions
+ (sort (assoc-set! extensions proc pri)
+ (lambda (a b)
+ (< (cdr a) (cdr b))))))
+
+(define (remove-extension! proc)
+ "Remove an extension from the main loop"
+ (set! extensions
+ (assoc-remove! extensions proc)))