forked from MoonsideGames/FAudioGMS
update track position API
parent
d207d6ca0c
commit
8c26f79d28
|
@ -1131,7 +1131,7 @@ void FAudioGMS_SoundInstance_Set3DPosition(double soundInstanceID, double x, dou
|
|||
}
|
||||
}
|
||||
|
||||
void FAudioGMS_SoundInstance_SetTrackPosition(double soundInstanceID, double trackPositionInSeconds)
|
||||
void FAudioGMS_SoundInstance_SetTrackPositionInSeconds(double soundInstanceID, double trackPositionInSeconds)
|
||||
{
|
||||
RETURN_ON_NULL_DEVICE()
|
||||
FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID);
|
||||
|
@ -1143,16 +1143,18 @@ void FAudioGMS_SoundInstance_SetTrackPosition(double soundInstanceID, double tra
|
|||
FAudioGMS_SoundState currentState = instance->soundState;
|
||||
if (currentState == SoundState_Playing)
|
||||
{
|
||||
FAudioGMS_INTERNAL_SoundInstance_Stop(instance);
|
||||
FAudioSourceVoice_Stop(instance->handle, 0, 0);
|
||||
FAudioSourceVoice_FlushSourceBuffers(instance->handle);
|
||||
}
|
||||
|
||||
if (instance->isStatic)
|
||||
{
|
||||
instance->soundData.staticSound->buffer.PlayBegin = instance->soundData.staticSound->samplesPerSecond * trackPositionInSeconds;
|
||||
instance->soundData.staticSound->buffer.PlayBegin = sampleFrame;
|
||||
}
|
||||
else
|
||||
{
|
||||
stb_vorbis_seek(instance->soundData.streamingSound.fileHandle, sampleFrame);
|
||||
FAudioGMS_INTERNAL_SoundInstance_AddBuffer(instance);
|
||||
}
|
||||
|
||||
if (currentState == SoundState_Playing)
|
||||
|
@ -1230,6 +1232,23 @@ double FAudioGMS_SoundInstance_GetTrackLengthInSeconds(double soundInstanceID)
|
|||
}
|
||||
}
|
||||
|
||||
double FAudioGMS_SoundInstance_GetTrackPositionInSeconds(double soundInstanceID)
|
||||
{
|
||||
RETURN_ON_NULL_DEVICE(-1.0)
|
||||
FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID);
|
||||
|
||||
if (instance != NULL)
|
||||
{
|
||||
uint32_t sampleFrame = instance->handle->src.curBufferOffset / sizeof(float);
|
||||
return sampleFrame / instance->format.nSamplesPerSec;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log("Invalid sound instance!");
|
||||
return -1.0;
|
||||
}
|
||||
}
|
||||
|
||||
void FAudioGMS_SetListenerPosition(double x, double y, double z)
|
||||
{
|
||||
RETURN_ON_NULL_DEVICE()
|
||||
|
|
|
@ -58,7 +58,7 @@ FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetPan(double soundInstanceID, double
|
|||
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetPitch(double soundInstanceID, double pitch);
|
||||
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetVolume(double soundInstanceID, double volume);
|
||||
FAUDIOGMSAPI void FAudioGMS_SoundInstance_Set3DPosition(double soundInstanceID, double x, double y, double z);
|
||||
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetTrackPosition(double soundInstanceID, double trackPositionInSeconds);
|
||||
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetTrackPositionInSeconds(double soundInstanceID, double trackPositionInSeconds);
|
||||
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetVolumeOverTime(double soundInstanceID, double volume, double milliseconds);
|
||||
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetLowPassFilter(double soundInstanceID, double lowPassFilter);
|
||||
FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetHighPassFilter(double soundInstanceID, double highPassFilter);
|
||||
|
@ -67,6 +67,7 @@ FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetBandPassFilter(double soundInstance
|
|||
FAUDIOGMSAPI double FAudioGMS_SoundInstance_GetPitch(double soundInstanceID);
|
||||
FAUDIOGMSAPI double FAudioGMS_SoundInstance_GetVolume(double soundInstanceID);
|
||||
FAUDIOGMSAPI double FAudioGMS_SoundInstance_GetTrackLengthInSeconds(double soundInstanceID);
|
||||
FAUDIOGMSAPI double FAudioGMS_SoundInstance_GetTrackPositionInSeconds(double soundInstanceID);
|
||||
|
||||
FAUDIOGMSAPI void FAudioGMS_SoundInstance_Destroy(double soundInstanceID);
|
||||
FAUDIOGMSAPI void FAudioGMS_SoundInstance_DestroyWhenFinished(double soundInstanceID);
|
||||
|
|
Loading…
Reference in New Issue