blob: bd03754dafd4bd0304b18fbfc3377fe063b5be97 (
plain) (
blame)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
unit UTime;
interface
{$IFDEF FPC}
{$MODE Delphi}
{$ENDIF}
{$I switches.inc}
type
TTime = class
constructor Create;
function GetTime: real;
end;
procedure CountSkipTimeSet;
procedure CountSkipTime;
procedure CountMidTime;
var
USTime : TTime;
TimeNew : int64;
TimeOld : int64;
TimeSkip : real;
TimeMid : real;
TimeMidTemp : int64;
implementation
uses
sdl,
ucommon;
const
cSDLCorrectionRatio = 1000;
(*
BEST Option now ( after discussion with whiteshark ) seems to be to use SDL
timer functions...
SDL_delay
SDL_GetTicks
http://www.gamedev.net/community/forums/topic.asp?topic_id=466145&whichpage=1%EE%8D%B7
*)
constructor TTime.Create;
begin
inherited;
CountSkipTimeSet;
end;
procedure CountSkipTimeSet;
begin
TimeNew := SDL_GetTicks();
end;
procedure CountSkipTime;
begin
TimeOld := TimeNew;
TimeNew := SDL_GetTicks();
TimeSkip := (TimeNew-TimeOld) / cSDLCorrectionRatio;
end;
procedure CountMidTime;
begin
TimeMidTemp := SDL_GetTicks();
TimeMid := (TimeMidTemp - TimeNew) / cSDLCorrectionRatio;
end;
function TTime.GetTime: real;
begin
Result := SDL_GetTicks() / cSDLCorrectionRatio;
end;
end.
|