1 ;;; guile-irrlicht --- FFI bindings for Irrlicht Engine
2 ;;; Copyright (C) 2019 Javier Sancho <jsf@jsancho.org>
4 ;;; This file is part of guile-irrlicht.
6 ;;; Guile-irrlicht is free software; you can redistribute it and/or modify
7 ;;; it under the terms of the GNU Lesser General Public License as
8 ;;; published by the Free Software Foundation; either version 3 of the
9 ;;; License, or (at your option) any later version.
11 ;;; Guile-irrlicht is distributed in the hope that it will be useful, but
12 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 ;;; General Public License for more details.
16 ;;; You should have received a copy of the GNU Lesser General Public
17 ;;; License along with guile-irrlicht. If not, see
18 ;;; <http://www.gnu.org/licenses/>.
21 (define-module (irrlicht aabbox3d)
22 #:use-module (srfi srfi-9)
23 #:use-module (srfi srfi-9 gnu)
24 #:use-module (system foreign)
25 #:use-module ((irrlicht bindings core) #:prefix ffi-core:)
26 #:export (make-aabbox3d
30 aabbox3d-add-internal-point!))
32 (define-record-type <aabbox3d>
33 (make-raw-aabbox3d c-pointer)
35 (c-pointer aabbox3d-c-pointer))
37 (define* (make-aabbox3d #:optional (min-edge '(0 0 0)) (max-edge min-edge))
39 (make-c-struct ffi-core:aabbox3d_f32 (append min-edge max-edge))))
41 (define (aabbox3d-min-edge box)
42 (let ((data (parse-c-struct (aabbox3d-c-pointer box) ffi-core:aabbox3d_f32)))
45 (define (aabbox3d-max-edge box)
46 (let ((data (parse-c-struct (aabbox3d-c-pointer box) ffi-core:aabbox3d_f32)))
49 (define (aabbox3d-reset! box point)
50 (ffi-core:aabbox3d-reset
51 (aabbox3d-c-pointer box)
52 (make-c-struct ffi-core:vector3df point)))
54 (define (aabbox3d-add-internal-point! box point)
55 (ffi-core:aabbox3d-add-internal-point
56 (aabbox3d-c-pointer box)
57 (make-c-struct ffi-core:vector3df point)))
59 (set-record-type-printer! <aabbox3d>
61 (let ((min (aabbox3d-min-edge record))
62 (max (aabbox3d-max-edge record)))
63 (format port "#<aabbox3d min: ~a max: ~a>" min max))))