From 1c3cdd5058b1ed70fb921c7f7b1cbd0c8d576bd3 Mon Sep 17 00:00:00 2001 From: trass3r Date: Mon, 11 Jan 2010 21:48:15 +0000 Subject: [PATCH] sync with sfml: + SoundStream.setPlayingOffset * Listener.getTarget -> getDirection git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/branches/sfml2@1349 4e206d99-4929-0410-ac5d-dfc041789085 --- DSFML/import/dsfml/audio/listener.d | 45 ++++++++++++-------------- DSFML/import/dsfml/audio/soundstream.d | 25 +++++++++++--- 2 files changed, 41 insertions(+), 29 deletions(-) diff --git a/DSFML/import/dsfml/audio/listener.d b/DSFML/import/dsfml/audio/listener.d index 1acec93f9..7bec33602 100644 --- a/DSFML/import/dsfml/audio/listener.d +++ b/DSFML/import/dsfml/audio/listener.d @@ -109,44 +109,41 @@ class Listener } /** - * Change the orientation of the listener (the point - * he must look at). - * The default target is (0, 0, -1) + * Change the orientation of the listener + * The default direction is (0, 0, -1) * * Params: - * targetX = X position of the point the listener must look at - * targetY = X position of the point the listener must look at - * targetZ = X position of the point the listener must look at + * directionX = X component of the listener's direction + * directionY = Y component of the listener's direction + * directionZ = Z component of the listener's direction */ - static void setTarget(float targetX, float targetY, float targetZ) + static void setDirection(float directionX, float directionY, float directionZ) { - sfListener_SetTarget(targetX, targetY, targetZ); + sfListener_SetDirection(directionX, directionY, directionZ); } /** - * Change the orientation of the listener (the point - * he must look at). - * The default target is (0, 0, -1) + * Change the orientation of the listener + * The default direction is (0, 0, -1) * * Params: - * target = Position of the point the listener must look at + * direction = Position of the point the listener must look at */ - static void setTarget(Vector3f position) + static void setDirection(Vector3f position) { - sfListener_SetTarget(position.x, position.y, position.z); + sfListener_SetDirection(position.x, position.y, position.z); } /** - * Get the current orientation of the listener (the point - * he's looking at) + * Get the current orientation of the listener * * Returns: * Position of the point the listener is looking at */ - static Vector3f getTarget() + static Vector3f getDirection() { Vector3f ret; - sfListener_GetTarget(&ret.x, &ret.y, &ret.z); + sfListener_GetDirection(&ret.x, &ret.y, &ret.z); return ret; } @@ -160,15 +157,15 @@ private: typedef float function() pf_sfListener_GetGlobalVolume; typedef void function(float, float, float) pf_sfListener_SetPosition; typedef void function(float*, float*, float*) pf_sfListener_GetPosition; - typedef void function(float, float, float) pf_sfListener_SetTarget; - typedef void function(float*, float*, float*) pf_sfListener_GetTarget; + typedef void function(float, float, float) pf_sfListener_SetDirection; + typedef void function(float*, float*, float*) pf_sfListener_GetDirection; static pf_sfListener_SetGlobalVolume sfListener_SetGlobalVolume; static pf_sfListener_GetGlobalVolume sfListener_GetGlobalVolume; static pf_sfListener_SetPosition sfListener_SetPosition; static pf_sfListener_GetPosition sfListener_GetPosition; - static pf_sfListener_SetTarget sfListener_SetTarget; - static pf_sfListener_GetTarget sfListener_GetTarget; + static pf_sfListener_SetDirection sfListener_SetDirection; + static pf_sfListener_GetDirection sfListener_GetDirection; } static this() @@ -182,7 +179,7 @@ private: sfListener_GetGlobalVolume = cast(pf_sfListener_GetGlobalVolume)dll.getSymbol("sfListener_GetGlobalVolume"); sfListener_SetPosition = cast(pf_sfListener_SetPosition)dll.getSymbol("sfListener_SetPosition"); sfListener_GetPosition = cast(pf_sfListener_GetPosition)dll.getSymbol("sfListener_GetPosition"); - sfListener_SetTarget = cast(pf_sfListener_SetTarget)dll.getSymbol("sfListener_SetTarget"); - sfListener_GetTarget = cast(pf_sfListener_GetTarget)dll.getSymbol("sfListener_GetTarget"); + sfListener_SetDirection = cast(pf_sfListener_SetDirection)dll.getSymbol("sfListener_SetDirection"); + sfListener_GetDirection = cast(pf_sfListener_GetDirection)dll.getSymbol("sfListener_GetDirection"); } } diff --git a/DSFML/import/dsfml/audio/soundstream.d b/DSFML/import/dsfml/audio/soundstream.d index 210d6d307..4ac501627 100644 --- a/DSFML/import/dsfml/audio/soundstream.d +++ b/DSFML/import/dsfml/audio/soundstream.d @@ -146,6 +146,17 @@ abstract class SoundStream : SoundSource!("sfSoundStream") return sfSoundStream_GetPlayingOffset(m_ptr); } + /** + * Set the current playing position of a music + * + * Params: + * timeOffset = New playing position, expressed in seconds + */ + void setPlayingOffset(float timeOffset) + { + sfSoundStream_SetPlayingOffset(m_ptr, timeOffset); + } + /** * Tell whether or not the stream is looping * @@ -188,7 +199,7 @@ protected: m_channelsCount = channelsCount; m_sampleRate = sampleRate; - m_ptr = sfSoundStream_Create(&externalOnStart, &externalOnGetData, channelsCount, sampleRate, &m_id); // TODO: hack + m_ptr = sfSoundStream_Create(&externalOnGetData, &externalOnSeek, channelsCount, sampleRate, &m_id); // TODO: hack m_mutex = new Mutex(); @@ -222,7 +233,8 @@ protected: private: // Called sync when user calling play() - extern(C) static int externalOnStart(void* user) + // FIXME: this needs to be transformed from OnStart to OnSeek + extern(C) static void externalOnSeek(float t, void* user) { int id; if ((id = *cast(int*) user) in s_instances) @@ -230,7 +242,7 @@ private: SoundStream temp = s_instances[id]; return (temp.m_flag = temp.onStart()); } - return true; +// return true; } // C Thread callback (no allocation can be done) @@ -324,10 +336,10 @@ private: { struct sfSoundStreamChunk{ short* Samples; uint NbSamples; } - alias int function(void*) sfSoundStreamStartCallback; + alias void function(float, void*) sfSoundStreamSeekCallback; alias int function (sfSoundStreamChunk*, void*) sfSoundStreamGetDataCallback; - alias void* function(sfSoundStreamStartCallback, sfSoundStreamGetDataCallback, uint, uint, void*) pf_sfSoundStream_Create; + alias void* function(sfSoundStreamGetDataCallback, sfSoundStreamSeekCallback, uint, uint, void*) pf_sfSoundStream_Create; alias void function(void*) pf_sfSoundStream_Destroy; alias void function(void*) pf_sfSoundStream_Play; alias void function(void*) pf_sfSoundStream_Pause; @@ -335,6 +347,7 @@ private: alias uint function(void*) pf_sfSoundStream_GetChannelsCount; alias uint function(void*) pf_sfSoundStream_GetSampleRate; alias float function(void*) pf_sfSoundStream_GetPlayingOffset; + alias void function(void*, float) pf_sfSoundStream_SetPlayingOffset; alias int function(void*) pf_sfSoundStream_GetLoop; alias void function(void*, int) pf_sfSoundStream_SetLoop; @@ -347,6 +360,7 @@ private: static pf_sfSoundStream_GetChannelsCount sfSoundStream_GetChannelsCount; static pf_sfSoundStream_GetSampleRate sfSoundStream_GetSampleRate; static pf_sfSoundStream_GetPlayingOffset sfSoundStream_GetPlayingOffset; + static pf_sfSoundStream_SetPlayingOffset sfSoundStream_SetPlayingOffset; static pf_sfSoundStream_GetLoop sfSoundStream_GetLoop; static pf_sfSoundStream_SetLoop sfSoundStream_SetLoop; } @@ -366,6 +380,7 @@ private: sfSoundStream_GetChannelsCount = cast(pf_sfSoundStream_GetChannelsCount)dll.getSymbol("sfSoundStream_GetChannelsCount"); sfSoundStream_GetSampleRate = cast(pf_sfSoundStream_GetSampleRate)dll.getSymbol("sfSoundStream_GetSampleRate"); sfSoundStream_GetPlayingOffset = cast(pf_sfSoundStream_GetPlayingOffset)dll.getSymbol("sfSoundStream_GetPlayingOffset"); + sfSoundStream_SetPlayingOffset = cast(pf_sfSoundStream_SetPlayingOffset)dll.getSymbol("sfSoundStream_SetPlayingOffset"); sfSoundStream_GetLoop = cast(pf_sfSoundStream_GetLoop)dll.getSymbol("sfSoundStream_GetLoop"); sfSoundStream_SetLoop = cast(pf_sfSoundStream_SetLoop)dll.getSymbol("sfSoundStream_SetLoop"); }