From: Javier Sancho Date: Thu, 21 May 2020 07:24:57 +0000 (+0200) Subject: wrap Irrlicht objects in C++ X-Git-Url: https://git.jsancho.org/?p=guile-irrlicht.git;a=commitdiff_plain;h=5d5dfa18d1acb2c3fa05df26b285ff430c9aff89 wrap Irrlicht objects in C++ --- diff --git a/irrlicht.scm b/irrlicht.scm index 3c54b18..73ab60d 100644 --- a/irrlicht.scm +++ b/irrlicht.scm @@ -29,7 +29,34 @@ #:use-module (irrlicht scene) #:use-module (irrlicht video) #:duplicates (merge-generics) - #:re-export (add-animated-mesh-scene-node! + #:re-export (;; classes + + + + + + + + + + + + + + + + + + + + + + + + + + ;; methods + add-animated-mesh-scene-node! add-animator! add-camera-scene-node! add-camera-scene-node-fps! diff --git a/irrlicht/core.scm b/irrlicht/core.scm index 2b71472..ab2d070 100644 --- a/irrlicht/core.scm +++ b/irrlicht/core.scm @@ -34,7 +34,7 @@ (define (make-box3d) (let ((aabbox3d_make (get-irrlicht-proc "aabbox3d_make"))) - (make #:irr-pointer (aabbox3d_make)))) + (aabbox3d_make))) (define-method (reset-box3d! (box3d ) init-value) (let ((reset (get-irrlicht-proc "aabbox3d_reset"))) diff --git a/irrlicht/device.scm b/irrlicht/device.scm index 04988d3..c922cec 100644 --- a/irrlicht/device.scm +++ b/irrlicht/device.scm @@ -47,35 +47,32 @@ receiver)) (let* ((createDevice (get-irrlicht-proc "createDevice")) - (device-pointer (createDevice device-type window-size bits fullscreen stencilbuffer - vsync receiver))) - (cond ((null-pointer? device-pointer) + (device (createDevice device-type window-size bits fullscreen stencilbuffer + vsync receiver))) + (cond ((null-object? device) (error "In procedure create-device: Device cannot be created")) (else - (make #:irr-pointer device-pointer))))) + device)))) (define-method (get-cursor-control (device )) (let ((getCursorControl (get-irrlicht-proc "getCursorControl" device))) - (make - #:irr-pointer (getCursorControl device)))) + (getCursorControl device))) (define-method (get-file-system (device )) (let ((getFileSystem (get-irrlicht-proc "getFileSystem" device))) - (make - #:irr-pointer (getFileSystem device)))) + (getFileSystem device))) (define-method (get-gui-environment (device )) (let ((getGUIEnvironment (get-irrlicht-proc "getGUIEnvironment" device))) - (make - #:irr-pointer (getGUIEnvironment device)))) + (getGUIEnvironment device))) (define-method (get-scene-manager (device )) - (make - #:irr-pointer ((get-irrlicht-proc "getSceneManager" device) device))) + (let ((getSceneManager (get-irrlicht-proc "getSceneManager" device))) + (getSceneManager device))) (define-method (get-video-driver (device )) - (make - #:irr-pointer ((get-irrlicht-proc "getVideoDriver" device) device))) + (let ((getVideoDriver (get-irrlicht-proc "getVideoDriver" device))) + (getVideoDriver device))) (define-method (is-window-active? (device )) (let ((isWindowActive (get-irrlicht-proc "isWindowActive" device))) @@ -92,5 +89,5 @@ (let ((yield (get-irrlicht-proc "yield" device))) (yield device))) -(export create-device get-cursor-control get-file-system get-gui-environment get-scene-manager - get-video-driver is-window-active? run set-window-caption! yield-device) +(export create-device get-cursor-control get-file-system get-gui-environment + get-scene-manager get-video-driver is-window-active? run set-window-caption! yield-device) diff --git a/irrlicht/foreign.scm b/irrlicht/foreign.scm index 94aab7c..9b55633 100644 --- a/irrlicht/foreign.scm +++ b/irrlicht/foreign.scm @@ -22,7 +22,7 @@ #:use-module (system foreign) #:use-module (irrlicht base) #:export (get-irrlicht-proc - null-pointer?)) + null-object?)) ;; We use a hash table to store foreign irrlicht methods related with their ;; classes @@ -43,5 +43,5 @@ (else proc)))) -(define (null-pointer? pointer) - (eq? pointer %null-pointer)) +(define (null-object? object) + (eq? (irr-pointer object) %null-pointer)) diff --git a/irrlicht/gui.scm b/irrlicht/gui.scm index 1471409..fe2f09d 100644 --- a/irrlicht/gui.scm +++ b/irrlicht/gui.scm @@ -56,17 +56,9 @@ (parent (make )) (id -1) (fill-background #f)) - (make - #:irr-pointer - ((get-irrlicht-proc "addStaticText" gui-environment parent) - gui-environment - text - rectangle - border - word-wrap - parent - id - fill-background)))) + (let ((addStaticText (get-irrlicht-proc "addStaticText" gui-environment parent))) + (addStaticText gui-environment text rectangle border word-wrap parent + id fill-background)))) (define-method (draw-all (gui-environment )) ((get-irrlicht-proc "drawAll" gui-environment) diff --git a/irrlicht/scene.scm b/irrlicht/scene.scm index 9626f4b..0ac4484 100644 --- a/irrlicht/scene.scm +++ b/irrlicht/scene.scm @@ -66,12 +66,12 @@ (let* ((addAnimatedMeshSceneNode (get-irrlicht-proc "addAnimatedMeshSceneNode" scene-manager parent)) - (node-pointer (addAnimatedMeshSceneNode scene-manager mesh parent id position - rotation scale also-add-if-mesh-pointer-zero))) - (cond ((null-pointer? node-pointer) + (node (addAnimatedMeshSceneNode scene-manager mesh parent id position + rotation scale also-add-if-mesh-pointer-zero))) + (cond ((null-object? node) (error "In procedure add-animated-mesh-scene-node!: Scene node cannot be created")) (else - (make #:irr-pointer node-pointer)))))) + node))))) (define-method (add-camera-scene-node! (scene-manager ) . rest) (let-keywords rest #f @@ -80,15 +80,8 @@ (lookat '(0 0 100)) (id -1) (make-active #t)) - (make - #:irr-pointer - ((get-irrlicht-proc "addCameraSceneNode" scene-manager parent) - scene-manager - parent - position - lookat - id - make-active)))) + (let ((addCameraSceneNode (get-irrlicht-proc "addCameraSceneNode" scene-manager parent))) + (addCameraSceneNode scene-manager parent position lookat id make-active)))) (define-method (add-camera-scene-node-fps! (scene-manager ) . rest) (let-keywords rest #f @@ -104,14 +97,12 @@ (make-active #t)) (let ((addCameraSceneNodeFPS (get-irrlicht-proc "addCameraSceneNodeFPS" scene-manager parent))) - (make - #:irr-pointer - (addCameraSceneNodeFPS scene-manager #:parent parent #:rotate-speed rotate-speed - #:move-speed move-speed #:id id #:key-map-array key-map-array - #:key-map-size key-map-size - #:no-vertical-movement no-vertical-movement - #:jump-speed jump-speed #:invert-mouse invert-mouse - #:make-active make-active))))) + (addCameraSceneNodeFPS scene-manager #:parent parent #:rotate-speed rotate-speed + #:move-speed move-speed #:id id #:key-map-array key-map-array + #:key-map-size key-map-size + #:no-vertical-movement no-vertical-movement + #:jump-speed jump-speed #:invert-mouse invert-mouse + #:make-active make-active)))) (define-method (add-custom-scene-node! (scene-manager ) proc-render proc-get-bounding-box proc-get-material-count @@ -123,10 +114,8 @@ (rotation '(0 0 0)) (scale '(1 1 1))) (let ((addCustomSceneNode (get-irrlicht-proc "addCustomSceneNode" scene-manager parent))) - (make - #:irr-pointer - (addCustomSceneNode scene-manager proc-render proc-get-bounding-box proc-get-material-count - proc-get-material parent id position rotation scale))))) + (addCustomSceneNode scene-manager proc-render proc-get-bounding-box proc-get-material-count + proc-get-material parent id position rotation scale)))) (define-method (add-octree-scene-node! (scene-manager ) (mesh ) @@ -137,10 +126,8 @@ (minimal-polys-per-node 512) (also-add-if-mesh-pointer-zero #f)) (let ((addOctreeSceneNode (get-irrlicht-proc "addOctreeSceneNode" scene-manager parent mesh))) - (make - #:irr-pointer - (addOctreeSceneNode scene-manager mesh parent id minimal-polys-per-node - also-add-if-mesh-pointer-zero))))) + (addOctreeSceneNode scene-manager mesh parent id minimal-polys-per-node + also-add-if-mesh-pointer-zero)))) (define-method (add-octree-scene-node! (scene-manager ) (mesh ) @@ -151,16 +138,12 @@ (minimal-polys-per-node 256) (also-add-if-mesh-pointer-zero #f)) (let ((addOctreeSceneNode (get-irrlicht-proc "addOctreeSceneNode" scene-manager parent mesh))) - (make - #:irr-pointer - (addOctreeSceneNode scene-manager mesh parent id minimal-polys-per-node - also-add-if-mesh-pointer-zero))))) + (addOctreeSceneNode scene-manager mesh parent id minimal-polys-per-node + also-add-if-mesh-pointer-zero)))) (define-method (create-rotation-animator (scene-manager ) rotation-speed) (let ((createRotationAnimator (get-irrlicht-proc "createRotationAnimator" scene-manager))) - (make - #:irr-pointer - (createRotationAnimator scene-manager rotation-speed)))) + (createRotationAnimator scene-manager rotation-speed))) (define-method (draw-all (scene-manager )) ((get-irrlicht-proc "drawAll" scene-manager) @@ -168,15 +151,15 @@ (define-method (get-mesh (scene-manager ) filename) (let* ((getMesh (get-irrlicht-proc "getMesh" scene-manager)) - (mesh-pointer (getMesh scene-manager filename))) - (cond ((null-pointer? mesh-pointer) + (mesh (getMesh scene-manager filename))) + (cond ((null-object? mesh) (error "In procedure get-mesh: Mesh cannot be created")) (else - (make #:irr-pointer mesh-pointer))))) + mesh)))) (define-method (get-root-scene-node (scene-manager )) (let ((getRootSceneNode (get-irrlicht-proc "getRootSceneNode" scene-manager))) - (make #:irr-pointer (getRootSceneNode scene-manager)))) + (getRootSceneNode scene-manager))) (export add-animated-mesh-scene-node! add-camera-scene-node! add-camera-scene-node-fps! add-custom-scene-node! add-octree-scene-node! diff --git a/irrlicht/video.scm b/irrlicht/video.scm index 6c56f62..f4feff4 100644 --- a/irrlicht/video.scm +++ b/irrlicht/video.scm @@ -64,23 +64,21 @@ (normalize-normals #f) (use-mip-maps #t)) (let ((SMaterial_make (get-irrlicht-proc "SMaterial_make"))) - (make - #:irr-pointer - (SMaterial_make #:material-type material-type #:ambient-color ambient-color - #:diffuse-color diffuse-color #:emissive-color emissive-color - #:specular-color specular-color #:shininess shininess - #:material-type-param material-type-param - #:material-type-param-2 material-type-param-2 - #:thickness thickness #:z-buffer z-buffer #:anti-aliasing anti-aliasing - #:color-mask color-mask #:color-material color-material - #:blend-operation blend-operation - #:polygon-offset-factor polygon-offset-factor - #:polygon-offset-direction polygon-offset-direction - #:wireframe wireframe #:point-cloud point-cloud - #:gouraud-shading gouraud-shading #:lighting lighting - #:z-write-enable z-write-enable #:backface-culling backface-culling - #:frontface-culling frontface-culling #:fog-enable fog-enable - #:normalize-normals normalize-normals #:use-mip-maps use-mip-maps)))) + (SMaterial_make #:material-type material-type #:ambient-color ambient-color + #:diffuse-color diffuse-color #:emissive-color emissive-color + #:specular-color specular-color #:shininess shininess + #:material-type-param material-type-param + #:material-type-param-2 material-type-param-2 + #:thickness thickness #:z-buffer z-buffer #:anti-aliasing anti-aliasing + #:color-mask color-mask #:color-material color-material + #:blend-operation blend-operation + #:polygon-offset-factor polygon-offset-factor + #:polygon-offset-direction polygon-offset-direction + #:wireframe wireframe #:point-cloud point-cloud + #:gouraud-shading gouraud-shading #:lighting lighting + #:z-write-enable z-write-enable #:backface-culling backface-culling + #:frontface-culling frontface-culling #:fog-enable fog-enable + #:normalize-normals normalize-normals #:use-mip-maps use-mip-maps))) (export make-material) @@ -124,11 +122,8 @@ (getName video-driver))) (define-method (get-texture (video-driver ) filename) - (make - #:irr-pointer - ((get-irrlicht-proc "getTexture" video-driver) - video-driver - filename))) + (let ((getTexture (get-irrlicht-proc "getTexture" video-driver))) + (getTexture video-driver filename))) (define-method (set-material! (video-driver ) (material )) (let ((setMaterial (get-irrlicht-proc "setMaterial" video-driver))) @@ -152,8 +147,6 @@ (define (make-vertex3d position normal color tcoords) (let ((S3DVertex_make (get-irrlicht-proc "S3DVertex_make"))) - (make - #:irr-pointer - (S3DVertex_make position normal color tcoords)))) + (S3DVertex_make position normal color tcoords))) (export get-position make-vertex3d) diff --git a/src/box3d.cpp b/src/box3d.cpp index b1b873c..e254bc2 100644 --- a/src/box3d.cpp +++ b/src/box3d.cpp @@ -40,7 +40,7 @@ SCM aabbox3d_make () { core::aabbox3df* aabbox = new core::aabbox3df (); - return scm_from_pointer ((void*)aabbox, NULL); + return scm_from_irr_pointer ("", (void*) aabbox); } SCM diff --git a/src/device.cpp b/src/device.cpp index ba00f39..dbd251c 100644 --- a/src/device.cpp +++ b/src/device.cpp @@ -46,7 +46,7 @@ irr_createDevice (SCM device_type, scm_to_bool (stencilbuffer), scm_to_bool (vsync), (IEventReceiver*)scm_to_irr_pointer (receiver)); - return scm_from_pointer ((void*)device, NULL); + return scm_from_irr_pointer ("", (void*) device); } SCM @@ -54,7 +54,7 @@ IrrlichtDevice_getCursorControl (SCM device) { gui::ICursorControl* cursor_control = ((IrrlichtDevice*)scm_to_irr_pointer (device))->getCursorControl (); - return scm_from_pointer ((void*)cursor_control, NULL); + return scm_from_irr_pointer ("", (void*) cursor_control); } SCM @@ -62,7 +62,7 @@ IrrlichtDevice_getFileSystem (SCM device) { io::IFileSystem* file_system = ((IrrlichtDevice*)scm_to_irr_pointer (device))->getFileSystem (); - return scm_from_pointer ((void*)file_system, NULL); + return scm_from_irr_pointer ("", (void*) file_system); } SCM @@ -70,7 +70,7 @@ IrrlichtDevice_getGUIEnvironment (SCM device) { gui::IGUIEnvironment* gui_env = ((IrrlichtDevice*)scm_to_irr_pointer (device))->getGUIEnvironment (); - return scm_from_pointer ((void*)gui_env, NULL); + return scm_from_irr_pointer ("", (void*) gui_env); } SCM @@ -78,7 +78,7 @@ IrrlichtDevice_getSceneManager (SCM device) { scene::ISceneManager* manager = ((IrrlichtDevice*)scm_to_irr_pointer (device))->getSceneManager (); - return scm_from_pointer ((void*)manager, NULL); + return scm_from_irr_pointer ("", (void*) manager); } SCM @@ -86,7 +86,7 @@ IrrlichtDevice_getTimer (SCM device) { ITimer* timer = ((IrrlichtDevice*)scm_to_irr_pointer (device))->getTimer (); - return scm_from_pointer ((void*)timer, NULL); + return scm_from_irr_pointer ("", (void*) timer); } SCM @@ -94,7 +94,7 @@ IrrlichtDevice_getVideoDriver (SCM device) { video::IVideoDriver* driver = ((IrrlichtDevice*)scm_to_irr_pointer (device))->getVideoDriver (); - return scm_from_pointer ((void*)driver, NULL); + return scm_from_irr_pointer ("", (void*) driver); } SCM diff --git a/src/event-receiver.cpp b/src/event-receiver.cpp index f8f8a55..1d8e097 100644 --- a/src/event-receiver.cpp +++ b/src/event-receiver.cpp @@ -43,13 +43,13 @@ IEventReceiver_make (SCM proc_on_event) virtual bool OnEvent (const SEvent& event) { - SCM wrapped_event = scm_from_irr_pointer ("irrlicht irr", "", (void*) &event); + SCM wrapped_event = scm_from_irr_pointer ("", (void*) &event); return scm_to_bool (scm_call_1 (scm_on_event, wrapped_event)); } }; CustomReceiver* receiver = new CustomReceiver (proc_on_event); - return scm_from_irr_pointer ("irrlicht irr", "", (void*) receiver); + return scm_from_irr_pointer ("", (void*) receiver); } SCM @@ -64,7 +64,7 @@ SEvent_SGUIEvent_Caller (SCM event) { gui::IGUIElement* caller = ((SEvent*)scm_to_irr_pointer (event))->GUIEvent.Caller; - return scm_from_pointer ((void*)caller, NULL); + return scm_from_irr_pointer ("", (void*) caller); } SCM diff --git a/src/gui-environment.cpp b/src/gui-environment.cpp index e764517..d29750f 100644 --- a/src/gui-environment.cpp +++ b/src/gui-environment.cpp @@ -52,7 +52,7 @@ IGUIEnvironment_addButton (SCM gui_environment, free (wtext); free (wtooltiptext); - return scm_from_pointer ((void*)button, NULL); + return scm_from_irr_pointer ("", (void*) button); } template @@ -75,7 +75,7 @@ IGUIEnvironment_addEditBox (SCM gui_environment, scm_to_int32 (id)); free (wtext); - return scm_from_pointer ((void*)editbox, NULL); + return scm_from_irr_pointer ("", (void*) editbox); } template @@ -100,7 +100,7 @@ IGUIEnvironment_addImage (SCM gui_environment, wtext); free (wtext); - return scm_from_pointer ((void*) new_image, NULL); + return scm_from_irr_pointer ("", (void*) new_image); } template @@ -117,7 +117,7 @@ IGUIEnvironment_addListBox (SCM gui_environment, (TParent)scm_to_irr_pointer (parent), scm_to_int32 (id), scm_to_bool (draw_background)); - return scm_from_pointer ((void*)listbox, NULL); + return scm_from_irr_pointer ("", (void*) listbox); } template @@ -134,7 +134,7 @@ IGUIEnvironment_addScrollBar (SCM gui_environment, scm_to_rect_s32 (rectangle), (TParent)scm_to_irr_pointer (parent), scm_to_int32 (id)); - return scm_from_pointer ((void*)scrollbar, NULL); + return scm_from_irr_pointer ("", (void*) scrollbar); } template @@ -161,7 +161,7 @@ IGUIEnvironment_addStaticText (SCM gui_environment, scm_to_bool (fill_background)); free (wtext); - return scm_from_pointer ((void*)static_text, NULL); + return scm_from_irr_pointer ("", (void*) static_text); } template @@ -184,7 +184,7 @@ IGUIEnvironment_addWindow (SCM gui_environment, scm_to_int32 (id)); free (wtext); - return scm_from_pointer ((void*)window, NULL); + return scm_from_irr_pointer ("", (void*) window); } SCM @@ -199,7 +199,7 @@ IGUIEnvironment_getBuiltInFont (SCM gui_environment) { gui::IGUIFont* font = ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))->getBuiltInFont (); - return scm_from_pointer ((void*)font, NULL); + return scm_from_irr_pointer ("", (void*) font); } SCM @@ -210,7 +210,7 @@ IGUIEnvironment_getFont (SCM gui_environment, gui::IGUIFont* font = ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))->getFont (cfilename); free (cfilename); - return scm_from_pointer ((void*)font, NULL); + return scm_from_irr_pointer ("", (void*) font); } SCM @@ -218,7 +218,7 @@ IGUIEnvironment_getSkin (SCM gui_environment) { gui::IGUISkin* skin = ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))->getSkin (); - return scm_from_pointer ((void*)skin, NULL); + return scm_from_irr_pointer ("", (void*) skin); } void diff --git a/src/gui-skin.cpp b/src/gui-skin.cpp index 06242dd..aeebebe 100644 --- a/src/gui-skin.cpp +++ b/src/gui-skin.cpp @@ -43,7 +43,7 @@ IGUISkin_getFont (SCM gui_skin, { gui::IGUISkin* skin = (gui::IGUISkin*) scm_to_irr_pointer (gui_skin); gui::IGUIFont* font = skin->getFont (scm_to_default_font (which)); - return scm_from_pointer ((void*) font, NULL); + return scm_from_irr_pointer ("", (void*) font); } SCM diff --git a/src/gui-toolbar.cpp b/src/gui-toolbar.cpp index 18a71f7..1340816 100644 --- a/src/gui-toolbar.cpp +++ b/src/gui-toolbar.cpp @@ -52,7 +52,7 @@ IGUIToolBar_addButton (SCM gui_toolbar, free (wtext); free (wtooltiptext); - return scm_from_pointer ((void*) button, NULL); + return scm_from_irr_pointer ("", (void*) button); } void diff --git a/src/material.cpp b/src/material.cpp index 8380924..087952a 100644 --- a/src/material.cpp +++ b/src/material.cpp @@ -26,6 +26,7 @@ #include "gsubr.h" #include "material.h" #include "material-types.h" +#include "wrapped.h" using namespace irr; @@ -116,7 +117,7 @@ SMaterial_make (SCM rest) material->FogEnable = scm_to_bool (fog_enable); material->NormalizeNormals = scm_to_bool (normalize_normals); material->UseMipMaps = scm_to_bool (use_mip_maps); - return scm_from_pointer ((void*) material, NULL); + return scm_from_irr_pointer ("", (void*) material); } void diff --git a/src/scene-manager.cpp b/src/scene-manager.cpp index c9edc8f..31f4330 100644 --- a/src/scene-manager.cpp +++ b/src/scene-manager.cpp @@ -48,7 +48,7 @@ ISceneManager_addAnimatedMeshSceneNode (SCM scene_manager, scm_to_vector3df (rotation), scm_to_vector3df (scale), scm_to_bool (also_add_if_mesh_pointer_zero)); - return scm_from_pointer ((void*) node, NULL); + return scm_from_irr_pointer ("", (void*) node); } template @@ -67,7 +67,7 @@ ISceneManager_addCameraSceneNode (SCM scene_manager, scm_to_vector3df (lookat), scm_to_int32 (id), scm_to_bool (make_active)); - return scm_from_pointer ((void*) camera, NULL); + return scm_from_irr_pointer ("", (void*) camera); } template @@ -112,7 +112,7 @@ ISceneManager_addCameraSceneNodeFPS (SCM scene_manager, scm_to_double (jump_speed), scm_to_bool (invert_mouse), scm_to_bool (make_active)); - return scm_from_pointer ((void*) camera, NULL); + return scm_from_irr_pointer ("", (void*) camera); } template @@ -133,7 +133,7 @@ ISceneManager_addCubeSceneNode (SCM scene_manager, scm_to_vector3df (position), scm_to_vector3df (rotation), scm_to_vector3df (scale)); - return scm_from_pointer ((void*) node, NULL); + return scm_from_irr_pointer ("", (void*) node); } template @@ -218,7 +218,7 @@ ISceneManager_addCustomSceneNode (SCM scene_manager, proc_get_bounding_box, proc_get_material_count, proc_get_material); - return scm_from_pointer ((void*) node, NULL); + return scm_from_irr_pointer ("", (void*) node); } template @@ -237,7 +237,7 @@ ISceneManager_addOctreeSceneNode (SCM scene_manager, scm_to_int32 (id), scm_to_int32 (minimal_polys_per_node), scm_to_bool (also_add_if_mesh_pointer_zero)); - return scm_from_pointer ((void*) node, NULL); + return scm_from_irr_pointer ("", (void*) node); } template @@ -260,7 +260,7 @@ ISceneManager_addSphereSceneNode (SCM scene_manager, scm_to_vector3df (position), scm_to_vector3df (rotation), scm_to_vector3df (scale)); - return scm_from_pointer ((void*) node, NULL); + return scm_from_irr_pointer ("", (void*) node); } SCM @@ -280,7 +280,7 @@ ISceneManager_createFlyCircleAnimator (SCM scene_manager, scm_to_vector3df (direction), scm_to_double (start_position), scm_to_double (radius_ellipsoid)); - return scm_from_pointer ((void*) anim, NULL); + return scm_from_irr_pointer ("", (void*) anim); } SCM @@ -298,7 +298,7 @@ ISceneManager_createFlyStraightAnimator (SCM scene_manager, scm_to_uint32 (time_for_way), scm_to_bool (loop), scm_to_bool (pingpong)); - return scm_from_pointer ((void*) anim, NULL); + return scm_from_irr_pointer ("", (void*) anim); } SCM @@ -308,7 +308,7 @@ ISceneManager_createRotationAnimator (SCM scene_manager, scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_irr_pointer (scene_manager); scene::ISceneNodeAnimator* anim = smgr->createRotationAnimator (scm_to_vector3df (rotation_speed)); - return scm_from_pointer ((void*) anim, NULL); + return scm_from_irr_pointer ("", (void*) anim); } SCM @@ -326,14 +326,14 @@ ISceneManager_getMesh (SCM scene_manager, scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_irr_pointer (scene_manager); scene::IAnimatedMesh* mesh = smgr->getMesh(cfilename); free (cfilename); - return scm_from_pointer ((void*) mesh, NULL); + return scm_from_irr_pointer ("", (void*) mesh); } SCM ISceneManager_getRootSceneNode (SCM scene_manager) { scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_irr_pointer (scene_manager); - return scm_from_pointer ((void*) smgr->getRootSceneNode (), NULL); + return scm_from_irr_pointer ("", (void*) smgr->getRootSceneNode ()); } void diff --git a/src/vertex3d.cpp b/src/vertex3d.cpp index f7c7afb..e0ca2d2 100644 --- a/src/vertex3d.cpp +++ b/src/vertex3d.cpp @@ -41,7 +41,7 @@ S3DVertex_make (SCM position, scm_to_vector3df (normal), scm_to_color (color), scm_to_vector2df (tcoords)); - return scm_from_pointer ((void*) vertex, NULL); + return scm_from_irr_pointer ("", (void*) vertex); } SCM diff --git a/src/video-driver.cpp b/src/video-driver.cpp index 3549111..60fc867 100644 --- a/src/video-driver.cpp +++ b/src/video-driver.cpp @@ -129,7 +129,7 @@ IVideoDriver_getTexture (SCM video_driver, video::IVideoDriver* driver = (video::IVideoDriver*) scm_to_irr_pointer (video_driver); video::ITexture* texture = driver->getTexture (cfilename); free (cfilename); - return scm_from_pointer ((void*) texture, NULL); + return scm_from_irr_pointer ("", (void*) texture); } SCM diff --git a/src/wrapped.cpp b/src/wrapped.cpp index 6da7adf..d569440 100644 --- a/src/wrapped.cpp +++ b/src/wrapped.cpp @@ -19,14 +19,17 @@ . */ +#include #include #include "wrapped.h" +using namespace irr; + /* Make a GOOPS instance from a C++ object pointer */ SCM -scm_from_irr_pointer (const char* module, const char* class_name, void* pointer) +scm_from_irr_pointer (const char* class_name, void* pointer) { - SCM scm_class = scm_variable_ref (scm_c_public_lookup (module, class_name)); + SCM scm_class = scm_variable_ref (scm_c_public_lookup ("irrlicht", class_name)); SCM k_pointer = scm_from_utf8_keyword ("irr-pointer"); SCM scm_pointer = scm_from_pointer (pointer, NULL); return scm_make (scm_list_3 (scm_class, k_pointer, scm_pointer)); diff --git a/src/wrapped.h b/src/wrapped.h index 21f080e..2518025 100644 --- a/src/wrapped.h +++ b/src/wrapped.h @@ -22,10 +22,13 @@ #ifndef __GUILE_IRRLICHT_WRAPPED_H_INCLUDED__ #define __GUILE_IRRLICHT_WRAPPED_H_INCLUDED__ +#include #include +using namespace irr; + SCM -scm_from_irr_pointer (const char* module, const char* class_name, void* pointer); +scm_from_irr_pointer (const char* class_name, void* pointer); void* scm_to_irr_pointer (SCM obj);