From d730a6bdb58f0fb5be7a82cd43a1f8c8dd22cb5b Mon Sep 17 00:00:00 2001 From: Cedric Pinson Date: Wed, 27 Jan 2010 15:37:45 +0000 Subject: [PATCH] From Cedric Pinson, remove unused file, fix crash for old files --- include/osgAnimation/Assert | 49 ------------------- .../FindParentAnimationManagerVisitor | 42 ---------------- include/osgAnimation/VertexInfluence | 4 +- src/osgAnimation/CMakeLists.txt | 3 -- .../FindParentAnimationManagerVisitor.cpp | 34 ------------- src/osgAnimation/RigTransformSoftware.cpp | 7 ++- 6 files changed, 8 insertions(+), 131 deletions(-) delete mode 100644 include/osgAnimation/Assert delete mode 100644 include/osgAnimation/FindParentAnimationManagerVisitor delete mode 100644 src/osgAnimation/FindParentAnimationManagerVisitor.cpp diff --git a/include/osgAnimation/Assert b/include/osgAnimation/Assert deleted file mode 100644 index 21e3976c3..000000000 --- a/include/osgAnimation/Assert +++ /dev/null @@ -1,49 +0,0 @@ -/* -*-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 OSGANIMATION_ASSERT_H -#define OSGANIMATION_ASSERT_H - -#include -#include -#include - -namespace osgAnimation -{ - - struct ThrowAssert : public std::exception - { - virtual const char* what() const throw () { return mMsg.c_str();} - - std::string mMsg; - ThrowAssert(const std::string& msg, const char* file, int line ) - { - std::stringstream ss; - ss << "Assert (" << msg << ") in file " << file << " at line " << line; - mMsg = ss.str(); - } - - ThrowAssert() {} - virtual ~ThrowAssert() throw () {} - }; -} - -#ifdef OSGANIMATION_ASSERT_THROW -//#define OSGANIMATION_ASSERT(a) if (!(a)) throw osgAnimation::ThrowAssert(std::string(#a),__FILE__,__LINE__); - -#else -//#define OSGANIMATION_ASSERT(a) {if (!(a)) *((int*)0) = 0;} -#endif - -#endif diff --git a/include/osgAnimation/FindParentAnimationManagerVisitor b/include/osgAnimation/FindParentAnimationManagerVisitor deleted file mode 100644 index d15a32128..000000000 --- a/include/osgAnimation/FindParentAnimationManagerVisitor +++ /dev/null @@ -1,42 +0,0 @@ -/* -*-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 FIND_PARENT_ANIMATIONMANAGER_VISITOR_H -#define FIND_PARENT_ANIMATIONMANAGER_VISITOR_H 1 - -#include -#include - -namespace osgAnimation -{ - class AnimationManagerBase; - - /** - * Find the nearest AnimationManager traversing parent to parent - */ - class OSGANIMATION_EXPORT FindParentAnimationManagerVisitor : public osg::NodeVisitor - { - public: - FindParentAnimationManagerVisitor(); - void apply(osg::Node& node); - osgAnimation::AnimationManagerBase* getAnimationManager(); - - protected: - osg::ref_ptr _manager; - - }; - -} - -#endif diff --git a/include/osgAnimation/VertexInfluence b/include/osgAnimation/VertexInfluence index a12f755d2..813cddb44 100644 --- a/include/osgAnimation/VertexInfluence +++ b/include/osgAnimation/VertexInfluence @@ -12,8 +12,8 @@ * OpenSceneGraph Public License for more details. */ -#ifndef OSGANIMATION_VERTEX_INFLUENCE_H -#define OSGANIMATION_VERTEX_INFLUENCE_H 1 +#ifndef OSGANIMATION_VERTEX_INFLUENCE +#define OSGANIMATION_VERTEX_INFLUENCE 1 #include #include diff --git a/src/osgAnimation/CMakeLists.txt b/src/osgAnimation/CMakeLists.txt index d8849c062..d6315bd70 100644 --- a/src/osgAnimation/CMakeLists.txt +++ b/src/osgAnimation/CMakeLists.txt @@ -20,7 +20,6 @@ SET(LIB_PUBLIC_HEADERS ${HEADER_PATH}/Animation ${HEADER_PATH}/AnimationManagerBase ${HEADER_PATH}/AnimationUpdateCallback - ${HEADER_PATH}/Assert ${HEADER_PATH}/BasicAnimationManager ${HEADER_PATH}/Bone ${HEADER_PATH}/BoneMapVisitor @@ -28,7 +27,6 @@ SET(LIB_PUBLIC_HEADERS ${HEADER_PATH}/CubicBezier ${HEADER_PATH}/EaseMotion ${HEADER_PATH}/Export - ${HEADER_PATH}/FindParentAnimationManagerVisitor ${HEADER_PATH}/FrameAction ${HEADER_PATH}/Interpolator ${HEADER_PATH}/Keyframe @@ -76,7 +74,6 @@ ADD_LIBRARY(${LIB_NAME} Bone.cpp BoneMapVisitor.cpp Channel.cpp - FindParentAnimationManagerVisitor.cpp LinkVisitor.cpp MorphGeometry.cpp RigGeometry.cpp diff --git a/src/osgAnimation/FindParentAnimationManagerVisitor.cpp b/src/osgAnimation/FindParentAnimationManagerVisitor.cpp deleted file mode 100644 index d8c6f8f84..000000000 --- a/src/osgAnimation/FindParentAnimationManagerVisitor.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/* -*-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. -*/ - -#include -#include - -osgAnimation::FindParentAnimationManagerVisitor::FindParentAnimationManagerVisitor() : osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_PARENTS) {} -void osgAnimation::FindParentAnimationManagerVisitor::apply(osg::Node& node) -{ - if (_manager.valid()) - return; - osg::NodeCallback* callback = node.getUpdateCallback(); - while (callback) - { - _manager = dynamic_cast(callback); - if (_manager.valid()) - return; - callback = callback->getNestedCallback(); - } - traverse(node); -} - -osgAnimation::AnimationManagerBase* osgAnimation::FindParentAnimationManagerVisitor::getAnimationManager() { return _manager.get(); } diff --git a/src/osgAnimation/RigTransformSoftware.cpp b/src/osgAnimation/RigTransformSoftware.cpp index 78af3d396..ab5566fd6 100644 --- a/src/osgAnimation/RigTransformSoftware.cpp +++ b/src/osgAnimation/RigTransformSoftware.cpp @@ -35,7 +35,8 @@ bool RigTransformSoftware::init(RigGeometry& geom) BoneMap bm = mapVisitor.getBoneMap(); initVertexSetFromBones(bm, geom.getVertexInfluenceSet().getUniqVertexSetToBoneSetList()); - geom.copyFrom(*geom.getSourceGeometry()); + if (geom.getSourceGeometry()) + geom.copyFrom(*geom.getSourceGeometry()); geom.setVertexArray(0); geom.setNormalArray(0); @@ -49,6 +50,10 @@ void RigTransformSoftware::operator()(RigGeometry& geom) if (!init(geom)) return; + if (!geom.getSourceGeometry()) { + osg::notify(osg::WARN) << this << " RigTransformSoftware no source geometry found on RigGeometry" << std::endl; + return; + } osg::Geometry& source = *geom.getSourceGeometry(); osg::Geometry& destination = geom;