00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef GLUON_ENGINE_SOUNDEMITTERCOMPONENT_H
00022 #define GLUON_ENGINE_SOUNDEMITTERCOMPONENT_H
00023
00024 #include <engine/gluon_engine_export.h>
00025 #include <engine/component.h>
00026
00027 namespace GluonEngine
00028 {
00029 class Asset;
00030
00031 class GLUON_ENGINE_EXPORT SoundEmitterComponent : public Component
00032 {
00033 Q_OBJECT
00034 Q_PROPERTY( GluonEngine::Asset* sound READ sound WRITE setSound )
00035 Q_PROPERTY( float radius READ radius WRITE setRadius )
00036 Q_PROPERTY( float volume READ volume WRITE setVolume )
00037 Q_PROPERTY( float pitch READ pitch WRITE setPitch )
00038 Q_PROPERTY( bool loop READ isLooping WRITE setLoop )
00039 Q_PROPERTY( bool autoPlay READ autoPlay WRITE setAutoPlay )
00040
00041
00042 Q_INTERFACES( GluonEngine::Component )
00043 GLUON_OBJECT( GluonEngine::SoundEmitterComponent )
00044
00045 public:
00046 Q_INVOKABLE SoundEmitterComponent( QObject* parent = 0 );
00047 SoundEmitterComponent( const GluonEngine::SoundEmitterComponent& other );
00048 ~SoundEmitterComponent();
00049 virtual QString category() const;
00050
00051 Asset* sound();
00052
00053 virtual void initialize();
00054 virtual void start();
00055 virtual void draw( int timeLapse = 0 );
00056 virtual void stop();
00057 virtual void cleanup();
00058
00059 Q_INVOKABLE float radius() const;
00060 Q_INVOKABLE float volume() const;
00061 Q_INVOKABLE float pitch() const;
00062 Q_INVOKABLE bool isLooping() const;
00063 Q_INVOKABLE bool isPlaying() const;
00064 Q_INVOKABLE bool autoPlay() const;
00065
00066 public slots:
00067 Q_INVOKABLE void play();
00068 Q_INVOKABLE void setRadius( float radius );
00069 Q_INVOKABLE void setVolume( float volume );
00070 Q_INVOKABLE void setPitch( float pitch );
00071 Q_INVOKABLE void setLoop( bool loop );
00072 Q_INVOKABLE void setSound( Asset* asset );
00073 Q_INVOKABLE void setAutoPlay( bool autoPlay );
00074
00075 private:
00076 class SoundEmitterComponentPrivate;
00077 SoundEmitterComponentPrivate* const d;
00078 };
00079
00080 }
00081
00082 Q_DECLARE_METATYPE( GluonEngine::SoundEmitterComponent )
00083 Q_DECLARE_METATYPE( GluonEngine::SoundEmitterComponent* )
00084
00085 #endif // GLUON_ENGINE_SOUNDEMITTERCOMPONENT_H