Skip to content

Commit 49970ce

Browse files
committed
Reimplement new JSON settings into experiment
Additionally, add check for the PupilLabs eye tracker before displaying the appropriate button.
1 parent d04794f commit 49970ce

7 files changed

Lines changed: 51 additions & 18 deletions

File tree

Assets/Scripts/HideIfNotPupil.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System;
2+
using ScriptableObjects;
3+
using UnityEngine;
4+
using UXF;
5+
6+
public class HideIfNotPupil : MonoBehaviour
7+
{
8+
[SerializeField] private SessionSettings settings;
9+
10+
public void OnEnable()
11+
{
12+
var sessionSettingsDict = Session.instance.settings.GetDict("SessionSettings");
13+
var tracker = (string) sessionSettingsDict["EyeTracker"];
14+
if(char.ToLower(tracker[0]) != 'p')
15+
{
16+
gameObject.SetActive(false);
17+
}
18+
}
19+
}

Assets/Scripts/HideIfNotPupil.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Scripts/ScriptableObjects/SessionSettings.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public void LoadFromUxfJson()
9494
var sessionSettingsDict = Session.instance.settings.GetDict("SessionSettings");
9595

9696
sessionType = ParseSessionType((string) Session.instance.participantDetails["SessionType"]);
97-
cueType = ParseCueType((string) Session.instance.participantDetails["CueType"]);
97+
cueType = ParseCueType((string) sessionSettingsDict["AttentionCueType"]);
9898
feedbackType = ParseFeedbackType((string) Session.instance.participantDetails["FeedbackType"]);
9999
numTrials = Convert.ToInt32(sessionSettingsDict["NumTrials"]);
100100
fixationTime = Convert.ToSingle(sessionSettingsDict["FixationTimeSeconds"]);
@@ -139,8 +139,8 @@ public void LoadFromUxfJson()
139139
angleErrorTolerance = Convert.ToSingle(sessionSettingsDict["AngleErrorToleranceDegrees"]);
140140
positionErrorTolerance = Convert.ToSingle(sessionSettingsDict["PositionErrorToleranceDegrees"]);
141141

142-
positionStaircaseEnabled = Convert.ToBoolean(Session.instance.participantDetails["LocationalStaircaseEnabled"]);
143-
directionStaircaseEnabled = Convert.ToBoolean(Session.instance.participantDetails["DirectionalStaircaseEnabled"]);
142+
positionStaircaseEnabled = Convert.ToBoolean(sessionSettingsDict["EnableLocationalStaircase"]);
143+
directionStaircaseEnabled = Convert.ToBoolean(sessionSettingsDict["EnableDirectionalStaircase"]);
144144

145145
fixationErrorTolerance = Convert.ToSingle(sessionSettingsDict["FixationErrorToleranceRadiusDegrees"]);
146146
buddyDotsEnabled = Convert.ToBoolean(sessionSettingsDict["EnableBuddyDots"]);
@@ -188,13 +188,13 @@ private static SessionType ParseSessionType(string sessionTypeString)
188188

189189
private static CueType ParseCueType(string cueTypeString)
190190
{
191-
switch (cueTypeString)
191+
switch (char.ToLower(cueTypeString[0]))
192192
{
193-
case "Neutral":
193+
case 'n':
194194
return CueType.Neutral;
195-
case "Feature-based":
195+
case 'f':
196196
return CueType.FeatureBased;
197-
case "Stimulus-based":
197+
case 's':
198198
return CueType.StimulusBased;
199199
default:
200200
return CueType.Neutral;
@@ -203,11 +203,11 @@ private static CueType ParseCueType(string cueTypeString)
203203

204204
private static FeedbackType ParseFeedbackType(string feedbackTypeString)
205205
{
206-
switch (feedbackTypeString)
206+
switch (char.ToLower(feedbackTypeString[0]))
207207
{
208-
case "Directional":
208+
case 'd':
209209
return FeedbackType.Directional;
210-
case "Locational":
210+
case 'l':
211211
return FeedbackType.Locational;
212212
default:
213213
return FeedbackType.Directional;

Assets/Scripts/SelectEyeTracker.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,19 +47,20 @@ public void Start()
4747

4848
public void SelectFromUxf()
4949
{
50-
var tracker = (string) Session.instance.participantDetails["Eyetracker"];
51-
switch (tracker)
50+
var sessionSettingsDict = Session.instance.settings.GetDict("SessionSettings");
51+
var tracker = (string) sessionSettingsDict["EyeTracker"];
52+
switch (char.ToLower(tracker[0]))
5253
{
53-
case "Dummy":
54+
case 'd':
5455
ChosenTracker = _dummyEyeTracker;
5556
selection = ETrackerSelection.Dummy;
5657
break;
57-
case "Pupil Labs":
58+
case 'p':
5859
pupilEyeTracker.SetActive(true);
5960
ChosenTracker = pupilEyeTracker.GetComponent<IEyeTracker>();
6061
selection = ETrackerSelection.PupilLabs;
6162
break;
62-
case "VIVE Pro Eye":
63+
case 'v':
6364
viveProEye.SetActive(true);
6465
ChosenTracker = viveProEye.GetComponent<IEyeTracker>();
6566
selection = ETrackerSelection.ViveProEye;

Assets/Scripts/SessionManager.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ public void StartFirstTrial(InputAction.CallbackContext context)
9696
{
9797
Session.instance.BeginNextTrial();
9898
_sessionStarted = false;
99+
confirmInputAction.onStateDown -= StartFirstTrial;
99100
}
100101
}
101102

@@ -160,7 +161,7 @@ public void CalibratePupilLabs()
160161
else
161162
{
162163
infoText.text =
163-
"PupilLabs tracker disconnected!\n If the tracker was selected in UXF, ensure Pupil Capture is running and try again.";
164+
"PupilLabs tracker disconnected!\n If the tracker was selected in the JSON settings, ensure Pupil Capture is running and try again.";
164165
infoText.color = Color.red;
165166
}
166167
}

Assets/Scripts/Trial Manager/TrialManager.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ public void OnEnable()
8989
_innerStimulusManager = innerStimulus.GetComponent<DotManager>();
9090
_partition = new AperturePartition(sessionSettings, _outerStimulusSettings, _innerStimulusSettings);
9191
StaircaseManager = new StaircaseManager(sessionSettings);
92+
SetEnforcedHeadTransform();
9293

9394
confirmInputAction[inputSource].onStateUp += GetUserSelection;
9495
}

Assets/StreamingAssets/TEMPLATE.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@
6161

6262
"FailOnTimeout": true,
6363

64-
"EyeTracker": "PupilLabs",
65-
"AttentionCueType": "Stimulus-based",
64+
"EyeTracker": "Dummy",
65+
"AttentionCueType": "Feature-based",
6666

6767
"EnableDirectionalStaircase": true,
6868
"EnableLocationalStaircase": true

0 commit comments

Comments
 (0)