]> git.jsancho.org Git - guile-irrlicht.git/blob - src/box3d.cpp
Macro for defining guile procedures
[guile-irrlicht.git] / src / box3d.cpp
1 /* guile-irrlicht --- GNU Guile bindings for Irrlicht Engine
2
3    Copyright (C) 2020 Javier Sancho <jsf@jsancho.org>
4
5    This file is part of guile-irrlicht.
6
7    guile-irrlicht is free software; you can redistribute it and/or modify
8    it under the terms of the GNU Lesser General Public License as
9    published by the Free Software Foundation; either version 3 of the
10    License, or (at your option) any later version.
11
12    guile-irrlicht is distributed in the hope that it will be useful, but
13    WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15    General Public License for more details.
16
17    You should have received a copy of the GNU Lesser General Public
18    License along with guile-irrlicht. If not, see
19    <http://www.gnu.org/licenses/>.
20 */
21
22 #include <irrlicht/irrlicht.h>
23 #include <libguile.h>
24 #include "box3d.h"
25 #include "gsubr.h"
26 #include "vector3d.h"
27 #include "wrapped.h"
28
29 extern "C" {
30
31   void
32   init_box3d (void)
33   {
34     init_box3d_type ();
35     DEFINE_GSUBR ("box3d-add-internal-point!", 2, 0, 0, box3d_add_internal_point);
36     DEFINE_GSUBR ("box3d-reset!", 2, 0, 0, box3d_reset);
37     DEFINE_GSUBR ("make-box3d", 0, 0, 0, make_box3d);
38   }
39
40   DEFINE_WRAPPED_TYPE (irr::core::aabbox3df*, "box3d",
41                        init_box3d_type, box3d_p,
42                        wrap_box3d, unwrap_box3d);
43
44   SCM
45   box3d_add_internal_point (SCM box3d,
46                             SCM point)
47   {
48     irr::core::aabbox3df* aabbox = unwrap_box3d (box3d);
49     aabbox->addInternalPoint (scm_to_vector3df (point));
50     return SCM_UNSPECIFIED;
51   }
52
53   SCM
54   box3d_reset (SCM box3d,
55                SCM init_value)
56   {
57     irr::core::aabbox3df* aabbox = unwrap_box3d (box3d);
58     aabbox->reset (scm_to_vector3df (init_value));
59     return SCM_UNSPECIFIED;
60   }
61
62   SCM
63   make_box3d ()
64   {
65     irr::core::aabbox3df* aabbox = new irr::core::aabbox3df ();
66     return wrap_box3d (aabbox);
67   }
68
69 }