summaryrefslogtreecommitdiff
path: root/utils/frameTimer.lua
blob: baecd65da2dbd6214c2c0cf81d397e7df49aa4f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
local FrameTimer = {}
FrameTimer.__index = FrameTimer

function FrameTimer:new(frameRate, totalFrames)
    local obj = {
        frameRate = frameRate or 10,
        elapsedTime = 0,
        currentFrame = 1,
        totalFrames = totalFrames or 1
    }
    setmetatable(obj, FrameTimer)

    self.frameTime = 1 / obj.frameRate

    return obj
end

function FrameTimer:update(dt)
    self.elapsedTime = self.elapsedTime + dt
    if self.elapsedTime >= self.frameTime then
        self.elapsedTime = self.elapsedTime - self.frameTime
        self.currentFrame = self.currentFrame + 1
        if self.currentFrame > self.totalFrames then
            self.currentFrame = 1   -- repeat
        end
    end
end

return FrameTimer