#include "gsubr.h"
#include "scene-manager.h"
#include "vector3d.h"
+#include "wrapped.h"
using namespace irr;
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 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_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 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>
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 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 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
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
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
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
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;
}
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
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 ());
}
void