La seule façon, à ma connaissance, est d'appeler Graphics.update dans la boucle en question. Le comportement est implémenté dans le code du moteur, et même si tu étais en mesure de modifier le code décompilé de la DLL, c'est très difficile sans expertise en code assembleur.
Optionnellement, tu peux enregistrer la valeur de Time.now et la comparer dans une condition style:
1
2
3
4
5
6
7
8
| t = Time.now
while (something)
do_something
if Time.now - t > 5
Graphics.update
t = Time.now
end
end |
Cette comparaison avec Time.now permet de ne pas rallonger la durée de la boucle inutilement. La valeur 5 correspond à 1 frame ajoutée par 5 secondes, décidée arbitrairement, mais n'importe quoi sous 10 devrait être bon, quoique ça ne changera vraiment pas grand-chose à cette échelle. Tu peux aussi avoir une fonction style safe_loop pour la réutiliser ergonomiquement:
1
2
3
4
5
6
7
8
9
10
| def safe_loop
t = Time.now
while true
yield
if Time.now - t > 5
Graphics.update
t = Time.now
end
end
end |
Et ensuite dans ton code l'utiliser comme une boucle loop do:
1
2
3
4
| safe_loop do
do_something
break if (something)
end |
|