Font and texture resource loading
This commit is contained in:
parent
27f3b120dc
commit
d0baab3dd6
7 changed files with 257 additions and 17 deletions
|
|
@ -429,11 +429,55 @@
|
|||
(end-mode-3d)))
|
||||
(hash-table-set! render-queues queue-name '())))
|
||||
|
||||
;; Resource queue
|
||||
(export resource-load-queue resource-unload-queue)
|
||||
(define resource-load-queue '())
|
||||
(define resource-unload-queue '())
|
||||
|
||||
(export make-resource resource? resource-type resource-contents resource-initialized? resource-initializer resource-finalizer set-resource-contents! set-resource-initialized!)
|
||||
(define-record-type <resource>
|
||||
(int:make-resource type struct initialized? initializer finalizer)
|
||||
resource?
|
||||
(type resource-type)
|
||||
(struct resource-contents set-resource-contents!)
|
||||
(initialized? resource-initialized? set-resource-initialized!)
|
||||
(initializer resource-initializer)
|
||||
(finalizer resource-finalizer))
|
||||
|
||||
(define (add-resource res)
|
||||
(assert (resource? res))
|
||||
(set! resource-load-queue (cons res resource-load-queue)))
|
||||
|
||||
(define (make-resource type struct initialized? initializer finalizer)
|
||||
(assert (member type '(font texture)))
|
||||
(assert (boolean? initialized?))
|
||||
(assert (procedure? initializer))
|
||||
(assert (procedure? finalizer))
|
||||
(let ((r (int:make-resource type struct initialized? initializer finalizer)))
|
||||
(add-resource r)
|
||||
r))
|
||||
|
||||
(define (load-queued-resources)
|
||||
(for-each
|
||||
(lambda (res)
|
||||
((resource-initializer res) res)
|
||||
(set! resource-unload-queue (cons res resource-unload-queue)))
|
||||
resource-load-queue)
|
||||
(set! resource-load-queue '()))
|
||||
|
||||
(define (unload-queued-resources)
|
||||
(for-each
|
||||
(lambda (res)
|
||||
((resource-finalizer res) res))
|
||||
resource-unload-queue)
|
||||
(set! resource-unload-queue '()))
|
||||
|
||||
;; Frame generation and game loop
|
||||
(export resolve-queues next-frame *clear-color* perform-render)
|
||||
|
||||
;; Resolve the entity and system queues. This is exported which allows breaking iteration
|
||||
(define (resolve-queues)
|
||||
(load-queued-resources)
|
||||
(resolve-entity-queue)
|
||||
(resolve-system-queue))
|
||||
|
||||
|
|
@ -483,5 +527,6 @@
|
|||
(process)
|
||||
(unless (close-predicate)
|
||||
(loop)))
|
||||
(unload-queued-resources)
|
||||
(close-window))
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue