Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/src/orxonox/particle/ParticleInterface.h @ 1049

Last change on this file since 1049 was 1039, checked in by rgrieder, 17 years ago
  • train riding doesn't have to be boring
  • added some license notes
  • removed certain header dependencies in audio
  • changed order of header file inclusion in orxonox and audio (coding style guide will be updated)
File size: 3.1 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *
4 *
5 *   License notice:
6 *
7 *   This program is free software; you can redistribute it and/or
8 *   modify it under the terms of the GNU General Public License
9 *   as published by the Free Software Foundation; either version 2
10 *   of the License, or (at your option) any later version.
11 *
12 *   This program is distributed in the hope that it will be useful,
13 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
14 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 *   GNU General Public License for more details.
16 *
17 *   You should have received a copy of the GNU General Public License
18 *   along with this program; if not, write to the Free Software
19 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
20 *
21 *   Author:
22 *      Fabian 'x3n' Landau
23 *   Co-authors:
24 *      ...
25 *
26 */
27
28#ifndef _ParticleInterface_H__
29#define _ParticleInterface_H__
30
31#include "OrxonoxPrereqs.h"
32
33#include <string>
34
35// #include "ParticleInterface.h"
36// #include <Ogre.h>
37// #include <OIS/OIS.h>
38// #include <CEGUI/CEGUI.h>
39// #include <CEGUIRenderer.h>
40#include <OgreParticleSystem.h>
41#include <OgreParticleEmitter.h>
42#include <OgreSceneManager.h>
43
44#include "util/Math.h"
45
46
47namespace orxonox
48{
49
50  class _OrxonoxExport ParticleInterface
51  {
52  public:
53
54    ParticleInterface( Ogre::SceneManager *sceneManager, std::string name, std::string templateName );
55    ~ParticleInterface( void );
56
57    inline void addToSceneNode( Ogre::SceneNode* sceneNode )
58        { sceneNode_ = sceneNode; sceneNode_->attachObject(particleSystem_);};
59    inline void detachFromSceneNode( void )
60        { sceneNode_->detachObject(particleSystem_); sceneNode_ = NULL;};
61
62    Ogre::ParticleEmitter* getEmitter ( int emitterNr );
63    void newEmitter ( void );
64
65    Vector3 getPositionOfEmitter ( int emitterNr );
66    inline void setPositionOfEmitter ( int emitterNr, Vector3 position )
67        { particleSystem_->getEmitter(emitterNr)->setPosition(position); };
68
69    inline Vector3 getDirection ( void )
70        { return particleSystem_->getEmitter(0)->getDirection(); };
71    void setDirection ( Vector3 direction );
72
73    inline Real getVelocity()
74        {return velocity_; };
75    void setVelocity( Real v );
76
77    inline float getRate()
78      { return rate_; };
79    void setRate( float r );
80
81    inline Real getDistance()
82        { return distance_; };
83    void setDistance( Real d );
84
85    inline ColourValue getColour( void )
86        {return colour_;};
87    void setColour( ColourValue colour );
88
89    void switchEnable();
90
91    inline Ogre::ParticleSystem* getParticleSystem()
92        { return this->particleSystem_; };
93
94  private:
95    Ogre::SceneNode *sceneNode_;
96    Ogre::SceneManager *sceneManager_;
97    Ogre::ParticleSystem *particleSystem_;
98    Real distance_;
99    Real velocity_;
100    float rate_;
101    ColourValue colour_;
102    int numberOfEmitters_;
103
104    void standardizeEmitters();
105  };
106
107}
108
109#endif /* _ParticleInterface_H__ */
Note: See TracBrowser for help on using the repository browser.