bool IdentityToGroupTraverser::isTransformToReplace( const NodeSharedPtr & nh ) { bool ok = false; if( std::dynamic_pointer_cast<Transform>(nh) ) { TransformSharedPtr t = std::static_pointer_cast<Transform>(nh); ok = ( getIgnoreNames() || t->getName().empty() ) && optimizationAllowed( t ) && !t->isJoint() && isIdentity( t->getTrafo().getMatrix() ); } return( ok ); }
GroupSharedPtr IdentityToGroupTraverser::createGroupFromTransform( const TransformSharedPtr & th ) { GroupSharedPtr gh = Group::create(); gh->setName( th->getName() ); gh->setAnnotation( th->getAnnotation() ); gh->setUserData( th->getUserData() ); gh->setHints( th->getHints() ); gh->setTraversalMask( th->getTraversalMask() ); for ( Group::ClipPlaneIterator gcpci = th->beginClipPlanes() ; gcpci != th->endClipPlanes() ; ++gcpci ) { gh->addClipPlane( *gcpci ); } for ( Group::ChildrenIterator gcci = th->beginChildren() ; gcci != th->endChildren() ; ++gcci ) { gh->addChild( *gcci ); } return( gh ); }