summaryrefslogtreecommitdiff
path: root/fpcsrc/tests/webtbs/tw2274.pp
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.