/// <summary> /// Sets the loop points within the channel. /// </summary> /// <param name="points">A <see cref="LoopPoints" /> instance describing the points.</param> /// <remarks> /// <para> /// If a sound was 44100 samples long and you wanted to loop the whole sound, the loop start would be <c>0</c>, /// and the loop end would be 44099, <i>not</i> 44100. You wouldn't use milliseconds in this case because they are /// not sample accurate. /// </para> /// <para> /// <i>Issues with streamed audio:</i> /// </para> /// <para> /// When changing the loop count, sounds created with <see cref="O:FMOD.NET.Core.FmodSystem.CreateStream" /> or /// <see cref="FMOD.NET.Enumerations.Mode.CreateStream" /> may have already been pre-buffered and executed their /// loop /// logic ahead of time before this call was even made. This is dependant on the size of the sound versus the size /// of the stream decode buffer (see <see cref="CreateSoundExInfo" />). If this happens, you may need to reflush /// the stream buffer by calling <see cref="SetPosition" />. Note this will usually only happen if you have sounds /// or loop points that are smaller than the stream decode buffer size. /// </para> /// </remarks> /// <seealso cref="O:FMOD.NET.Core.Channel.GetLoopPoints" /> /// <seealso cref="LoopPoints" /> /// <seealso cref="TimeUnit" /> /// <seealso cref="O:FMOD.NET.Core.FmodSystem.CreateStream" /> /// <seealso cref="Enumerations.Mode" /> public void SetLoopPoints(LoopPoints points) { SetLoopPoints(points.LoopStart, points.LoopEnd, points.StartTimeUnit, points.EndTimeUnit); }
private static extern void buffer_setLoopPoints(IntPtr dm, LoopPoints points, ref IntPtr exceptionPointer);