-(define-macro (define-mesh header . body)
- (let ((name (car header))
- (args (cdr header)))
- `(define* ,header
- (let ((m (make-mesh
- ',name
- (lambda (props)
- (apply (lambda* ,args ,@body)
- ((@ (gacela utils) arguments-apply) ,name props))))))
- (mesh-properties-set! m (list ,@(map (lambda (a) `(cons ',a ,a)) (names-arguments args))))
- m))))
-