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)
{
|