Skip to content

Commit abe9cc6

Browse files
committed
Update sample
1 parent 6e3acd5 commit abe9cc6

2 files changed

Lines changed: 33 additions & 4 deletions

File tree

Delphi/Get data/Unit1.dfm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ object Main: TMain
1414
Font.Style = []
1515
OldCreateOrder = False
1616
Position = poScreenCenter
17+
OnClose = FormClose
1718
OnCreate = FormCreate
1819
PixelsPerInch = 96
1920
TextHeight = 13

Delphi/Get data/Unit1.pas

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ TMain = class(TForm)
5454
procedure FormCreate(Sender: TObject);
5555
procedure Button1Click(Sender: TObject);
5656
procedure Button2Click(Sender: TObject);
57+
procedure FormClose(Sender: TObject; var Action: TCloseAction);
5758
private
5859
{ Private declarations }
5960
public
@@ -98,15 +99,28 @@ _Controller = record
9899

99100
var
100101
Main: TMain;
102+
DriverPath: string;
103+
DllHandle: HMODULE;
104+
GetHMDData: function(out myHMD: THMD): DWORD; stdcall;
105+
GetControllersData: function(out myController, myController2: TController): DWORD; stdcall;
106+
SetControllerData: function (dwIndex: integer; MotorSpeed: dword): DWORD; stdcall;
107+
SetCentering: function (dwIndex: integer): DWORD; stdcall;
101108

102109
implementation
103110

104111
{$R *.dfm}
105112

106-
function GetHMDData(out myHMD: THMD): DWORD; stdcall; external 'TOVR.dll' name 'GetHMDData';
107-
function GetControllersData(out myController, myContoller2: TController): DWORD; stdcall; external 'TOVR.dll' name 'GetControllersData';
108-
function SetControllerData(dwIndex: integer; MotorSpeed: dword): DWORD; stdcall; external 'TOVR.dll' name 'SetControllerData';
109-
function SetCentering(dwIndex: integer): DWORD; stdcall; external 'TOVR.dll' name 'SetCentering';
113+
procedure GetDriverPath;
114+
var
115+
Reg: TRegistry;
116+
begin
117+
Reg:=TRegistry.Create;
118+
Reg.RootKey:=HKEY_CURRENT_USER;
119+
if Reg.OpenKey('\Software\TrueOpenVR', false) = false then Exit;
120+
if FileExists(Reg.ReadString('Driver')) = false then Exit;
121+
DriverPath:=Reg.ReadString('Driver');
122+
Reg.Free;
123+
end;
110124

111125
procedure TMain.GetBtnClick(Sender: TObject);
112126
var
@@ -206,6 +220,15 @@ procedure TMain.FormCreate(Sender: TObject);
206220
begin
207221
Label32.Caption:='TOVR - Open Source Virtual Reality' + #13#10 + 'standard for all devices';
208222
Application.Title:=Caption;
223+
224+
GetDriverPath;
225+
if FileExists(DriverPath) then begin
226+
DllHandle:=LoadLibrary(PChar(DriverPath));
227+
@GetHMDData:=GetProcAddress(DllHandle, 'GetHMDData');
228+
@GetControllersData:=GetProcAddress(DllHandle, 'GetControllersData');
229+
@SetControllerData:=GetProcAddress(DllHandle, 'SetControllerData');
230+
@SetCentering:=GetProcAddress(DllHandle, 'SetCentering');
231+
end;
209232
end;
210233

211234
procedure TMain.Button1Click(Sender: TObject);
@@ -221,4 +244,9 @@ procedure TMain.Button2Click(Sender: TObject);
221244
SetControllerData(IDController2, 42517);
222245
end;
223246

247+
procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction);
248+
begin
249+
FreeLibrary(DllHandle);
250+
end;
251+
224252
end.

0 commit comments

Comments
 (0)