/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield * * This application is open source and may be redistributed and/or modified * freely and without restriction, both in commericial and non commericial * applications, as long as this copyright notice is maintained. * * This application 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. */ #include #include #include #include #include using namespace osg; StateAttribute::StateAttribute() :Object(true) { } void StateAttribute::addParent(osg::StateSet* object) { OSG_DEBUG_FP<<"Adding parent"< lock(getRefMutex()); _parents.push_back(object); } void StateAttribute::removeParent(osg::StateSet* object) { OpenThreads::ScopedPointerLock lock(getRefMutex()); ParentList::iterator pitr = std::find(_parents.begin(),_parents.end(),object); if (pitr!=_parents.end()) _parents.erase(pitr); } void StateAttribute::setUpdateCallback(StateAttributeCallback* uc) { OSG_INFO<<"StateAttribute::Setting Update callbacks"<setNumChildrenRequiringUpdateTraversal((*itr)->getNumChildrenRequiringUpdateTraversal()+delta); } } } void StateAttribute::setEventCallback(StateAttributeCallback* ec) { OSG_INFO<<"StateAttribute::Setting Event callbacks"<setNumChildrenRequiringEventTraversal((*itr)->getNumChildrenRequiringEventTraversal()+delta); } } }