Heh, I'll post it here
Type DeltaTime Global DeltaTList:TList Field OldTime:Double Field ElapsedTime:Double Field Delta:Double Field dFps:Double Field dDelta:Double Field CurrFps:Double Field FPSCounter:Double Field CurrTime:Double Field CheckTime:Double Method New () If DeltaTList = Null Then DeltaTList = New TList DeltaTList.AddLast Self End Method Method Destroy () DeltaTList.Remove Self End Method Function Create:DeltaTime(Fps:Double) Local dTime:DeltaTime = New DeltaTime dTime.Delta = 1 dTime.dFps = Fps dTime.dDelta = 1000/Fps Return dTime End Function Function Update() Local dTime:DeltaTime For dTime:DeltaTime = EachIn DeltaTList dTime.CurrTime = MilliSecs() dTime.ElapsedTime = dTime.CurrTime - dTime.OldTime dTime.OldTime = dTime.CurrTime If dTime.CurrTime > dTime.CheckTime dTime.CheckTime = dTime.CurrTime + 1000 dTime.CurrFps = dTime.FPSCounter dTime.FPSCounter = 0 Else dTime.FPSCounter:+1 EndIf Next End Function Function FPS(dTime:DeltaTime) Return dTime.CurrFps End Function Function CurrDelta:Double(dTime:DeltaTime) Return dTime.ElapsedTime/dTime.dDelta End Function End Type