Ajout version Release/x64 avec les libraries x64 et tuning de la version Debug
This commit is contained in:
194
SQCSim2021/external/irrKlang-64bit-1.6.0/include/ik_ISound.h
vendored
Normal file
194
SQCSim2021/external/irrKlang-64bit-1.6.0/include/ik_ISound.h
vendored
Normal file
@@ -0,0 +1,194 @@
|
||||
// Copyright (C) 2002-2018 Nikolaus Gebhardt
|
||||
// This file is part of the "irrKlang" library.
|
||||
// For conditions of distribution and use, see copyright notice in irrKlang.h
|
||||
|
||||
#ifndef __I_IRRKLANG_SOUND_H_INCLUDED__
|
||||
#define __I_IRRKLANG_SOUND_H_INCLUDED__
|
||||
|
||||
#include "ik_IVirtualRefCounted.h"
|
||||
#include "ik_ISoundEffectControl.h"
|
||||
#include "ik_vec3d.h"
|
||||
|
||||
|
||||
namespace irrklang
|
||||
{
|
||||
class ISoundSource;
|
||||
class ISoundStopEventReceiver;
|
||||
|
||||
//! Represents a sound which is currently played.
|
||||
/** The sound can be stopped, its volume or pan changed, effects added/removed
|
||||
and similar using this interface.
|
||||
Creating sounds is done using ISoundEngine::play2D() or ISoundEngine::play3D().
|
||||
More informations about the source of a sound can be obtained from the ISoundSource
|
||||
interface. */
|
||||
class ISound : public IVirtualRefCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! returns source of the sound which stores the filename and other informations about that sound
|
||||
/** \return Returns the sound source poitner of this sound. May return 0 if the sound source
|
||||
has been removed.*/
|
||||
virtual ISoundSource* getSoundSource() = 0;
|
||||
|
||||
//! returns if the sound is paused
|
||||
virtual void setIsPaused( bool paused = true) = 0;
|
||||
|
||||
//! returns if the sound is paused
|
||||
virtual bool getIsPaused() = 0;
|
||||
|
||||
//! Will stop the sound and free its resources.
|
||||
/** If you just want to pause the sound, use setIsPaused().
|
||||
After calling stop(), isFinished() will usually return true.
|
||||
Be sure to also call ->drop() once you are done.*/
|
||||
virtual void stop() = 0;
|
||||
|
||||
//! returns volume of the sound, a value between 0 (mute) and 1 (full volume).
|
||||
/** (this volume gets multiplied with the master volume of the sound engine
|
||||
and other parameters like distance to listener when played as 3d sound) */
|
||||
virtual ik_f32 getVolume() = 0;
|
||||
|
||||
//! sets the volume of the sound, a value between 0 (mute) and 1 (full volume).
|
||||
/** This volume gets multiplied with the master volume of the sound engine
|
||||
and other parameters like distance to listener when played as 3d sound. */
|
||||
virtual void setVolume(ik_f32 volume) = 0;
|
||||
|
||||
//! sets the pan of the sound. Takes a value between -1 and 1, 0 is center.
|
||||
virtual void setPan(ik_f32 pan) = 0;
|
||||
|
||||
//! returns the pan of the sound. Takes a value between -1 and 1, 0 is center.
|
||||
virtual ik_f32 getPan() = 0;
|
||||
|
||||
//! returns if the sound has been started to play looped
|
||||
virtual bool isLooped() = 0;
|
||||
|
||||
//! changes the loop mode of the sound.
|
||||
/** If the sound is playing looped and it is changed to not-looped, then it
|
||||
will stop playing after the loop has finished.
|
||||
If it is not looped and changed to looped, the sound will start repeating to be
|
||||
played when it reaches its end.
|
||||
Invoking this method will not have an effect when the sound already has stopped. */
|
||||
virtual void setIsLooped(bool looped) = 0;
|
||||
|
||||
//! returns if the sound has finished playing.
|
||||
/** Don't mix this up with isPaused(). isFinished() returns if the sound has been
|
||||
finished playing. If it has, is maybe already have been removed from the playing list of the
|
||||
sound engine and calls to any other of the methods of ISound will not have any result.
|
||||
If you call stop() to a playing sound will result that this function will return true
|
||||
when invoked. */
|
||||
virtual bool isFinished() = 0;
|
||||
|
||||
//! Sets the minimal distance if this is a 3D sound.
|
||||
/** Changes the distance at which the 3D sound stops getting louder. This works
|
||||
like this: As a listener approaches a 3D sound source, the sound gets louder.
|
||||
Past a certain point, it is not reasonable for the volume to continue to increase.
|
||||
Either the maximum (zero) has been reached, or the nature of the sound source
|
||||
imposes a logical limit. This is the minimum distance for the sound source.
|
||||
Similarly, the maximum distance for a sound source is the distance beyond
|
||||
which the sound does not get any quieter.
|
||||
The default minimum distance is 1, the default max distance is a huge number like 1000000000.0f. */
|
||||
virtual void setMinDistance(ik_f32 min) = 0;
|
||||
|
||||
//! Returns the minimal distance if this is a 3D sound.
|
||||
/** See setMinDistance() for details. */
|
||||
virtual ik_f32 getMinDistance() = 0;
|
||||
|
||||
//! Sets the maximal distance if this is a 3D sound.
|
||||
/** Changing this value is usually not necessary. Use setMinDistance() instead.
|
||||
Don't change this value if you don't know what you are doing: This value causes the sound
|
||||
to stop attenuating after it reaches the max distance. Most people think that this sets the
|
||||
volume of the sound to 0 after this distance, but this is not true. Only change the
|
||||
minimal distance (using for example setMinDistance()) to influence this.
|
||||
The maximum distance for a sound source is the distance beyond which the sound does not get any quieter.
|
||||
The default minimum distance is 1, the default max distance is a huge number like 1000000000.0f. */
|
||||
virtual void setMaxDistance(ik_f32 max) = 0;
|
||||
|
||||
//! Returns the maximal distance if this is a 3D sound.
|
||||
/** See setMaxDistance() for details. */
|
||||
virtual ik_f32 getMaxDistance() = 0;
|
||||
|
||||
//! sets the position of the sound in 3d space
|
||||
virtual void setPosition(vec3df position) = 0;
|
||||
|
||||
//! returns the position of the sound in 3d space
|
||||
virtual vec3df getPosition() = 0;
|
||||
|
||||
//! sets the position of the sound in 3d space, needed for Doppler effects.
|
||||
/** To use doppler effects use ISound::setVelocity to set a sounds velocity,
|
||||
ISoundEngine::setListenerPosition() to set the listeners velocity and
|
||||
ISoundEngine::setDopplerEffectParameters() to adjust two parameters influencing
|
||||
the doppler effects intensity. */
|
||||
virtual void setVelocity(vec3df vel) = 0;
|
||||
|
||||
//! returns the velocity of the sound in 3d space, needed for Doppler effects.
|
||||
/** To use doppler effects use ISound::setVelocity to set a sounds velocity,
|
||||
ISoundEngine::setListenerPosition() to set the listeners velocity and
|
||||
ISoundEngine::setDopplerEffectParameters() to adjust two parameters influencing
|
||||
the doppler effects intensity. */
|
||||
virtual vec3df getVelocity() = 0;
|
||||
|
||||
//! returns the current play position of the sound in milliseconds.
|
||||
/** \return Returns -1 if not implemented or possible for this sound for example
|
||||
because it already has been stopped and freed internally or similar. */
|
||||
virtual ik_u32 getPlayPosition() = 0;
|
||||
|
||||
//! sets the current play position of the sound in milliseconds.
|
||||
/** \param pos Position in milliseconds. Must be between 0 and the value returned
|
||||
by getPlayPosition().
|
||||
\return Returns true successful. False is returned for example if the sound already finished
|
||||
playing and is stopped or the audio source is not seekable, for example if it
|
||||
is an internet stream or a a file format not supporting seeking (a .MOD file for example).
|
||||
A file can be tested if it can bee seeking using ISoundSource::getIsSeekingSupported(). */
|
||||
virtual bool setPlayPosition(ik_u32 pos) = 0;
|
||||
|
||||
//! Sets the playback speed (frequency) of the sound.
|
||||
/** Plays the sound at a higher or lower speed, increasing or decreasing its
|
||||
frequency which makes it sound lower or higher.
|
||||
Note that this feature is not available on all sound output drivers (it is on the
|
||||
DirectSound drivers at least), and it does not work together with the
|
||||
'enableSoundEffects' parameter of ISoundEngine::play2D and ISoundEngine::play3D when
|
||||
using DirectSound.
|
||||
\param speed Factor of the speed increase or decrease. 2 is twice as fast,
|
||||
0.5 is only half as fast. The default is 1.0.
|
||||
\return Returns true if sucessful, false if not. The current sound driver might not
|
||||
support changing the playBack speed, or the sound was started with the
|
||||
'enableSoundEffects' parameter. */
|
||||
virtual bool setPlaybackSpeed(ik_f32 speed = 1.0f) = 0;
|
||||
|
||||
//! Returns the playback speed set by setPlaybackSpeed(). Default: 1.0f.
|
||||
/** See setPlaybackSpeed() for details */
|
||||
virtual ik_f32 getPlaybackSpeed() = 0;
|
||||
|
||||
//! returns the play length of the sound in milliseconds.
|
||||
/** Returns -1 if not known for this sound for example because its decoder
|
||||
does not support length reporting or it is a file stream of unknown size.
|
||||
Note: You can also use ISoundSource::getPlayLength() to get the length of
|
||||
a sound without actually needing to play it. */
|
||||
virtual ik_u32 getPlayLength() = 0;
|
||||
|
||||
//! Returns the sound effect control interface for this sound.
|
||||
/** Sound effects such as Chorus, Distorsions, Echo, Reverb and similar can
|
||||
be controlled using this. The interface pointer is only valid as long as the ISound pointer is valid.
|
||||
If the ISound pointer gets dropped (IVirtualRefCounted::drop()), the ISoundEffects
|
||||
may not be used any more.
|
||||
\return Returns a pointer to the sound effects interface if available. The sound
|
||||
has to be started via ISoundEngine::play2D() or ISoundEngine::play3D(),
|
||||
with the flag enableSoundEffects=true, otherwise 0 will be returned. Note that
|
||||
if the output driver does not support sound effects, 0 will be returned as well.*/
|
||||
virtual ISoundEffectControl* getSoundEffectControl() = 0;
|
||||
|
||||
//! Sets the sound stop event receiver, an interface which gets called if a sound has finished playing.
|
||||
/** This event is guaranteed to be called when the sound or sound stream is finished,
|
||||
either because the sound reached its playback end, its sound source was removed,
|
||||
ISoundEngine::stopAllSounds() has been called or the whole engine was deleted.
|
||||
There is an example on how to use events in irrklang at @ref events .
|
||||
\param receiver Interface to a user implementation of the sound receiver. This interface
|
||||
should be as long valid as the sound exists or another stop event receiver is set.
|
||||
Set this to null to set no sound stop event receiver.
|
||||
\param userData: A iser data pointer, can be null. */
|
||||
virtual void setSoundStopEventReceiver(ISoundStopEventReceiver* reciever, void* userData=0) = 0;
|
||||
};
|
||||
|
||||
} // end namespace irrklang
|
||||
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user