}
else
{
- scm_error (scm_arg_type_key, NULL, "Cannot add animator flag to object: ~S",
+ scm_error (scm_arg_type_key, NULL, "Cannot add animator to object: ~S",
scm_list_1 (wrapped_scene_node), scm_list_1 (wrapped_scene_node));
}
-
return SCM_UNSPECIFIED;
}
SCM
irr_scene_getPosition (SCM wrapped_scene_node)
{
- irr::scene::ISceneNode* node = unwrap_scene_node (wrapped_scene_node, false);
- return scm_from_vector3df (node->getPosition ());
+#define GET_POSITION(NODE) scm_from_vector3df (NODE->getPosition ());
+
+ if (scene_node_p (wrapped_scene_node))
+ {
+ return GET_POSITION (unwrap_scene_node (wrapped_scene_node));
+ }
+ else if (mesh_scene_node_p (wrapped_scene_node))
+ {
+ return GET_POSITION (unwrap_mesh_scene_node (wrapped_scene_node));
+ }
+ else
+ {
+ scm_error (scm_arg_type_key, NULL, "Cannot get position from object: ~S",
+ scm_list_1 (wrapped_scene_node), scm_list_1 (wrapped_scene_node));
+ }
}
SCM