Stop using private variables in virtual functions please!

@Minus_Kelvin This is a minor issue, but I did what you suggested above and put in a MaxSamples count for generation. When it stops playing, there is an audible ‘click’ at the end of the stream. My code (borrowing your sine wave :P) below:



void UExploreSoundWaveData::GenerateAudioData(USoundWaveProcedural * InWave, int32 SamplesNeeded) {
if (SamplesRemaining > 0) {
		const int32 QueuedSamples = GetAvailableAudioByteCount() / sizeof(int16);
		int32 SamplesRequired = SamplesNeeded - QueuedSamples;
		if (SamplesRequired > SamplesRemaining) {
			SamplesRequired = SamplesRemaining;
			SamplesRemaining = 0;
		}

		SampleData.Reset(SamplesRequired);

		for (int32 i = 0; i < SamplesRequired; ++i)
		{
			float SampleValueFloat = SineOsc.NextSample();
			int16 SampleValue = (int16)(32767.0f * SampleValueFloat);
			SampleData.Add(SampleValue);
		}
		SamplesRemaining -= SamplesRequired;
		// Now call the audio queue to queue up some random data
		InWave->QueueAudio((uint8*)SampleData.GetData(), SampleData.Num() * sizeof(int16));
	}
}


I’ll be playing with the stream a lot more to see what I can do.