IEnumerator RunExperiment() { while (!isDone) { SetText("Querying for next trial"); yield return(StartCoroutine(client.Ask())); Debug.Log(trialNum); config = client.GetConfig(); SetText("Now presenting stimulus."); yield return(StartCoroutine(PresentStimulus(config))); SetText("Was it visible? (Y/N)"); yield return(StartCoroutine(LogUserInput())); if (trialNum == (totalTrials - 1)) { SetText("Experiment complete"); isDone = true; break; } trialNum++; } yield return(0); }
IEnumerator RunExperiment() { while (!isDone) { Debug.Log("trial# " + trialNum + " strat " + currentStrat + " strat's trial# " + AEPsychStrats[currentStrat].currentTrial); SetText("Querying for next trial"); yield return(StartCoroutine(client.Ask())); config = client.GetConfig(); SetText("Now presenting stimulus."); yield return(StartCoroutine(PresentStimulus(config))); SetText("Was it visible? (Y/N)"); yield return(StartCoroutine(LogUserInput())); //check if strat or experiment is done if (AEPsychStrats[currentStrat].currentTrial == (totalTrials - 1)) { SetText("Strat is complete."); AEPsychStrats[currentStrat].isDone = true; if (checkFinished()) { SetText("Experiment complete"); isDone = true; break; } } AEPsychStrats[currentStrat].currentTrial++; trialNum++; //in this example, switch every 5 trials if (AEPsychStrats[currentStrat].currentTrial % 5 == 4) { currentStrat = (currentStrat + 1) % numStrats; while (AEPsychStrats[currentStrat].isDone) { currentStrat = (currentStrat + 1) % numStrats; } Debug.Log("switched to strat " + currentStrat); yield return(StartCoroutine(client.Resume(AEPsychStrats[currentStrat].stratId))); } } yield return(0); }