Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/SuperOrxoBros_HS18/SuperOrxoBros_HS18/src/libraries/core/GlowMaterialListener.h @ 12175

Last change on this file since 12175 was 12175, checked in by siramesh, 5 years ago

Super Orxo Bros (Sidharth Ramesh, Nisa Balta, Jeff Ren)

File size: 2.1 KB
Line 
1#ifndef _GlowMaterialListener_H__
2#define _GlowMaterialListener_H__
3
4#include <Ogre.h>
5#include <OgreMaterialManager.h>
6
7namespace orxonox
8{
9    class GlowMaterialListener : public Ogre::MaterialManager::Listener
10    {
11        public:
12            GlowMaterialListener()
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__ */
Note: See TracBrowser for help on using the repository browser.