|
From: Markus R. <rol...@us...> - 2006-02-19 11:10:21
|
Update of /cvsroot/simspark/simspark/spark/kerosin/materialserver In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2008 Modified Files: materialserver.cpp materialserver.h Log Message: - added method RegisterMaterial() that checks for and removesm a previous material instance with the same name before registering the new material. Index: materialserver.h =================================================================== RCS file: /cvsroot/simspark/simspark/spark/kerosin/materialserver/materialserver.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** materialserver.h 5 Dec 2005 21:38:22 -0000 1.1 --- materialserver.h 19 Feb 2006 11:10:11 -0000 1.2 *************** *** 43,46 **** --- 43,49 ---- virtual ~MaterialServer(); + //! registers a new material + void RegisterMaterial(boost::shared_ptr<Material> material); + //! returns a cached material boost::shared_ptr<Material> GetMaterial(const std::string &name); Index: materialserver.cpp =================================================================== RCS file: /cvsroot/simspark/simspark/spark/kerosin/materialserver/materialserver.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** materialserver.cpp 5 Dec 2005 21:38:22 -0000 1.1 --- materialserver.cpp 19 Feb 2006 11:10:11 -0000 1.2 *************** *** 38,41 **** --- 38,66 ---- } + void MaterialServer::RegisterMaterial(shared_ptr<Material> material) + { + if (material.get() == 0) + { + return; + } + + // remove any previous material with the same name + shared_ptr<Material> previous = + shared_dynamic_cast<Material>(GetChild(material->GetName())); + + if (previous.get() != 0) + { + GetLog()->Debug() << "(MaterialServer) removing material " + << material->GetName() << "\n"; + RemoveChildReference(previous); + } + + // register new material + AddChildReference(material); + + GetLog()->Debug() << "(MaterialServer) registered material " + << material->GetName() << "\n"; + } + shared_ptr<Material> MaterialServer::GetMaterial(const std::string& name) { |