X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fscene-manager.cpp;h=af96eebc403b09188d10ce0adbe863a9da2aa638;hb=85623b0c003e4938263a3431b45837050f044593;hp=0d4caebd51a024cea1c5c30c31c6b8a97d5c0621;hpb=69ed7f57e6295034fa64ab2bf6d10da6882860ef;p=guile-irrlicht.git diff --git a/src/scene-manager.cpp b/src/scene-manager.cpp index 0d4caeb..af96eeb 100644 --- a/src/scene-manager.cpp +++ b/src/scene-manager.cpp @@ -38,6 +38,25 @@ #include "vector3d.h" #include "wrapped.h" + SCM + irr_drawAll (SCM wrapped_obj) + { + if (gui_environment_p (wrapped_obj)) + { + unwrap_gui_environment (wrapped_obj)->drawAll (); + } + else if (scene_manager_p (wrapped_obj)) + { + unwrap_scene_manager (wrapped_obj)->drawAll (); + } + else + { + scm_error (scm_arg_type_key, NULL, "Cannot draw all elements from object: ~S", + scm_list_1 (wrapped_obj), scm_list_1 (wrapped_obj)); + } + return SCM_UNSPECIFIED; + } + extern "C" { void @@ -56,7 +75,6 @@ extern "C" { DEFINE_GSUBR ("create-rotation-animator", 2, 0, 0, irr_scene_createRotationAnimator); DEFINE_GSUBR ("get-mesh", 2, 0, 0, irr_scene_getMesh); DEFINE_GSUBR ("get-root-scene-node", 1, 0, 0, irr_scene_getRootSceneNode); - DEFINE_GSUBR ("get-scene-manager", 1, 0, 0, irr_getSceneManager); } DEFINE_WRAPPED_TYPE (irr::scene::ISceneManager*, "scene-manager", @@ -68,7 +86,7 @@ extern "C" { SCM mesh, SCM rest) { - SCM parent = scm_from_bool (0); + SCM parent = SCM_UNDEFINED; SCM id = scm_from_int32 (-1); SCM position = scm_list_3 (scm_from_double (0), scm_from_double (0), @@ -79,7 +97,7 @@ extern "C" { SCM scale = scm_list_3 (scm_from_double (1), scm_from_double (1), scm_from_double (1)); - SCM also_add_if_mesh_pointer_zero = scm_from_bool (0); + SCM also_add_if_mesh_pointer_zero = SCM_BOOL_F; scm_c_bind_keyword_arguments ("add-animated-mesh-scene-node!", rest, (scm_t_keyword_arguments_flags)0, scm_from_utf8_keyword ("parent"), &parent, @@ -93,7 +111,7 @@ extern "C" { irr::scene::ISceneManager* smgr = unwrap_scene_manager (wrapped_scene_manager); irr::scene::IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode (unwrap_animated_mesh (mesh), - scm_is_false (parent) ? 0 : unwrap_scene_node (parent), + parent == SCM_UNDEFINED ? 0 : unwrap_scene_node (parent), scm_to_int32 (id), scm_to_vector3df (position), scm_to_vector3df (rotation), @@ -106,7 +124,7 @@ extern "C" { irr_scene_addCameraSceneNode (SCM wrapped_scene_manager, SCM rest) { - SCM parent = scm_from_bool (0); + SCM parent = SCM_UNDEFINED; SCM position = scm_list_3 (scm_from_double (0), scm_from_double (0), scm_from_double (0)); @@ -114,7 +132,7 @@ extern "C" { scm_from_double (0), scm_from_double (100)); SCM id = scm_from_int32 (-1); - SCM make_active = scm_from_bool (1); + SCM make_active = SCM_BOOL_T; scm_c_bind_keyword_arguments ("add-camera-scene-node!", rest, (scm_t_keyword_arguments_flags)0, scm_from_utf8_keyword ("parent"), &parent, @@ -126,7 +144,7 @@ extern "C" { irr::scene::ISceneManager* scene_manager = unwrap_scene_manager (wrapped_scene_manager); irr::scene::ICameraSceneNode* camera = - scene_manager->addCameraSceneNode (scm_is_false (parent) ? 0 : unwrap_scene_node (parent), + scene_manager->addCameraSceneNode (parent == SCM_UNDEFINED ? 0 : unwrap_scene_node (parent), scm_to_vector3df (position), scm_to_vector3df (lookat), scm_to_int32 (id), @@ -138,16 +156,16 @@ extern "C" { irr_scene_addCameraSceneNodeFPS (SCM wrapped_scene_manager, SCM rest) { - SCM parent = scm_from_bool (0); + SCM parent = SCM_UNDEFINED; SCM rotate_speed = scm_from_double (100); SCM move_speed = scm_from_double (0.5); SCM id = scm_from_int32 (-1); - SCM key_map_array = scm_from_bool (0); + SCM key_map_array = SCM_UNDEFINED; SCM key_map_size = scm_from_int32 (0); - SCM no_vertical_movement = scm_from_bool (0); + SCM no_vertical_movement = SCM_BOOL_F; SCM jump_speed = scm_from_double (0); - SCM invert_mouse = scm_from_bool (0); - SCM make_active = scm_from_bool (1); + SCM invert_mouse = SCM_BOOL_F; + SCM make_active = SCM_BOOL_T; scm_c_bind_keyword_arguments ("add-camera-scene-node-fps!", rest, (scm_t_keyword_arguments_flags)0, scm_from_utf8_keyword ("parent"), &parent, @@ -164,11 +182,11 @@ extern "C" { irr::scene::ISceneManager* scene_manager = unwrap_scene_manager (wrapped_scene_manager); irr::scene::ICameraSceneNode* camera = - scene_manager->addCameraSceneNodeFPS (scm_is_false (parent) ? 0 : unwrap_scene_node (parent), + scene_manager->addCameraSceneNodeFPS (parent == SCM_UNDEFINED ? 0 : unwrap_scene_node (parent), scm_to_double (rotate_speed), scm_to_double (move_speed), scm_to_int32 (id), - scm_is_false (key_map_array) ? 0 : unwrap_keymap (key_map_array), + key_map_array == SCM_UNDEFINED ? 0 : unwrap_keymap (key_map_array), scm_to_int32 (key_map_size), scm_to_bool (no_vertical_movement), scm_to_double (jump_speed), @@ -182,7 +200,7 @@ extern "C" { SCM rest) { SCM size = scm_from_double (10); - SCM parent = scm_from_bool (0); + SCM parent = SCM_UNDEFINED; SCM id = scm_from_int32 (-1); SCM position = scm_list_3 (scm_from_double (0), scm_from_double (0), @@ -206,7 +224,7 @@ extern "C" { irr::scene::ISceneManager* smgr = unwrap_scene_manager (wrapped_scene_manager); irr::scene::IMeshSceneNode* node = smgr->addCubeSceneNode (scm_to_double (size), - scm_is_false (parent) ? 0 : unwrap_scene_node (parent), + parent == SCM_UNDEFINED ? 0 : unwrap_scene_node (parent), scm_to_int32 (id), scm_to_vector3df (position), scm_to_vector3df (rotation), @@ -321,10 +339,10 @@ extern "C" { SCM wrapped_mesh, SCM rest) { - SCM parent = scm_from_bool (0); + SCM parent = SCM_UNDEFINED; SCM id = scm_from_int32 (-1); SCM minimal_polys_per_node = scm_from_int32 (256); - SCM also_add_if_mesh_pointer_zero = scm_from_bool (0); + SCM also_add_if_mesh_pointer_zero = SCM_BOOL_F; scm_c_bind_keyword_arguments ("add-octree-scene-node!", rest, (scm_t_keyword_arguments_flags)0, scm_from_utf8_keyword ("parent"), &parent, @@ -338,7 +356,7 @@ extern "C" { if (animated_mesh_p (wrapped_mesh)) { node = smgr->addOctreeSceneNode (unwrap_animated_mesh (wrapped_mesh), - scm_is_false (parent) ? 0 : unwrap_scene_node (parent), + parent == SCM_UNDEFINED ? 0 : unwrap_scene_node (parent), scm_to_int32 (id), scm_to_int32 (minimal_polys_per_node), scm_to_bool (also_add_if_mesh_pointer_zero)); @@ -346,7 +364,7 @@ extern "C" { else { node = smgr->addOctreeSceneNode (unwrap_mesh (wrapped_mesh), - scm_is_false (parent) ? 0 : unwrap_scene_node (parent), + parent == SCM_UNDEFINED ? 0 : unwrap_scene_node (parent), scm_to_int32 (id), scm_to_int32 (minimal_polys_per_node), scm_to_bool (also_add_if_mesh_pointer_zero)); @@ -360,7 +378,7 @@ extern "C" { { SCM radius = scm_from_double (5.0); SCM poly_count = scm_from_int32 (16); - SCM parent = scm_from_bool (0); + SCM parent = SCM_UNDEFINED; SCM id = scm_from_int32 (-1); SCM position = scm_list_3 (scm_from_double (0), scm_from_double (0), @@ -386,7 +404,7 @@ extern "C" { irr::scene::IMeshSceneNode* node = smgr->addSphereSceneNode (scm_to_double (radius), scm_to_int32 (poly_count), - scm_is_false (parent) ? 0 : unwrap_scene_node (parent), + parent == SCM_UNDEFINED ? 0 : unwrap_scene_node (parent), scm_to_int32 (id), scm_to_vector3df (position), scm_to_vector3df (rotation), @@ -436,8 +454,8 @@ extern "C" { SCM time_for_way, SCM rest) { - SCM loop = scm_from_bool (0); - SCM pingpong = scm_from_bool (0); + SCM loop = SCM_BOOL_F; + SCM pingpong = SCM_BOOL_F; scm_c_bind_keyword_arguments ("create-fly-straight-animator", rest, (scm_t_keyword_arguments_flags)0, scm_from_utf8_keyword ("loop"), &loop, @@ -480,20 +498,4 @@ extern "C" { return wrap_scene_node (smgr->getRootSceneNode ()); } - SCM - irr_getSceneManager (SCM wrapped_obj) - { - irr::scene::ISceneManager* scene_manager; - if (device_p (wrapped_obj)) - { - scene_manager = unwrap_device (wrapped_obj)->getSceneManager (); - } - else - { - scm_error (scm_arg_type_key, NULL, "Cannot get scene manager from object: ~S", - scm_list_1 (wrapped_obj), scm_list_1 (wrapped_obj)); - } - return wrap_scene_manager (scene_manager); - } - }