fpc/tests/webtbs/tw2274.pp
2010-01-08 18:01:28 +00:00

58 lines
1.1 KiB
ObjectPascal

{ 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.