]> git.jsancho.org Git - guile-irrlicht.git/blobdiff - src/box3d.cpp
box3d
[guile-irrlicht.git] / src / box3d.cpp
index 7185c0b3c072c707e2caef882922a5177b4812c0..1c0152a186739f6dec133fa47e118f88bb957be9 100644 (file)
 #include <irrlicht/irrlicht.h>
 #include <libguile.h>
 #include "box3d.h"
+#include "gsubr.h"
 #include "vector3d.h"
-#include "wrapped.h"
 
-extern "C" {
 
-  void
-  init_box3d (void)
-  {
-    init_box3d_type ();
-    scm_c_define_gsubr ("box3d-add-internal-point!", 2, 0, 0, (scm_t_subr)box3d_add_internal_point);
-    scm_c_define_gsubr ("box3d-reset!", 2, 0, 0, (scm_t_subr)box3d_reset);
-    scm_c_define_gsubr ("make-box3d", 0, 0, 0, (scm_t_subr)make_box3d);
-    scm_c_export ("box3d-add-internal-point!", "box3d-reset!", "make-box3d", NULL);
-  }
+using namespace irr;
 
-  DEFINE_WRAPPED_TYPE (irr::core::aabbox3df*, "box3d",
-                       init_box3d_type, box3d_p,
-                       wrap_box3d, unwrap_box3d);
 
-  SCM
-  box3d_add_internal_point (SCM box3d,
-                            SCM point)
-  {
-    irr::core::aabbox3df* aabbox = unwrap_box3d (box3d);
-    aabbox->addInternalPoint (scm_to_vector3df (point));
-    return SCM_UNSPECIFIED;
-  }
+SCM
+irr_core_aabbox3d_addInternalPoint (SCM box3d,
+                                    SCM point)
+{
+  ((core::aabbox3df*)scm_to_pointer (box3d))->addInternalPoint (scm_to_vector3df (point));
+  return SCM_UNSPECIFIED;
+}
 
-  SCM
-  box3d_reset (SCM box3d,
-               SCM init_value)
-  {
-    irr::core::aabbox3df* aabbox = unwrap_box3d (box3d);
-    aabbox->reset (scm_to_vector3df (init_value));
-    return SCM_UNSPECIFIED;
-  }
 
-  SCM
-  make_box3d ()
+SCM
+irr_core_aabbox3d_make ()
+{
+  core::aabbox3df* aabbox = new core::aabbox3df ();
+  return scm_from_pointer ((void*)aabbox, NULL);
+}
+
+
+SCM
+irr_core_aabbox3d_reset (SCM box3d,
+                         SCM init_value)
+{
+  ((core::aabbox3df*)scm_to_pointer (box3d))->reset (scm_to_vector3df (init_value));
+  return SCM_UNSPECIFIED;
+}
+
+
+extern "C" {
+
+  void
+  init_box3d (void)
   {
-    irr::core::aabbox3df* aabbox = new irr::core::aabbox3df ();
-    return wrap_box3d (aabbox);
+    DEFINE_GSUBR ("irr_core_aabbox3d_addInternalPoint", 2, 0, 0,
+                  irr_core_aabbox3d_addInternalPoint);
+    DEFINE_GSUBR ("irr_core_aabbox3d_make", 0, 0, 0,
+                  irr_core_aabbox3d_make);
+    DEFINE_GSUBR ("irr_core_aabbox3d_reset", 2, 0, 0,
+                  irr_core_aabbox3d_reset);
   }
 
 }