Skip to content

Commit cfeff84

Browse files
DuFF14rpavlik
authored andcommitted
Added "swap_eyes" handling.
1 parent 0589d62 commit cfeff84

2 files changed

Lines changed: 24 additions & 10 deletions

File tree

OSVR-Unity/Assets/OSVRUnity/src/DeviceDescriptor.cs

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,12 @@ public string Note
5555
get { return _note; }
5656
set { _note = value; }
5757
}
58+
private int _numDisplays = 1;
59+
public int NumDisplays
60+
{
61+
get { return _numDisplays; }
62+
set { _numDisplays = value; }
63+
}
5864
//field of view
5965
private float _monocularHorizontal = 60f;
6066
public float MonocularHorizontal
@@ -105,12 +111,13 @@ public string DisplayMode
105111
get { return _displayMode; }
106112
set { _displayMode = value; }
107113
}
108-
private int _numDisplays = 1;
109-
public int NumDisplays
114+
private int _swapEyes = 0;
115+
public int SwapEyes
110116
{
111-
get { return _numDisplays; }
112-
set { _numDisplays = value; }
117+
get { return _swapEyes; }
118+
set { _swapEyes = value; }
113119
}
120+
114121
//distortion
115122
private float _k1Red = 0;
116123
public float K1Red
@@ -166,8 +173,8 @@ public int Rotate180
166173
//constructors
167174
public DeviceDescriptor() { }
168175
public DeviceDescriptor(string vendor, string model, string version, int numDisplays, string note, float monocularHorizontal,
169-
float monocularVertical, float overlapPercent, float pitchTilt, int width, int height, int videoInputs, string displayMode, float k1Red,
170-
float k1Green, float k1Blue, float leftRoll, float rightRoll, float centerProjX, float centerProjY, int rotate180)
176+
float monocularVertical, float overlapPercent, float pitchTilt, int width, int height, int videoInputs, string displayMode, int swapEyes,
177+
float k1Red, float k1Green, float k1Blue, float leftRoll, float rightRoll, float centerProjX, float centerProjY, int rotate180)
171178
{
172179
this._vendor = vendor;
173180
this._model = model;
@@ -182,6 +189,7 @@ public DeviceDescriptor(string vendor, string model, string version, int numDisp
182189
this._height = height;
183190
this._videoInputs = videoInputs;
184191
this._displayMode = displayMode;
192+
this._swapEyes = swapEyes;
185193
this._k1Red = k1Red;
186194
this._k1Green = k1Green;
187195
this._k1Blue = k1Blue;
@@ -213,6 +221,7 @@ public override string ToString()
213221
.Append("height = ").AppendLine(Height.ToString())
214222
.Append("video_inputs = ").AppendLine(VideoInputs.ToString())
215223
.Append("display_mode = ").AppendLine(DisplayMode)
224+
.Append("swapEyes = ").AppendLine(SwapEyes.ToString())
216225
.Append("\nDISTORTION\n")
217226
.Append("k1_red = ").AppendLine(K1Red.ToString())
218227
.Append("k1_green = ").AppendLine(K1Green.ToString())
@@ -301,7 +310,10 @@ public static DeviceDescriptor Parse(string deviceDescriptorJson)
301310
break;
302311
case "display_mode":
303312
deviceDescriptor.DisplayMode = reader.ReadAsString();
304-
break;
313+
break;
314+
case "swapeyes":
315+
deviceDescriptor.SwapEyes = int.Parse(reader.ReadAsString());
316+
break;
305317
case "k1_red":
306318
deviceDescriptor.K1Red = float.Parse(reader.ReadAsString());
307319
break;

OSVR-Unity/Assets/OSVRUnity/src/VRHead.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public class VRHead : MonoBehaviour
4848
#region Private Variables
4949
private VREye _leftEye;
5050
private VREye _rightEye;
51+
private bool swapEyes = false;
5152
private float _previousStereoAmount;
5253
private ViewMode _previousViewMode;
5354
private Camera _camera;
@@ -146,8 +147,8 @@ void UpdateStereoAmount()
146147
if (stereoAmount != _previousStereoAmount)
147148
{
148149
stereoAmount = Mathf.Clamp(stereoAmount, 0, 1);
149-
_rightEye.cachedTransform.localPosition = Vector3.right * (maxStereo * stereoAmount);
150-
_leftEye.cachedTransform.localPosition = Vector3.left * (maxStereo * stereoAmount);
150+
_rightEye.cachedTransform.localPosition = (swapEyes ? Vector3.left : Vector3.right) * (maxStereo * stereoAmount);
151+
_leftEye.cachedTransform.localPosition = (swapEyes ? Vector3.right : Vector3.left) * (maxStereo * stereoAmount);
151152
_previousStereoAmount = stereoAmount;
152153
}
153154
}
@@ -206,7 +207,7 @@ void Init()
206207
/// </summary>
207208
private void GetDeviceDescription()
208209
{
209-
_deviceDescriptor = GetComponent<DisplayInterface>().GetDeviceDescription();
210+
_deviceDescriptor = GetComponent<DisplayInterface>().GetDeviceDescription();
210211
if (_deviceDescriptor != null)
211212
{
212213
switch (_deviceDescriptor.DisplayMode)
@@ -220,6 +221,7 @@ private void GetDeviceDescription()
220221
viewMode = ViewMode.stereo;
221222
break;
222223
}
224+
swapEyes = _deviceDescriptor.SwapEyes > 0; //swap left and right eye positions?
223225
stereoAmount = Mathf.Clamp(_deviceDescriptor.OverlapPercent, 0, 100);
224226
SetResolution(_deviceDescriptor.Width, _deviceDescriptor.Height); //set resolution before FOV
225227
Camera.fieldOfView = Mathf.Clamp(_deviceDescriptor.MonocularVertical, 0, 180); //unity camera FOV is vertical

0 commit comments

Comments
 (0)