X-Git-Url: https://git.jsancho.org/?p=gacela.git;a=blobdiff_plain;f=src%2Fsystem.scm;h=5a70cb5010e34f7db8c0905efd22cbc9b91794f3;hp=9654cffbafdb4a059aedfc3f3ef33fc58a10b1b2;hb=405b60cfd27f00e8dda02e19abe09bf7990bfbc2;hpb=8864bc71fcf9fd551bdb417a1b22655a9097dd30 diff --git a/src/system.scm b/src/system.scm index 9654cff..5a70cb5 100644 --- a/src/system.scm +++ b/src/system.scm @@ -187,6 +187,11 @@ ;;; Making systems +(define-record-type entities-changes-type + (entities-changes changes) + entities-changes? + (changes get-entities-changes)) + (define* (find-entities-by-components c t) (cond ((null? t) '()) (else @@ -213,7 +218,7 @@ (lambda* (#:optional (entities2 #f) (components2 #f)) (let ((e (if (and entities2 components2) entities2 entities)) (c (if (and entities2 components2) components2 components))) - (modify-entities res e c))))))))) + (modify-entities (if (entities-changes? res) (get-entities-changes res) '()) e c))))))))) (define-syntax define-system (syntax-rules () @@ -274,7 +279,10 @@ (else (apply join-systems systems)))) -(export find-entities-by-components +(export entities-changes + entities-changes? + get-entities-changes + find-entities-by-components define-system make-system join-systems