Estoy programando un pequeño Music Engine para mi juego en C # y XNA, y uno de sus aspectos es la posibilidad de repetir una sección de una canción. Por ejemplo, mi canción tiene una intropart, y cuando la canción llegó al final (o cualquier otro punto específico), salta hacia atrás donde acaba la intropart. (A - B - B - B ...)
Ahora estoy usando IrrKlank, que funciona perfectamente, sin espacios, pero tengo un problema:
El punto donde retroceder es un poco impreciso. Aquí hay un código de ejemplo:
public bool Passed(float time)
{
if ( PlayPosition >= time )
return true;
return false;
}
//somewhere else
if( song.Passed( 10.0f ) )
song.JumpTo( 5.0f );
Ahora el problema es que la canción pasa los 10 segundos, pero reproduce algunos milisegundos hasta 10.1f más o menos, y luego salta a 5 segundos. No es tan dramático, pero muy incorrecto para mis necesidades. Traté de arreglarlo así:
public bool Passed( float time )
{
if( PlayPosition + 3 * dt >= time && PlayPosition <= time )
return true;
return false;
}
(dt es el tiempo delta, el tiempo transcurrido desde el último fotograma)
Pero no creo, esa es una buena solución para eso.
Espero que puedas entender mi problema (y mi inglés, yay / o /) y ayudarme :)