00001 // Copyright (c) 2008-2010 Raynaldo (Wildicv) Rivera, Joshua (Dark_Kilauea) Jones 00002 // This file is part of the "cAudio Engine" 00003 // For conditions of distribution and use, see copyright notice in cAudio.h 00004 00005 #ifndef IAUDIOSOURCE_H 00006 #define IAUDIOSOURCE_H 00007 00008 #include "cAudioDefines.h" 00009 #include "IRefCounted.h" 00010 #include "IAudioDecoder.h" 00011 #include "cVector3.h" 00012 #include "IEffect.h" 00013 #include "IFilter.h" 00014 #include "ISourceEventHandler.h" 00015 00016 namespace cAudio 00017 { 00019 class IAudioSource : public IRefCounted 00020 { 00021 public: 00022 IAudioSource() {} 00023 virtual ~IAudioSource() {} 00024 00026 00028 virtual bool play() = 0; 00029 00031 00034 virtual bool play2d(const bool& toLoop = false) = 0; 00035 00037 00042 virtual bool play3d(const cVector3& position, const float& soundstr = 1.0 , const bool& toLoop = false) = 0; 00043 00045 virtual void pause() = 0; 00046 00048 virtual void stop() = 0; 00049 00051 00052 virtual void loop(const bool& toLoop) = 0; 00053 00055 00059 virtual bool seek(const float& seconds, bool relative = false) = 0; 00060 00062 virtual float getTotalAudioTime() = 0; 00063 00065 virtual int getTotalAudioSize() = 0; 00066 00068 virtual int getCompressedAudioSize() = 0; 00069 00071 virtual float getCurrentAudioTime() = 0; 00072 00074 virtual int getCurrentAudioPosition() = 0; 00075 00077 virtual int getCurrentCompressedAudioPosition() = 0; 00078 00080 virtual bool update() = 0; 00081 00083 virtual void release() = 0; 00084 00086 virtual const bool isValid() const = 0; 00087 00089 virtual const bool isPlaying() const = 0; 00090 00092 virtual const bool isPaused() const = 0; 00093 00095 virtual const bool isStopped() const = 0; 00096 00098 virtual const bool isLooping() const = 0; 00099 00101 00103 virtual void setPosition(const cVector3& position) = 0; 00104 00106 00108 virtual void setVelocity(const cVector3& velocity) = 0; 00109 00111 00113 virtual void setDirection(const cVector3& direction) = 0; 00114 00116 00119 virtual void setRolloffFactor(const float& rolloff) = 0; 00120 00122 00125 virtual void setStrength(const float& soundstrength) = 0; 00126 00128 00130 virtual void setMinDistance(const float& minDistance) = 0; 00131 00133 00135 virtual void setMaxDistance(const float& maxDistance) = 0; 00136 00138 00140 virtual void setPitch(const float& pitch) = 0; 00141 00143 00145 virtual void setVolume(const float& volume) = 0; 00146 00148 00150 virtual void setMinVolume(const float& minVolume) = 0; 00151 00153 00155 virtual void setMaxVolume(const float& maxVolume) = 0; 00156 00158 00161 virtual void setInnerConeAngle(const float& innerAngle) = 0; 00162 00164 00167 virtual void setOuterConeAngle(const float& outerAngle) = 0; 00168 00170 00172 virtual void setOuterConeVolume(const float& outerVolume) = 0; 00173 00175 00177 virtual void setDopplerStrength(const float& dstrength) = 0; 00178 00180 00182 virtual void setDopplerVelocity(const cVector3& dvelocity) = 0; 00183 00185 00187 virtual void move(const cVector3& position) = 0; 00188 00190 virtual const cVector3 getPosition() const = 0; 00191 00193 virtual const cVector3 getVelocity() const = 0; 00194 00196 virtual const cVector3 getDirection() const = 0; 00197 00199 virtual const float getRolloffFactor() const = 0; 00200 00202 virtual const float getStrength() const = 0; 00203 00205 virtual const float getMinDistance() const = 0; 00206 00208 virtual const float getMaxDistance() const = 0; 00209 00211 virtual const float getPitch() const = 0; 00212 00214 virtual const float getVolume() const = 0; 00215 00217 virtual const float getMinVolume() const = 0; 00218 00220 virtual const float getMaxVolume() const = 0; 00221 00223 virtual const float getInnerConeAngle() const = 0; 00224 00226 virtual const float getOuterConeAngle() const = 0; 00227 00229 virtual const float getOuterConeVolume() const = 0; 00230 00232 virtual const float getDopplerStrength() const = 0; 00233 00235 virtual const cVector3 getDopplerVelocity() const = 0; 00236 00238 00240 virtual void registerEventHandler(ISourceEventHandler* handler) = 0; 00241 00243 00245 virtual void unRegisterEventHandler(ISourceEventHandler* handler) = 0; 00246 00248 virtual void unRegisterAllEventHandlers() = 0; 00249 00250 #ifdef CAUDIO_EFX_ENABLED 00252 virtual unsigned int getNumEffectSlotsAvailable() const = 0; 00253 00255 00259 virtual bool attachEffect(unsigned int slot, IEffect* effect) = 0; 00260 00262 00264 virtual void removeEffect(unsigned int slot) = 0; 00265 00267 00270 virtual bool attachFilter(IFilter* filter) = 0; 00271 00273 virtual void removeFilter() = 0; 00274 #endif 00275 00276 protected: 00277 private: 00278 }; 00279 }; 00280 #endif
1.6.2