00001 /* 00002 ----------------------------------------------------------------------------- 00003 This source file is part of OGRE 00004 (Object-oriented Graphics Rendering Engine) 00005 For the latest info, see http://www.ogre3d.org/ 00006 00007 Copyright © 2000-2004 The OGRE Team 00008 Also see acknowledgements in Readme.html 00009 00010 This program is free software; you can redistribute it and/or modify it under 00011 the terms of the GNU Lesser General Public License as published by the Free Software 00012 Foundation; either version 2 of the License, or (at your option) any later 00013 version. 00014 00015 This program is distributed in the hope that it will be useful, but WITHOUT 00016 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00017 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. 00018 00019 You should have received a copy of the GNU Lesser General Public License along with 00020 this program; if not, write to the Free Software Foundation, Inc., 59 Temple 00021 Place - Suite 330, Boston, MA 02111-1307, USA, or go to 00022 http://www.gnu.org/copyleft/lesser.txt. 00023 ----------------------------------------------------------------------------- 00024 */ 00025 #ifndef _OgreExternalTextureSource_H 00026 #define _OgreExternalTextureSource_H 00027 00028 /*************************************************************************** 00029 OgreExternalTextureSource.h - 00030 Base class that texture plugins need to derive from. This provides the hooks 00031 neccessary for a plugin developer to easily extend the functionality of dynamic textures. 00032 It makes creation/destruction of dynamic textures more streamlined. While the plugin 00033 will need to talk with Ogre for the actual modification of textures, this class allows 00034 easy integration with Ogre apps. Material script files can be used to aid in the 00035 creation of dynamic textures. Functionality can be added that is not defined here 00036 through the use of the base dictionary. For an exmaple of how to use this class and the 00037 string interface see ffmpegVideoPlugIn. 00038 00039 ------------------- 00040 date : Jan 1 2004 00041 email : pjcast@yahoo.com 00042 ***************************************************************************/ 00043 00044 #include "OgreStringInterface.h" 00045 00046 namespace Ogre 00047 { 00049 enum eTexturePlayMode 00050 { 00051 TextureEffectPause = 0, 00052 TextureEffectPlay_ASAP = 1, 00053 TextureEffectPlay_Looping = 2 00054 }; 00055 00060 class _OgreExport ExternalTextureSource : public StringInterface 00061 { 00062 public: 00064 ExternalTextureSource(); 00066 virtual ~ExternalTextureSource() {} 00067 00068 //------------------------------------------------------------------------------// 00069 /* Command objects for specifying some base features */ 00070 /* Any PlugIns wishing to add more specific params to "ExternalTextureSourcePlugins"*/ 00071 /* dictionary, feel free to do so, that's why this is here */ 00072 class CmdInputFileName : public ParamCommand 00073 { 00074 public: 00075 String doGet(const void* target) const; 00076 void doSet(void* target, const String& val); 00077 }; 00078 class CmdFPS : public ParamCommand 00079 { 00080 public: 00081 String doGet(const void* target) const; 00082 void doSet(void* target, const String& val); 00083 }; 00084 class CmdPlayMode : public ParamCommand 00085 { 00086 public: 00087 String doGet(const void* target) const; 00088 void doSet(void* target, const String& val); 00089 }; 00090 class CmdTecPassState : public ParamCommand 00091 { 00092 public: 00093 String doGet(const void* target) const; 00094 void doSet(void* target, const String& val); 00095 }; 00096 //--------------------------------------------------------// 00097 //Base Functions that work with Command String Interface... Or can be called 00098 //manually to create video through code 00099 00101 void setInputName( String sIN ) { mInputFileName = sIN; } 00103 const String& getInputName( ) const { return mInputFileName; } 00105 void setFPS( int iFPS ) { mFramesPerSecond = iFPS; } 00107 const int getFPS( ) const { return mFramesPerSecond; } 00109 void setPlayMode( eTexturePlayMode eMode ) { mMode = eMode; } 00111 eTexturePlayMode getPlayMode() const { return mMode; } 00112 00114 void setTextureTecPassStateLevel( int t, int p, int s ) 00115 { mTechniqueLevel = t;mPassLevel = p;mStateLevel = s; } 00117 void getTextureTecPassStateLevel( int& t, int& p, int& s ) const 00118 {t = mTechniqueLevel; p = mPassLevel; s = mStateLevel;} 00119 00121 void addBaseParams(); 00122 00124 const String& getPlugInStringName( ) { return mPlugInName; } 00126 const String& getDictionaryStringName( ) { return mDictionaryName; } 00127 00128 //Pure virtual functions that plugins must Override 00130 virtual bool Initialise() = 0; 00132 virtual void ShutDown() = 0; 00133 00138 virtual void createDefinedTexture( String sMaterialName ) = 0; 00140 virtual void DestroyAdvancedTexture( String sTextureName ) = 0; 00141 00142 protected: 00143 static CmdInputFileName msCmdInputFile; 00144 static CmdFPS msCmdFramesPerSecond; 00145 static CmdPlayMode msCmdPlayMode; 00146 static CmdTecPassState msCmdTecPassState; 00147 00148 00150 String mPlugInName; 00151 00152 //------ Vars used for setting/getting dictionary stuff -----------// 00153 eTexturePlayMode mMode; 00154 00155 String mInputFileName; 00156 00157 bool mUpdateEveryFrame; 00158 00159 int mFramesPerSecond, 00160 mTechniqueLevel, 00161 mPassLevel, 00162 mStateLevel; 00163 //------------------------------------------------------------------// 00164 00165 private: 00167 String mDictionaryName; 00168 }; 00169 } 00170 00171 #endif
Copyright © 2002-2003 by The OGRE Team
Last modified Fri May 14 23:22:09 2004