#include "gsubr.h"
#include "scene-manager.h"
#include "vector3d.h"
-
+#include "wrapped.h"
using namespace irr;
-
template <typename TParent>
SCM
-scene_ISceneManager_addAnimatedMeshSceneNode (SCM scene_manager,
- SCM mesh,
- SCM parent,
- SCM id,
- SCM position,
- SCM rotation,
- SCM scale,
- SCM also_add_if_mesh_pointer_zero)
+ISceneManager_addAnimatedMeshSceneNode (SCM scene_manager,
+ SCM mesh,
+ SCM parent,
+ SCM id,
+ SCM position,
+ SCM rotation,
+ SCM scale,
+ SCM also_add_if_mesh_pointer_zero)
{
- scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_pointer (scene_manager);
+ scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_irr_pointer (scene_manager);
scene::IAnimatedMeshSceneNode* node =
- smgr->addAnimatedMeshSceneNode ((scene::IAnimatedMesh*) scm_to_pointer (mesh),
- (TParent) scm_to_pointer (parent),
+ smgr->addAnimatedMeshSceneNode ((scene::IAnimatedMesh*) scm_to_irr_pointer (mesh),
+ (TParent) scm_to_irr_pointer (parent),
scm_to_int32 (id),
scm_to_vector3df (position),
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 ("<animated-mesh-scene-node>", (void*) node);
}
-
template <typename TParent>
SCM
-scene_ISceneManager_addCameraSceneNode (SCM scene_manager,
- SCM parent,
- SCM position,
- SCM lookat,
- SCM id,
- SCM make_active)
+ISceneManager_addCameraSceneNode (SCM scene_manager,
+ SCM parent,
+ SCM position,
+ SCM lookat,
+ SCM id,
+ SCM make_active)
{
- scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_pointer (scene_manager);
+ scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_irr_pointer (scene_manager);
scene::ICameraSceneNode* camera =
- smgr->addCameraSceneNode ((TParent) scm_to_pointer (parent),
+ smgr->addCameraSceneNode ((TParent) scm_to_irr_pointer (parent),
scm_to_vector3df (position),
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 ("<camera-scene-node>", (void*) camera);
}
-
template <typename TParent>
SCM
-scene_ISceneManager_addCameraSceneNodeFPS (SCM scene_manager,
- SCM rest)
+ISceneManager_addCameraSceneNodeFPS (SCM scene_manager,
+ SCM rest)
{
SCM parent;
SCM rotate_speed;
scm_from_utf8_keyword ("make-active"), &make_active,
SCM_UNDEFINED);
- scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_pointer (scene_manager);
+ scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_irr_pointer (scene_manager);
scene::ICameraSceneNode* camera =
- smgr->addCameraSceneNodeFPS ((TParent) scm_to_pointer (parent),
+ smgr->addCameraSceneNodeFPS ((TParent) scm_to_irr_pointer (parent),
scm_to_double (rotate_speed),
scm_to_double (move_speed),
scm_to_int32 (id),
- (SKeyMap*) scm_to_pointer (key_map_array),
+ (SKeyMap*) scm_to_irr_pointer (key_map_array),
scm_to_int32 (key_map_size),
scm_to_bool (no_vertical_movement),
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 ("<camera-scene-node>", (void*) camera);
}
-
template <typename TParent>
SCM
-scene_ISceneManager_addCubeSceneNode (SCM scene_manager,
- SCM size,
- SCM parent,
- SCM id,
- SCM position,
- SCM rotation,
- SCM scale)
+ISceneManager_addCubeSceneNode (SCM scene_manager,
+ SCM size,
+ SCM parent,
+ SCM id,
+ SCM position,
+ SCM rotation,
+ SCM scale)
{
- scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_pointer (scene_manager);
+ scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_irr_pointer (scene_manager);
scene::IMeshSceneNode* node =
smgr->addCubeSceneNode (scm_to_double (size),
- (TParent) scm_to_pointer (parent),
+ (TParent) scm_to_irr_pointer (parent),
scm_to_int32 (id),
scm_to_vector3df (position),
scm_to_vector3df (rotation),
scm_to_vector3df (scale));
- return scm_from_pointer ((void*) node, NULL);
+ return scm_from_irr_pointer ("<mesh-scene-node>", (void*) node);
}
-
template <typename TParent>
SCM
-scene_ISceneManager_addCustomSceneNode (SCM scene_manager,
- SCM proc_render,
- SCM proc_get_bounding_box,
- SCM proc_get_material_count,
- SCM proc_get_material,
- SCM parent,
- SCM id,
- SCM position,
- SCM rotation,
- SCM scale)
+ISceneManager_addCustomSceneNode (SCM scene_manager,
+ SCM proc_render,
+ SCM proc_get_bounding_box,
+ SCM proc_get_material_count,
+ SCM proc_get_material,
+ SCM parent,
+ SCM id,
+ SCM position,
+ SCM rotation,
+ SCM scale)
{
class CustomSceneNode : public scene::ISceneNode
{
virtual const core::aabbox3d<f32>& getBoundingBox () const
{
SCM box = scm_call_0 (scm_get_bounding_box);
- return *((core::aabbox3d<f32>*) scm_to_pointer (box));
+ return *((core::aabbox3d<f32>*) scm_to_irr_pointer (box));
}
virtual u32 getMaterialCount () const
virtual video::SMaterial& getMaterial (u32 i)
{
SCM material = scm_call_1 (scm_get_material, scm_from_uint32 (i));
- return *((video::SMaterial*) scm_to_pointer (material));
+ return *((video::SMaterial*) scm_to_irr_pointer (material));
}
};
CustomSceneNode* node =
- new CustomSceneNode ((TParent) scm_to_pointer (parent),
- (scene::ISceneManager*) scm_to_pointer (scene_manager),
+ new CustomSceneNode ((TParent) scm_to_irr_pointer (parent),
+ (scene::ISceneManager*) scm_to_irr_pointer (scene_manager),
scm_to_int32 (id),
scm_to_vector3df (position),
scm_to_vector3df (rotation),
proc_get_bounding_box,
proc_get_material_count,
proc_get_material);
- return scm_from_pointer ((void*) node, NULL);
+ return scm_from_irr_pointer ("<scene-node>", (void*) node);
}
-
template <typename TParent, typename TMesh>
SCM
-scene_ISceneManager_addOctreeSceneNode (SCM scene_manager,
- SCM mesh,
- SCM parent,
- SCM id,
- SCM minimal_polys_per_node,
- SCM also_add_if_mesh_pointer_zero)
+ISceneManager_addOctreeSceneNode (SCM scene_manager,
+ SCM mesh,
+ SCM parent,
+ SCM id,
+ SCM minimal_polys_per_node,
+ SCM also_add_if_mesh_pointer_zero)
{
- scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_pointer (scene_manager);
+ scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_irr_pointer (scene_manager);
scene::IMeshSceneNode* node =
- smgr->addOctreeSceneNode ((TMesh) scm_to_pointer (mesh),
- (TParent) scm_to_pointer (parent),
+ smgr->addOctreeSceneNode ((TMesh) scm_to_irr_pointer (mesh),
+ (TParent) scm_to_irr_pointer (parent),
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 ("<mesh-scene-node>", (void*) node);
}
-
template <typename TParent>
SCM
-scene_ISceneManager_addSphereSceneNode (SCM scene_manager,
- SCM radius,
- SCM poly_count,
- SCM parent,
- SCM id,
- SCM position,
- SCM rotation,
- SCM scale)
+ISceneManager_addSphereSceneNode (SCM scene_manager,
+ SCM radius,
+ SCM poly_count,
+ SCM parent,
+ SCM id,
+ SCM position,
+ SCM rotation,
+ SCM scale)
{
- scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_pointer (scene_manager);
+ scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_irr_pointer (scene_manager);
scene::IMeshSceneNode* node =
smgr->addSphereSceneNode (scm_to_double (radius),
scm_to_int32 (poly_count),
- (TParent) scm_to_pointer (parent),
+ (TParent) scm_to_irr_pointer (parent),
scm_to_int32 (id),
scm_to_vector3df (position),
scm_to_vector3df (rotation),
scm_to_vector3df (scale));
- return scm_from_pointer ((void*) node, NULL);
+ return scm_from_irr_pointer ("<mesh-scene-node>", (void*) node);
}
-
SCM
-scene_ISceneManager_createFlyCircleAnimator (SCM scene_manager,
- SCM center,
- SCM radius,
- SCM speed,
- SCM direction,
- SCM start_position,
- SCM radius_ellipsoid)
+ISceneManager_createFlyCircleAnimator (SCM scene_manager,
+ SCM center,
+ SCM radius,
+ SCM speed,
+ SCM direction,
+ SCM start_position,
+ SCM radius_ellipsoid)
{
- scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_pointer (scene_manager);
+ scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_irr_pointer (scene_manager);
scene::ISceneNodeAnimator* anim =
smgr->createFlyCircleAnimator (scm_to_vector3df (center),
scm_to_double (radius),
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 ("<scene-node-animator>", (void*) anim);
}
-
SCM
-scene_ISceneManager_createFlyStraightAnimator (SCM scene_manager,
- SCM start_point,
- SCM end_point,
- SCM time_for_way,
- SCM loop,
- SCM pingpong)
+ISceneManager_createFlyStraightAnimator (SCM scene_manager,
+ SCM start_point,
+ SCM end_point,
+ SCM time_for_way,
+ SCM loop,
+ SCM pingpong)
{
- scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_pointer (scene_manager);
+ scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_irr_pointer (scene_manager);
scene::ISceneNodeAnimator* anim =
smgr->createFlyStraightAnimator (scm_to_vector3df (start_point),
scm_to_vector3df (end_point),
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 ("<scene-node-animator>", (void*) anim);
}
-
SCM
-scene_ISceneManager_createRotationAnimator (SCM scene_manager,
- SCM rotation_speed)
+ISceneManager_createRotationAnimator (SCM scene_manager,
+ SCM rotation_speed)
{
- scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_pointer (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 ("<scene-node-animator>", (void*) anim);
}
-
SCM
-scene_ISceneManager_drawAll (SCM scene_manager)
+ISceneManager_drawAll (SCM scene_manager)
{
- ((scene::ISceneManager*) scm_to_pointer (scene_manager))->drawAll ();
+ ((scene::ISceneManager*) scm_to_irr_pointer (scene_manager))->drawAll ();
return SCM_UNSPECIFIED;
}
-
SCM
-scene_ISceneManager_getMesh (SCM scene_manager,
- SCM filename)
+ISceneManager_getMesh (SCM scene_manager,
+ SCM filename)
{
- scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_pointer (scene_manager);
- scene::IAnimatedMesh* mesh = smgr->getMesh(scm_to_utf8_stringn (filename, NULL));
- return scm_from_pointer ((void*) mesh, NULL);
+ char* cfilename = scm_to_utf8_string (filename);
+ scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_irr_pointer (scene_manager);
+ scene::IAnimatedMesh* mesh = smgr->getMesh(cfilename);
+ free (cfilename);
+ return scm_from_irr_pointer ("<animated-mesh>", (void*) mesh);
}
-
SCM
-scene_ISceneManager_getRootSceneNode (SCM scene_manager)
+ISceneManager_getRootSceneNode (SCM scene_manager)
{
- scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_pointer (scene_manager);
- return scm_from_pointer ((void*) smgr->getRootSceneNode (), NULL);
+ scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_irr_pointer (scene_manager);
+ return scm_from_irr_pointer ("<scene-node>", (void*) smgr->getRootSceneNode ());
}
-
-extern "C" {
-
- void
- init_scene_manager (void)
- {
- DEFINE_GSUBR ("scene_ISceneManager_addAnimatedMeshSceneNode_ISceneNode", 8, 0, 0,
- scene_ISceneManager_addAnimatedMeshSceneNode<scene::ISceneNode*>);
- DEFINE_GSUBR ("scene_ISceneManager_addCameraSceneNode_ISceneNode", 6, 0, 0,
- scene_ISceneManager_addCameraSceneNode<scene::ISceneNode*>);
- DEFINE_GSUBR ("scene_ISceneManager_addCameraSceneNodeFPS_ISceneNode", 1, 0, 1,
- scene_ISceneManager_addCameraSceneNodeFPS<scene::ISceneNode*>);
- DEFINE_GSUBR ("scene_ISceneManager_addCubeSceneNode_ISceneNode", 7, 0, 0,
- scene_ISceneManager_addCubeSceneNode<scene::ISceneNode*>);
- DEFINE_GSUBR ("scene_ISceneManager_addCustomSceneNode_ISceneNode", 10, 0, 0,
- scene_ISceneManager_addCustomSceneNode<scene::ISceneNode*>);
- DEFINE_GSUBR ("scene_ISceneManager_addOctreeSceneNode_ISceneNode_IAnimatedMesh", 6, 0, 0,
- (scene_ISceneManager_addOctreeSceneNode<scene::ISceneNode*, scene::IAnimatedMesh*>));
- DEFINE_GSUBR ("scene_ISceneManager_addOctreeSceneNode_ISceneNode_IMesh", 6, 0, 0,
- (scene_ISceneManager_addOctreeSceneNode<scene::ISceneNode*, scene::IMesh*>));
- DEFINE_GSUBR ("scene_ISceneManager_addSphereSceneNode_ISceneNode", 8, 0, 0,
- scene_ISceneManager_addSphereSceneNode<scene::ISceneNode*>);
- DEFINE_GSUBR ("scene_ISceneManager_createFlyCircleAnimator", 7, 0, 0,
- scene_ISceneManager_createFlyCircleAnimator);
- DEFINE_GSUBR ("scene_ISceneManager_createFlyStraightAnimator", 6, 0, 0,
- scene_ISceneManager_createFlyStraightAnimator);
- DEFINE_GSUBR ("scene_ISceneManager_createRotationAnimator", 2, 0, 0,
- scene_ISceneManager_createRotationAnimator);
- DEFINE_GSUBR ("scene_ISceneManager_drawAll", 1, 0, 0, scene_ISceneManager_drawAll);
- DEFINE_GSUBR ("scene_ISceneManager_getMesh", 2, 0, 0, scene_ISceneManager_getMesh);
- DEFINE_GSUBR ("scene_ISceneManager_getRootSceneNode", 1, 0, 0,
- scene_ISceneManager_getRootSceneNode);
- }
-
+void
+init_scene_manager (void)
+{
+ DEFINE_GSUBR ("ISceneManager_addAnimatedMeshSceneNode_ISceneNode", 8, 0, 0,
+ ISceneManager_addAnimatedMeshSceneNode<scene::ISceneNode*>);
+ DEFINE_GSUBR ("ISceneManager_addCameraSceneNode_ISceneNode", 6, 0, 0,
+ ISceneManager_addCameraSceneNode<scene::ISceneNode*>);
+ DEFINE_GSUBR ("ISceneManager_addCameraSceneNodeFPS_ISceneNode", 1, 0, 1,
+ ISceneManager_addCameraSceneNodeFPS<scene::ISceneNode*>);
+ DEFINE_GSUBR ("ISceneManager_addCubeSceneNode_ISceneNode", 7, 0, 0,
+ ISceneManager_addCubeSceneNode<scene::ISceneNode*>);
+ DEFINE_GSUBR ("ISceneManager_addCustomSceneNode_ISceneNode", 10, 0, 0,
+ ISceneManager_addCustomSceneNode<scene::ISceneNode*>);
+ DEFINE_GSUBR ("ISceneManager_addOctreeSceneNode_ISceneNode_IAnimatedMesh", 6, 0, 0,
+ (ISceneManager_addOctreeSceneNode<scene::ISceneNode*, scene::IAnimatedMesh*>));
+ DEFINE_GSUBR ("ISceneManager_addOctreeSceneNode_ISceneNode_IMesh", 6, 0, 0,
+ (ISceneManager_addOctreeSceneNode<scene::ISceneNode*, scene::IMesh*>));
+ DEFINE_GSUBR ("ISceneManager_addSphereSceneNode_ISceneNode", 8, 0, 0,
+ ISceneManager_addSphereSceneNode<scene::ISceneNode*>);
+ DEFINE_GSUBR ("ISceneManager_createFlyCircleAnimator", 7, 0, 0,
+ ISceneManager_createFlyCircleAnimator);
+ DEFINE_GSUBR ("ISceneManager_createFlyStraightAnimator", 6, 0, 0,
+ ISceneManager_createFlyStraightAnimator);
+ DEFINE_GSUBR ("ISceneManager_createRotationAnimator", 2, 0, 0,
+ ISceneManager_createRotationAnimator);
+ DEFINE_GSUBR ("ISceneManager_drawAll", 1, 0, 0, ISceneManager_drawAll);
+ DEFINE_GSUBR ("ISceneManager_getMesh", 2, 0, 0, ISceneManager_getMesh);
+ DEFINE_GSUBR ("ISceneManager_getRootSceneNode", 1, 0, 0, ISceneManager_getRootSceneNode);
}