( seconds = 0, after?: ThreadGenerator, )
| 19 | * @param after - An optional task to be run after the function completes. |
| 20 | */ |
| 21 | export function* waitFor( |
| 22 | seconds = 0, |
| 23 | after?: ThreadGenerator, |
| 24 | ): ThreadGenerator { |
| 25 | const thread = useThread(); |
| 26 | const step = usePlayback().framesToSeconds(1); |
| 27 | |
| 28 | const targetTime = thread.time() + seconds; |
| 29 | // subtracting the step is not necessary, but it keeps the thread time ahead |
| 30 | // of the project time. |
| 31 | while (targetTime - step > thread.fixed) { |
| 32 | yield; |
| 33 | } |
| 34 | thread.time(targetTime); |
| 35 | |
| 36 | if (after) { |
| 37 | yield* after; |
| 38 | } |
| 39 | } |
no test coverage detected