---
# System prepended metadata

title: 'FrameTimer [[src][src]]'
tags: [FrameTimer]

---

# FrameTimer [[src][src]]

###### tags: `FrameTimer`

[src]:
https://github.com/latte488/rudps-cpp/blob/master/include/frame_timer.hpp

フレーム毎に更新させるタイマーです。タイマーの精度はあまり高くありませんが、代わりに高速です。



## Dependence
 - [Frame][Frame-hackmd]
 
[Frame-doc]:
https://hackmd.io/@latte488/HyqvV0mSU

## Method

### void *Setup*(long nano) noexcept
`nano`をナノ秒としてタイマーに設定します。

### void *Update*([Frame][Frame-doc]& frame) noexcept
`frame`でタイマーを更新する.
`frame`はフレーム毎に更新されている必要があります。

### void *Reset*() noexcept
タイマーをSetupで設定された時間にリセットします.

### bool *IsExpired*() const noexcept
タイマーが時間切れなら`true`,時間切れでないなら`false`を返します.


## Example
この例では約１秒毎に秒数を約８秒まで出力します。

```cpp
#include <stdio.h>

#include <frame_timer.hpp>

int main()
{
    Frame frame;
    FrameTimer timer;

    timer.Setup(1e9);

    size_t s = 0;

    while (s <= 8)
    {
        frame.Update();
        timer.Update(frame);

        if (timer.IsExpired())
        {
            timer.Reset();
            printf("%lus\n", s++);
        }
    }

    return 0;
}
```