Frapper  1.0a
OgreTools.h
Go to the documentation of this file.
1 /*
2 -----------------------------------------------------------------------------
3 This source file is part of FRAPPER
4 research.animationsinstitut.de
5 sourceforge.net/projects/frapper
6 
7 Copyright (c) 2008-2009 Filmakademie Baden-Wuerttemberg, Institute of Animation
8 
9 This program is free software; you can redistribute it and/or modify it under
10 the terms of the GNU Lesser General Public License as published by the Free Software
11 Foundation; version 2.1 of the License.
12 
13 This program is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
16 
17 You should have received a copy of the GNU Lesser General Public License along with
18 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
19 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
20 http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
21 -----------------------------------------------------------------------------
22 */
23 
33 
34 #ifndef OGRETOOLS_H
35 #define OGRETOOLS_H
36 
37 #include "FrapperPrerequisites.h"
38 #include "Parameter.h"
39 #include "Ogre.h"
40 #include "OgreContainer.h"
41 
42 namespace Frapper {
43 
48 {
49 
50 public: // data
51 
55  unsigned int width;
56 
60  unsigned int height;
61 
62 };
63 
64 
69 {
70 
71 public: // static functions
72 
84  static Ogre::MovableObject * cloneMovableObject ( Ogre::MovableObject *movableObject, const QString &name, Ogre::SceneManager *sceneManager = 0 );
85 
94  static void deepCopySceneNode ( Ogre::SceneNode *sceneNode, Ogre::SceneNode *&sceneNodeCopy, const QString &namePrefix, Ogre::SceneManager *sceneManager = 0 );
95 
104  static Ogre::SceneNode * copySceneNode ( Ogre::SceneNode *sceneNode, const QString &name, Ogre::SceneManager *sceneManager = 0 );
105 
113  static void deepDeleteSceneNode ( Ogre::SceneNode *sceneNode, Ogre::SceneManager *sceneManager = 0, bool deleteRoot = false );
114 
122  static void deleteUserAnyFromSceneNode( Ogre::SceneNode *sceneNode );
123  static void deleteUserAnyFromMovableObject( Ogre::MovableObject *movableObject );
124 
131  static Ogre::Entity * getFirstEntity ( Ogre::SceneNode *sceneNode );
132 
139  static Ogre::Camera * getFirstCamera ( Ogre::SceneNode *sceneNode );
140 
147  static Ogre::Light * getFirstLight ( Ogre::SceneNode *sceneNode );
148 
155  static Ogre::MovableObject* OgreTools::getFirstMovableObject( Ogre::SceneNode *sceneNode );
156 
157 
164  static void OgreTools::getAllLights( Ogre::SceneNode* sceneNode, QList<Ogre::Light*>& lightsList );
165 
172  static void OgreTools::getAllCameras( Ogre::SceneNode* sceneNode, QList<Ogre::Camera*>& camerasList );
173 
180  static void OgreTools::getAllEntities( Ogre::SceneNode* sceneNode, QList<Ogre::Entity*>& entityList );
181 
182 
189  static void getSceneNodesByName( Ogre::SceneNode* root, QString name, QList<Ogre::SceneNode*>& sceneNodes );
190 
196  static OgreContainer* getOgreContainer( Ogre::SceneNode* sceneNode);
197 
201  static void destroyResourceGroup ( const QString &name );
202 
206  static void createResourceGroup ( const QString &name, const QString &path );
207 
211  static void OgreTextureToQImage( const Ogre::TexturePtr src, QImage &dst, QImage::Format format = QImage::Format_ARGB32 );
212 
216  static void QImageToOgreTexture( const QImage &src, const Ogre::TexturePtr dst, Ogre::PixelFormat format = Ogre::PF_A8R8G8B8 );
217 
218 private: // static functions
219 
228  template <typename T>
229  static T findFirstObject ( Ogre::SceneNode *sceneNode );
230 
239  template <typename T>
240  static void findAllObjects ( Ogre::SceneNode *sceneNode, QList<T>& objectsList );
241 
248  template <typename T>
249  static void deleteUserAnyFrom( T t );
250 };
251 
252 } // end namespace Frapper
253 
254 #endif