73 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // 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_STOP_EVENT_RECEIVER_H_INCLUDED__
 | |
| #define __I_IRRKLANG_SOUND_STOP_EVENT_RECEIVER_H_INCLUDED__
 | |
| 
 | |
| #include "ik_IRefCounted.h"
 | |
| #include "ik_SAudioStreamFormat.h"
 | |
| 
 | |
| 
 | |
| namespace irrklang
 | |
| {
 | |
| 
 | |
| 
 | |
| //! An enumeration listing all reasons for a fired sound stop event
 | |
| enum E_STOP_EVENT_CAUSE
 | |
| {
 | |
| 	//! The sound stop event was fired because the sound finished playing
 | |
| 	ESEC_SOUND_FINISHED_PLAYING = 0,
 | |
| 
 | |
| 	//! The sound stop event was fired because the sound was stopped by the user, calling ISound::stop().
 | |
| 	ESEC_SOUND_STOPPED_BY_USER,
 | |
| 
 | |
| 	//! The sound stop event was fired because the source of the sound was removed, for example
 | |
| 	//! because irrKlang was shut down or the user called ISoundEngine::removeSoundSource().
 | |
| 	ESEC_SOUND_STOPPED_BY_SOURCE_REMOVAL,
 | |
| 
 | |
| 	//! This enumeration literal is never used, it only forces the compiler to 
 | |
| 	//! compile these enumeration values to 32 bit.
 | |
| 	ESEC_FORCE_32_BIT = 0x7fffffff
 | |
| };
 | |
| 
 | |
| 
 | |
| //! Interface to be implemented by the user, which recieves sound stop events.
 | |
| /** The interface has only one method to be implemented by the user: OnSoundStopped().
 | |
| Implement this interface and set it via ISound::setSoundStopEventReceiver().
 | |
| The sound stop event is guaranteed to be called when a 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. */
 | |
| class ISoundStopEventReceiver
 | |
| {
 | |
| public:
 | |
|     
 | |
| 	//! destructor
 | |
| 	virtual ~ISoundStopEventReceiver() {};
 | |
| 
 | |
| 	//! Called when a sound has stopped playing. 
 | |
| 	/** This is the only method to be implemented by the user.
 | |
| 	The sound stop event is guaranteed to be called when a 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.
 | |
| 	Please note: Sound events will occur in a different thread when the engine runs in
 | |
| 	multi threaded mode (default). In single threaded mode, the event will happen while
 | |
| 	the user thread is calling ISoundEngine::update().
 | |
| 	\param sound: Sound which has been stopped. 
 | |
| 	\param reason: The reason why the sound stop event was fired. Usually, this will be ESEC_SOUND_FINISHED_PLAYING.
 | |
| 	When the sound was aborded by calling ISound::stop() or ISoundEngine::stopAllSounds();, this would be 
 | |
| 	ESEC_SOUND_STOPPED_BY_USER. If irrKlang was deleted or the sound source was removed, the value is 
 | |
| 	ESEC_SOUND_STOPPED_BY_SOURCE_REMOVAL.
 | |
| 	\param userData: userData pointer set by the user when registering the interface
 | |
| 	via ISound::setSoundStopEventReceiver(). */
 | |
| 	virtual void OnSoundStopped(ISound* sound, E_STOP_EVENT_CAUSE reason, void* userData) = 0;
 | |
| 
 | |
| };
 | |
| 
 | |
| 
 | |
| } // end namespace irrklang
 | |
| 
 | |
| 
 | |
| #endif
 | |
| 
 |