Skip to content

Commit 0dbc014

Browse files
committed
update
1 parent 277f1b9 commit 0dbc014

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

OpenVR/samples/driver_sample/driver_sample.cpp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ int bytes_read;
8181
struct sockaddr_in from;
8282
int fromlen;
8383
bool SocketActivated = false;
84+
bool bKeepReading = false;
8485

8586
//-----------------------------------------------------------------------------
8687
// Purpose:
@@ -220,6 +221,10 @@ class CSampleDeviceDriver : public vr::ITrackedDeviceServerDriver, public vr::IV
220221
local.sin_addr.s_addr = INADDR_ANY;
221222

222223
socketS = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
224+
225+
u_long nonblocking_enabled = TRUE;
226+
ioctlsocket(socketS, FIONBIO, &nonblocking_enabled);
227+
223228
if (socketS != INVALID_SOCKET) {
224229

225230
iResult = bind(socketS, (sockaddr*)&local, sizeof(local));
@@ -402,7 +407,7 @@ class CSampleDeviceDriver : public vr::ITrackedDeviceServerDriver, public vr::IV
402407
}
403408

404409
double DegToRad(double f){
405-
return f * (3.14 / 180);
410+
return f * (3.14159265358979323846 / 180);
406411
}
407412

408413
virtual DriverPose_t GetPose()
@@ -417,13 +422,25 @@ class CSampleDeviceDriver : public vr::ITrackedDeviceServerDriver, public vr::IV
417422

418423
//Read UDP socket with OpenTrack data
419424
if (SocketActivated == true) {
425+
bKeepReading = true;
426+
while (bKeepReading) {
420427
memset(&OpenTrackPacket, 0, sizeof(OpenTrackPacket));
421-
bytes_read = recvfrom(socketS, (char*)(&OpenTrackPacket), sizeof(OpenTrackPacket), 0, (sockaddr*)&from, &fromlen);
428+
bytes_read = recvfrom(
429+
socketS,
430+
(char*)(&OpenTrackPacket),
431+
sizeof(OpenTrackPacket),
432+
0,
433+
(sockaddr*)&from,
434+
&fromlen);
422435

423436
if (bytes_read > 0) {
424437
Yaw = DegToRad(OpenTrackPacket.yaw);
425438
Pitch = DegToRad(OpenTrackPacket.pitch);
426439
Roll = DegToRad(OpenTrackPacket.roll);
440+
}
441+
else {
442+
bKeepReading = false;
443+
}
427444
}
428445
}
429446

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Input lag of head tracking (need self thread for [read WinSock](https://github.c
2525

2626
## Настройка
2727
1. Переместить и заменить папку "null", из архива, в папку "...\Steam\steamapps\common\SteamVR\drivers\null".
28-
2. Переместить и заменить файл "steamvr.vrsettings", из архива, в папке "...\Steam\config".
28+
2. Переместить и заменить файл "steamvr.vrsettings", из архива, в папку "...\Steam\config".
2929
3. Загрузить, установить и настроить [OpenTrack](https://github.com/opentrack/opentrack).<br><br>
3030
Если вы используете Android смартфон, то для трекинга необходимо использовать FreePie IMU, из архива OpenTrack, а для стриминга картинки, с экрана монитора, можно использовать приложение Moonlight (только для Nvidia 600 серии и выше) или любое другое приложение.<br><br>
3131
Если вы используете самодельный VR шлем, который работает как второй монитор, то после запуска SteamVR нажмите клавиши "Shift" + "Win" + "Вправо" для переноса приложения на второй монитор.<br>

0 commit comments

Comments
 (0)