Ejemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        if (firstUpdate)
        { // To avoid race conditions with the ConfigurationLoader Start() function, we perform the last of the config on the first update
            Init();
            firstUpdate = false;
        }
        if (currentState == State.Study)
        {
            if (Time.time - startTime >= studyTime)
            {
                currentState = State.Delay;
                stimuliManager.gameObject.SetActive(false);
                startTime = Time.time;
            }
        }
        else if (currentState == State.Delay)
        {
            if (Time.time - startTime >= delayTime)
            {
                stimuliManager.gameObject.SetActive(true);
                touchLayer.enabled = true;
                topPositions       = stimuliManager.StimuliToTop(configuration.GetTrialItemSize(currentTrialNumber).x, configuration.GetTrialItemSize(currentTrialNumber).y);
                currentState       = State.Test;
                startTime          = Time.time;
            }
        }
        else if (currentState == State.Test)
        {
            if ((configuration.GetStimuliLogInstructions(currentTrialNumber) == "skip" && Input.GetKeyUp(advanceKey)) ||
                (Input.GetKeyUp(advanceKey) && stimuliManager.AllStimuliHaveMoved(topPositions)))
            {
                if (configuration.GetStimuliLogInstructions(currentTrialNumber) == "log")
                {
                    AppendToLog();
                }

                numberOfTrials    -= 1;
                startTime          = Time.time;
                touchLayer.enabled = false;
                if (numberOfTrials <= 0)
                {
                    stimuliManager.gameObject.SetActive(false);
                    currentState = State.Finished;

                    logFile.Close();
                    actualCoordinatesLogFile.Close();
                }
                else
                {
                    currentState = State.Study;
                    currentTrialNumber++;
                    stimuliManager.SetStimuliAndPositions(
                        configuration.GetStimuliTextures(currentTrialNumber),
                        configuration.GetStimuliPositions(currentTrialNumber),
                        configuration.GetTrialItemSize(currentTrialNumber)
                        );
                    studyTime = (float)configuration.GetTrialStudyTime(currentTrialNumber) / 1000f;
                    delayTime = (float)configuration.GetTrialDelayTime(currentTrialNumber) / 1000f;
                }
            }
        }
    }