blob: 3929aa4469ae574cd788fcbb4fb73ffa37251592 (
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
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
|
{ Source provided for Free Pascal Bug Report 2274 }
{ Submitted by "Sergey Kosarevsky" on 2002-12-21 }
{ e-mail: netsurfer@au.ru }
Unit tw2274;
Interface
Type Lfloat=Single;
Type pTimer=^tTimer;
tTimer=Object
Private
RecepCyclesPerSecond:Lfloat;Static; // 1/CyclesPerSecond
OldCycles:Int64;
NewCycles:Int64;
WorldUpTime:Lfloat;
Public
Constructor Init;
// tTimer
Function GetDeltaSeconds:Lfloat;
Function GetWorldTime:Lfloat; // in seconds
Function GetCycles:Int64;Static;
Function GetSeconds:Lfloat;
End;
Implementation
Constructor tTimer.Init;
Begin
RecepCyclesPerSecond:=0;
OldCycles:=GetCycles;
End;
Function tTimer.GetWorldTime:Lfloat;
Begin
Exit(GetSeconds-WorldUpTime);
End;
Function tTimer.GetCycles:Int64;
begin
GetCycles:=0;
End;
Function tTimer.GetDeltaSeconds:Lfloat;
Begin
NewCycles:=GetCycles;
GetDeltaSeconds:=(NewCycles-OldCycles)*RecepCyclesPerSecond;
OldCycles:=NewCycles;
End;
Function tTimer.GetSeconds:Lfloat;
Begin
Exit(GetCycles*RecepCyclesPerSecond);
End;
Begin
End.
|