1 /* 2 ----------------------------------------------------------------------------- 3 This source file is part of OGRE 4 (Object-oriented Graphics Rendering Engine) 5 For the latest info, see http://www.ogre3d.org/ 6 7 Copyright (c) 2000-2013 Torus Knot Software Ltd 8 Also see acknowledgements in Readme.html 9 10 You may use this sample code for anything you like, it is not covered by the 11 same license as the rest of the engine. 12 ----------------------------------------------------------------------------- 13 */ 14 /* 15 ----------------------------------------------------------------------------- 16 Filename: StaticPluginLoader.h 17 Description: Utility class to load plugins statically 18 ----------------------------------------------------------------------------- 19 */ 20 21 #ifndef __StaticPluginLoader_H__ 22 #define __StaticPluginLoader_H__ 23 24 #include "Ogre.h" 25 #include "OgreConfigFile.h" 26 // Static plugin headers 27 #ifdef OGRE_STATIC_CgProgramManager 28 # include "OgreCgPlugin.h" 29 #endif 30 #ifdef OGRE_STATIC_OctreeSceneManager 31 # include "OgreOctreePlugin.h" 32 #endif 33 #ifdef OGRE_STATIC_ParticleFX 34 # include "OgreParticleFXPlugin.h" 35 #endif 36 #ifdef OGRE_STATIC_BSPSceneManager 37 # include "OgreBspSceneManagerPlugin.h" 38 #endif 39 #ifdef OGRE_STATIC_GL 40 # include "OgreGLPlugin.h" 41 #endif 42 #ifdef OGRE_STATIC_GLES 43 # include "OgreGLESPlugin.h" 44 #endif 45 #ifdef OGRE_STATIC_GLES2 46 # include "OgreGLES2Plugin.h" 47 #endif 48 #ifdef OGRE_STATIC_Direct3D9 49 # include "OgreD3D9Plugin.h" 50 #endif 51 #ifdef OGRE_STATIC_Direct3D10 52 # include "OgreD3D10Plugin.h" 53 #endif 54 #ifdef OGRE_STATIC_PCZSceneManager 55 # include "OgrePCZPlugin.h" 56 #endif 57 #ifdef OGRE_STATIC_OctreeZone 58 # include "OgreOctreeZonePlugin.h" 59 #endif 60 61 namespace Ogre 62 { 63 /** Utility class for loading some plugins statically. 64 @remarks 65 When loading plugins statically, you are limited to loading plugins 66 that are known about at compile time. You should define preprocessor 67 symbols depending on which plugins you want to load - the symbol being 68 OGRE_STATIC_<pluginname>, with pluginname being the usual name of the 69 plugin DLL (no file extension, no debug suffix, and without the Plugin_ 70 or RenderSystem_ prefix.) 71 */ 72 class StaticPluginLoader 73 { 74 protected: 75 #ifdef OGRE_STATIC_CgProgramManager 76 CgPlugin* mCgPlugin; 77 #endif 78 #ifdef OGRE_STATIC_OctreeSceneManager 79 OctreePlugin* mOctreePlugin; 80 #endif 81 #ifdef OGRE_STATIC_ParticleFX 82 ParticleFXPlugin* mParticleFXPlugin; 83 #endif 84 #ifdef OGRE_STATIC_BSPSceneManager 85 BspSceneManagerPlugin* mBSPPlugin; 86 #endif 87 #ifdef OGRE_STATIC_PCZSceneManager 88 PCZPlugin* mPCZPlugin; 89 #endif 90 #ifdef OGRE_STATIC_OctreeZone 91 OctreeZonePlugin* mOctreeZonePlugin; 92 #endif 93 #ifdef OGRE_STATIC_GL 94 GLPlugin* mGLPlugin; 95 #endif 96 #ifdef OGRE_STATIC_GLES 97 GLESPlugin* mGLESPlugin; 98 #endif 99 #ifdef OGRE_STATIC_GLES2 100 GLES2Plugin* mGLES2Plugin; 101 #endif 102 #ifdef OGRE_STATIC_Direct3D9 103 D3D9Plugin* mD3D9Plugin; 104 #endif 105 #ifdef OGRE_STATIC_Direct3D10 106 D3D10Plugin* mD3D10Plugin; 107 #endif 108 public: StaticPluginLoader()109 StaticPluginLoader() {} 110 111 /** Load all the enabled plugins against the passed in root object. */ load()112 void load() 113 { 114 Root& root = Root::getSingleton(); 115 #ifdef OGRE_STATIC_GL 116 mGLPlugin = OGRE_NEW GLPlugin(); 117 root.installPlugin(mGLPlugin); 118 #endif 119 #ifdef OGRE_STATIC_GLES 120 mGLESPlugin = OGRE_NEW GLESPlugin(); 121 root.installPlugin(mGLESPlugin); 122 #endif 123 #ifdef OGRE_STATIC_GLES2 124 mGLES2Plugin = OGRE_NEW GLES2Plugin(); 125 root.installPlugin(mGLES2Plugin); 126 #endif 127 #ifdef OGRE_STATIC_Direct3D9 128 mD3D9Plugin = OGRE_NEW D3D9Plugin(); 129 root.installPlugin(mD3D9Plugin); 130 #endif 131 #ifdef OGRE_STATIC_Direct3D10 132 mD3D10Plugin = OGRE_NEW D3D10Plugin(); 133 root.installPlugin(mD3D10Plugin); 134 #endif 135 #ifdef OGRE_STATIC_CgProgramManager 136 mCgPlugin = OGRE_NEW CgPlugin(); 137 root.installPlugin(mCgPlugin); 138 #endif 139 #ifdef OGRE_STATIC_OctreeSceneManager 140 mOctreePlugin = OGRE_NEW OctreePlugin(); 141 root.installPlugin(mOctreePlugin); 142 #endif 143 #ifdef OGRE_STATIC_ParticleFX 144 mParticleFXPlugin = OGRE_NEW ParticleFXPlugin(); 145 root.installPlugin(mParticleFXPlugin); 146 #endif 147 #ifdef OGRE_STATIC_BSPSceneManager 148 mBSPPlugin = OGRE_NEW BspSceneManagerPlugin(); 149 root.installPlugin(mBSPPlugin); 150 #endif 151 #ifdef OGRE_STATIC_PCZSceneManager 152 mPCZPlugin = OGRE_NEW PCZPlugin(); 153 root.installPlugin(mPCZPlugin); 154 #endif 155 #ifdef OGRE_STATIC_OctreeZone 156 mOctreeZonePlugin = OGRE_NEW OctreeZonePlugin(); 157 root.installPlugin(mOctreeZonePlugin); 158 #endif 159 } 160 unload()161 void unload() 162 { 163 // don't unload plugins, since Root will have done that. Destroy here. 164 #ifdef OGRE_STATIC_OctreeZone 165 OGRE_DELETE mOctreeZonePlugin; 166 #endif 167 #ifdef OGRE_STATIC_PCZSceneManager 168 OGRE_DELETE mPCZPlugin; 169 #endif 170 #ifdef OGRE_STATIC_BSPSceneManager 171 OGRE_DELETE mBSPPlugin; 172 #endif 173 #ifdef OGRE_STATIC_ParticleFX 174 OGRE_DELETE mParticleFXPlugin; 175 #endif 176 #ifdef OGRE_STATIC_OctreeSceneManager 177 OGRE_DELETE mOctreePlugin; 178 #endif 179 #ifdef OGRE_STATIC_CgProgramManager 180 OGRE_DELETE mCgPlugin; 181 #endif 182 #ifdef OGRE_STATIC_Direct3D9 183 OGRE_DELETE mD3D9Plugin; 184 #endif 185 #ifdef OGRE_STATIC_Direct3D10 186 OGRE_DELETE mD3D10Plugin; 187 #endif 188 #ifdef OGRE_STATIC_GL 189 OGRE_DELETE mGLPlugin; 190 #endif 191 #ifdef OGRE_STATIC_GLES 192 OGRE_DELETE mGLESPlugin; 193 #endif 194 #ifdef OGRE_STATIC_GLES2 195 OGRE_DELETE mGLES2Plugin; 196 #endif 197 198 } 199 200 }; 201 202 } 203 204 #endif 205