From e7bfc01f7bafa34aa841949c5c9c3e6dc32f0d8e Mon Sep 17 00:00:00 2001 From: BirDt_ Date: Sat, 18 Apr 2026 09:07:16 +0800 Subject: [PATCH] Global and local position --- engine/components.scm | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/engine/components.scm b/engine/components.scm index 54b220d..87b12c8 100644 --- a/engine/components.scm +++ b/engine/components.scm @@ -37,15 +37,20 @@ ;; Generic accessors and mutators for position, rotation, scale, anchor, and parent ;; This allows us to abstract across different transform types - (position) will work for ;; screen-transform and 2D-transform, with type checking -(export position set-position! rotation set-rotation! scale set-scale! - anchor set-anchor! parent set-parent!) +(export global-position position set-position! rotation + set-rotation! scale set-scale! anchor set-anchor! + parent set-parent!) -(define (position component) +(define (global-position component) (assert (record? component)) (if (null? (parent component)) ((rtd-accessor (record-rtd component) 'position) component) (v+ ((rtd-accessor (record-rtd component) 'position) component) - (position (parent component))))) + (global-position (parent component))))) + +(define (position component) + (assert (record? component)) + ((rtd-accessor (record-rtd component) 'position) component)) (define (set-position! component position) (assert (record? component))