+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)
+{
+ scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_pointer (scene_manager);
+ scene::IAnimatedMeshSceneNode* node =
+ smgr->addAnimatedMeshSceneNode ((scene::IAnimatedMesh*) scm_to_pointer (mesh),
+ (TParent) scm_to_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);
+}
+
+
+template <typename TParent>
+SCM
+scene_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::ICameraSceneNode* camera =
+ smgr->addCameraSceneNode ((TParent) scm_to_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);
+}
+
+
+template <typename TParent>
+SCM
+scene_ISceneManager_addCameraSceneNodeFPS (SCM scene_manager,
+ SCM rest)
+{
+ SCM parent;
+ SCM rotate_speed;
+ SCM move_speed;
+ SCM id;
+ SCM key_map_array;
+ SCM key_map_size;
+ SCM no_vertical_movement;
+ SCM jump_speed;
+ SCM invert_mouse;
+ SCM make_active;
+
+ scm_c_bind_keyword_arguments ("scene_ISceneManager_addCameraSceneNodeFPS",
+ rest, (scm_t_keyword_arguments_flags)0,
+ scm_from_utf8_keyword ("parent"), &parent,
+ scm_from_utf8_keyword ("rotate-speed"), &rotate_speed,
+ scm_from_utf8_keyword ("move-speed"), &move_speed,
+ scm_from_utf8_keyword ("id"), &id,
+ scm_from_utf8_keyword ("key-map-array"), &key_map_array,
+ scm_from_utf8_keyword ("key-map-size"), &key_map_size,
+ scm_from_utf8_keyword ("no-vertical-movement"), &no_vertical_movement,
+ scm_from_utf8_keyword ("jump-speed"), &jump_speed,
+ scm_from_utf8_keyword ("invert-mouse"), &invert_mouse,
+ scm_from_utf8_keyword ("make-active"), &make_active,
+ SCM_UNDEFINED);
+
+ scene::ISceneManager* smgr = (scene::ISceneManager*) scm_to_pointer (scene_manager);
+ scene::ICameraSceneNode* camera =
+ smgr->addCameraSceneNodeFPS ((TParent) scm_to_pointer (parent),
+ scm_to_double (rotate_speed),
+ scm_to_double (move_speed),
+ scm_to_int32 (id),
+ (SKeyMap*) scm_to_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);
+}
+
+
+template <typename TParent>
+SCM
+scene_ISceneManager_addCubeSceneNode (SCM scene_manager,
+ SCM size,