Je programme un petit moteur de musique pour mon jeu en C # et XNA, et un aspect en est la possibilité de boucler une section d'une chanson. Par exemple, ma chanson a un intropart, et lorsque la chanson a atteint la fin (ou tout autre point spécifique), elle saute là où l'intropart est juste terminée. (A - B - B - B ...)
Maintenant, j'utilise IrrKlank, qui fonctionne parfaitement, sans aucune lacune, mais j'ai un problème:
Le point où revenir en arrière est un peu inexact. Voici un exemple de code:
public bool Passed(float time)
{
if ( PlayPosition >= time )
return true;
return false;
}
//somewhere else
if( song.Passed( 10.0f ) )
song.JumpTo( 5.0f );
Maintenant, le problème est que la chanson passe les 10 secondes, mais joue quelques millisecondes jusqu'à 10.1f environ, puis passe à 5 secondes. Ce n'est pas si dramatique, mais très incorrect pour mes besoins. J'ai essayé de le réparer comme ça:
public bool Passed( float time )
{
if( PlayPosition + 3 * dt >= time && PlayPosition <= time )
return true;
return false;
}
(dt est le temps delta, le temps écoulé depuis la dernière image)
Mais je ne pense pas que ce soit une bonne solution pour cela.
J'espère que vous pouvez comprendre mon problème (et mon anglais, yay / o /) et m'aider :)