Estou programando um pouco do Music Engine para o meu jogo em C # e XNA, e um aspecto disso é a possibilidade de repetir uma seção de uma música. Por exemplo, minha música tem um intropart e, quando chegou ao fim (ou qualquer outro ponto específico), ela volta para onde o intropart acabou. (A - B - B - B ...)
Agora estou usando o IrrKlank, que está funcionando perfeitamente, sem falhas, mas tenho um problema:
O ponto para onde voltar é um pouco impreciso. Aqui está um exemplo de código:
public bool Passed(float time)
{
if ( PlayPosition >= time )
return true;
return false;
}
//somewhere else
if( song.Passed( 10.0f ) )
song.JumpTo( 5.0f );
Agora, o problema é que a música passa os 10 segundos, mas toca alguns milissegundos até cerca de 10,1f e depois pula para 5 segundos. Não é tão dramático, mas muito incorreto para minhas necessidades. Eu tentei consertar assim:
public bool Passed( float time )
{
if( PlayPosition + 3 * dt >= time && PlayPosition <= time )
return true;
return false;
}
(dt é o tempo delta, o tempo decorrido desde o último quadro)
Mas não acho que seja uma boa solução para isso.
Espero que você possa entender meu problema (e meu inglês, yay / o /) e me ajudar :)