Changeset 514


Ignore:
Timestamp:
08/24/10 14:51:47 (21 months ago)
Author:
ddangelo
Message:

getAbsoluteTransform function now accepts a second parameter which is the node to stop the traversal. This is useful in case you do not want to traverse the scenegraph up to its root node. Also added a function to query the maximal texture size.

Location:
trunk/avango-osg
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/avango-osg/include/avango/osg/Node.h

    r428 r514  
    9090       * to call evaluate on all nodes on the traversal to the root node. 
    9191       */ 
    92       ::osg::Matrix getAbsoluteTransform(av::FieldContainer* caller = 0) const; 
     92      ::osg::Matrix getAbsoluteTransform(av::FieldContainer* caller = 0, av::osg::Node * haltTraversalAtNode = 0) const; 
    9393 
    9494    protected: 
  • trunk/avango-osg/python/avango/osg/_osg.cpp

    r453 r514  
    113113 } 
    114114 
     115namespace 
     116{ 
     117  GLint GetMaximumTextureSize() 
     118  { 
     119    GLint maxTextureSize; 
     120    glGetIntegerv( GL_MAX_TEXTURE_SIZE, &maxTextureSize); 
     121    return maxTextureSize; 
     122  } 
     123} 
     124 
     125 
    115126BOOST_PYTHON_MODULE(_osg) 
    116127{ 
     
    132143 
    133144  def("line_intersect", av::osg::lineIntersect); 
     145 
     146  def("get_maximum_texture_size",GetMaximumTextureSize); 
     147 
    134148 
    135149  register_field<av::osg::SFDrawable>("SFDrawable"); 
  • trunk/avango-osg/src/avango/osg/Node.cpp

    r414 r514  
    7878 
    7979::osg::Matrix 
    80 av::osg::Node::getAbsoluteTransform(av::FieldContainer* caller) const 
     80av::osg::Node::getAbsoluteTransform(av::FieldContainer* caller, av::osg::Node * haltTraversalAtNode) const 
    8181{ 
    8282  ::osg::Node *osg_node = getOsgNode(); 
     
    105105 
    106106  ::osg::Matrix abs_mat; 
    107   ::osg::MatrixList abs_mat_list = getOsgNode()->getWorldMatrices(osg_node); 
     107  ::osg::MatrixList abs_mat_list; 
     108  if(haltTraversalAtNode == 0) 
     109    abs_mat_list = getOsgNode()->getWorldMatrices(osg_node); 
     110  else 
     111    abs_mat_list = getOsgNode()->getWorldMatrices(haltTraversalAtNode->getOsgNode()); 
     112 
    108113  if (abs_mat_list.size() > 0u) 
    109114    abs_mat = abs_mat_list[0]; 
Note: See TracChangeset for help on using the changeset viewer.