/* -*-c++-*- * Copyright (C) 2008 Cedric Pinson * * This library is open source and may be redistributed and/or modified under * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or * (at your option) any later version. The full license is in LICENSE file * included with this distribution, and on the openscenegraph.org website. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * OpenSceneGraph Public License for more details. */ #ifndef COMPUTE_BIND_MATRIX_VISITOR_H #define COMPUTE_BIND_MATRIX_VISITOR_H 1 #include #include namespace osgAnimation { class ComputeBindMatrixVisitor : public osg::NodeVisitor { public: ComputeBindMatrixVisitor(): osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN) {} void apply(osg::Node& node) { return; } void apply(osg::Transform& node) { osgAnimation::Bone* bone = dynamic_cast(&node); if (!bone) return; if (bone->needToComputeBindMatrix()) bone->computeBindMatrix(); traverse(node); } }; } #endif