Orxonox  0.0.5 Codename: Arcturus
GlowMaterialListener.h
Go to the documentation of this file.
1 #ifndef _GlowMaterialListener_H__
2 #define _GlowMaterialListener_H__
3 
4 #include <Ogre.h>
5 #include <OgreMaterialManager.h>
6 
7 namespace orxonox
8 {
9  class GlowMaterialListener : public Ogre::MaterialManager::Listener
10  {
11  public:
13  {
14  mBlackMat = Ogre::MaterialManager::getSingleton().create("mGlowBlack", "Internal");
15  mBlackMat->getTechnique(0)->getPass(0)->setDiffuse(0,0,0,0);
16  mBlackMat->getTechnique(0)->getPass(0)->setSpecular(0,0,0,0);
17  mBlackMat->getTechnique(0)->getPass(0)->setAmbient(0,0,0);
18  mBlackMat->getTechnique(0)->getPass(0)->setSelfIllumination(0,0,0);
19 
20  mTransparentMat = Ogre::MaterialManager::getSingleton().create("mGlowTransparent", "Internal");
21  mTransparentMat->getTechnique(0)->getPass(0)->setDiffuse(0,0,0,0);
22  mTransparentMat->getTechnique(0)->getPass(0)->setSpecular(0,0,0,0);
23  mTransparentMat->getTechnique(0)->getPass(0)->setAmbient(0,0,0);
24  mTransparentMat->getTechnique(0)->getPass(0)->setSelfIllumination(0,0,0);
25  mTransparentMat->getTechnique(0)->getPass(0)->setSceneBlending(Ogre::SBT_ADD);
26  mTransparentMat->getTechnique(0)->getPass(0)->setDepthWriteEnabled(false);
27  }
28 
29  Ogre::Technique* handleSchemeNotFound(unsigned short, const Ogre::String& schemeName, Ogre::Material* mat, unsigned short, const Ogre::Renderable*)
30  {
31  if (schemeName == "glow")
32  {
33  // try to figure out if the original material is transparent. if yes, use a black transparent material, otherwise a black opaque one.
34  if (mat->isTransparent())
35  return mTransparentMat->getTechnique(0);
36  else
37  return mBlackMat->getTechnique(0);
38  }
39  return NULL;
40  }
41 
42  private:
43  Ogre::MaterialPtr mBlackMat;
44  Ogre::MaterialPtr mTransparentMat;
45  };
46 }
47 
48 #endif /* _GlowMaterialListener_H__ */
GlowMaterialListener()
Definition: GlowMaterialListener.h:12
Ogre::MaterialPtr mTransparentMat
Definition: GlowMaterialListener.h:44
Die Wagnis Klasse hat die folgenden Aufgaben:
Definition: ApplicationPaths.cc:66
Definition: GlowMaterialListener.h:9
Ogre::MaterialPtr mBlackMat
Definition: GlowMaterialListener.h:43
Ogre::Technique * handleSchemeNotFound(unsigned short, const Ogre::String &schemeName, Ogre::Material *mat, unsigned short, const Ogre::Renderable *)
Definition: GlowMaterialListener.h:29