OMKEntityMaterialAction.h

Go to the documentation of this file.
00001 #ifndef __ENTITYMATERIALACTION_H__
00002 #define __ENTITYMATERIALACTION_H__
00003 
00004 #include "OMKMaterial.h" 
00005 #include "OMKAddOn.h" 
00006 namespace OMK
00007 {
00008 namespace Vis
00009 {
00010 
00011 //=========================================================================== 
00013 class OMKADDON_API IMaterialPassAction : public IMaterialAction
00014 {
00015 public:
00017   IMaterialPassAction() : IMaterialAction() {}
00019   virtual ~IMaterialPassAction() {}
00020 protected:
00022   virtual void subEntityAction( SubEntityMaterial* subEntity ) const ;
00024   virtual void passAction( SubEntityMaterial* subEntity, Ogre::Pass* passDest, Ogre::Pass* passSrc ) const = 0 ;
00025 } ;
00026 
00027 
00028 //=========================================================================== 
00030 class OMKADDON_API MaterialSetMaterialName : public IMaterialAction
00031 {
00032 public:
00034   MaterialSetMaterialName( const Ogre::String& materialName ) : IMaterialAction(), _materialName( materialName ) {}
00036   virtual ~MaterialSetMaterialName() {}
00037 protected:
00040   Ogre::String _materialName ;
00041 private:
00043   virtual void subEntityAction( SubEntityMaterial* subEntity ) const ;
00044 } ;
00045 
00046 //=========================================================================== 
00050 class OMKADDON_API MaterialSetSceneBlending : public IMaterialPassAction
00051 {
00052 public:
00054   MaterialSetSceneBlending( Ogre::SceneBlendType blendType ) : IMaterialPassAction(), _blendType( blendType ) {}
00056   virtual ~MaterialSetSceneBlending() {}
00057 protected:
00060   Ogre::SceneBlendType _blendType ;
00061 private:
00063   virtual void passAction( SubEntityMaterial* subEntity, Ogre::Pass* passDest, Ogre::Pass* passSrc ) const ;
00064 } ;
00065 
00066 //=========================================================================== 
00073 class OMKADDON_API MaterialSetTransparency : public IMaterialPassAction
00074 {
00075 public:
00077   MaterialSetTransparency( Ogre::Real transparency ) ;
00079   virtual ~MaterialSetTransparency() {}
00080 protected:
00083   Ogre::Real _transparency ;
00084 private:
00086   virtual bool entityAction( EntityMaterial* entity ) const ;
00088   virtual void passAction( SubEntityMaterial* subEntity, Ogre::Pass* passDest, Ogre::Pass* passSrc ) const ;
00089 } ;
00090 
00091 //=========================================================================== 
00095 class OMKADDON_API MaterialSetAwareness : public IMaterialPassAction
00096 {
00097 public:
00099   MaterialSetAwareness( const Ogre::Vector4& awarenessColor ) : IMaterialPassAction(), _awarenessColor( awarenessColor ) {}
00101   virtual ~MaterialSetAwareness() {}
00102 protected:
00105   Ogre::Vector4 _awarenessColor ;
00106 private:
00108   virtual void passAction( SubEntityMaterial* subEntity, Ogre::Pass* passDest, Ogre::Pass* passSrc ) const ;
00111   inline float computeBlend( float currentPrm, float awarenessPrm ) const 
00112   {
00113     return ( 1.0f - _awarenessColor.w ) * currentPrm + _awarenessColor.w * awarenessPrm ; 
00114   }  
00117   Ogre::ColourValue computeBlend( const Ogre::ColourValue& currentColor ) const ;
00118 } ;
00119 
00120 //=========================================================================== 
00130 class OMKADDON_API IsProgrammable : public IMaterialAction
00131 {
00132 public:
00134   IsProgrammable() : _isProgrammable( false ) {}
00136   virtual ~IsProgrammable() {}
00138   operator bool() { return _isProgrammable ; }
00139 private:
00141   mutable bool _isProgrammable ;
00143   virtual void subEntityAction( SubEntityMaterial* subEntity ) const ;
00144 } ;
00145 
00146 //=========================================================================== 
00149 class OMKADDON_API MaterialSetShader : public IMaterialAction
00150 {
00151 public:
00153   MaterialSetShader( const std::string & fragment, 
00154                      const std::string & vertex,
00155                      Ogre::GpuProgramParameters *fragmentPrm,
00156                      Ogre::GpuProgramParameters *vertexPrm,
00157                      bool light,
00158                      const std::string & texture = "null" ) 
00159   : _fragment( fragment ),
00160     _vertex( vertex ),
00161     _fragmentPrm( fragmentPrm ),
00162     _vertexPrm( vertexPrm ),
00163     _light( light ),
00164     _texture( texture )
00165   {}
00167   virtual ~MaterialSetShader() {}
00168 private:
00170 
00171   std::string _fragment ; 
00172   std::string _vertex ;
00173   Ogre::GpuProgramParameters *_fragmentPrm ;
00174   Ogre::GpuProgramParameters *_vertexPrm ;
00175   bool _light ;
00176   std::string _texture ; 
00178 
00179   virtual void subEntityAction( SubEntityMaterial* subEntity ) const ;
00180 } ;
00181 
00182 //===========================================================================
00184 class OMKADDON_API MaterialAddPickUDO : public IMaterialAction
00185 {
00186 public:
00188   MaterialAddPickUDO() {}
00190   virtual ~MaterialAddPickUDO() {}
00191 private:
00193   virtual bool entityAction( EntityMaterial* entity ) const ;
00194 } ;
00195 
00196 //===========================================================================
00198 class OMKADDON_API MaterialRemovePickUDO : public IMaterialAction
00199 {
00200 public:
00202   MaterialRemovePickUDO() {}
00204   virtual ~MaterialRemovePickUDO() {}
00205 private:
00207   virtual bool entityAction( EntityMaterial* entity ) const ;
00208 } ;
00209 //===========================================================================
00210 
00211 } // namespace Vis
00212 } // namespace OMK
00213 
00214 #endif // __ENTITYMATERIALACTION_H__
00215 
00216 

logo OpenMask

Documentation generated on Mon Jun 9 11:45:56 2008

Generated with doxygen by Dimitri van Heesch ,   1997-2007