示例#1
0
    IEnumerator ChangePosition()
    {
        GameObject    emptyObject       = GameObject.Find("dataSaver");
        dataSaver     dataSaver         = emptyObject.GetComponent <dataSaver> ();
        int           columnInHistogram = dataSaver.columnInHistogram;
        LSL_BCI_Input lslScript         = dataSaver.getLslScript();

        lslScript.setMarker("score_score_" + columnInHistogram.ToString());

        float x_position = this.right_column_x_position - this.distance_between_columns * (this.highest_column_index -
                                                                                           columnInHistogram);
        Vector3 vec = new Vector3(x_position, this.y_position_for_x_marker, this.z_position_for_x_marker);

        transform.localPosition = vec;

        yield return(new WaitForSeconds(9));

        int blockIndex = dataSaver.currentBlockIndex - 1;

        if (blockIndex == dataSaver.halfConditionIndex ||
            blockIndex == dataSaver.fullConditionIndex)
        {
            SceneManager.LoadScene("stress_evaluation");
        }
        else
        {
            SceneManager.LoadScene("Instructions");
        }
    }
示例#2
0
    /// <summary>
    /// Function called before of the first update
    /// </summary>
    void Start()
    {
        twiddleSettings.timelimit = startingTime;
        twiddleSettings.step      = step;
        twiddleSettings.maxTime   = maxExpTime;

        ds = new dataSaver("TwiddleTrend", new string[] { "overallFitness" });
    }
示例#3
0
    void Start()
    {
        GameObject emptyObject = GameObject.Find("dataSaver");

        dataSaverScript = emptyObject.GetComponent <dataSaver> ();
        this.lslScript  = dataSaverScript.getLslScript();

        if (dataSaverScript.getIsLastPractice())
        {
            timeLimit = int.MaxValue;
        }
        currentItemIndex = 0;

        // Find sliders objects and initialize their methods
        sliderUnpleasentObj       = GameObject.Find("Slider_unPleasent");
        sliderStressObj           = GameObject.Find("Slider_stress");
        sliderUnpleasentComponent = sliderUnpleasentObj.GetComponent <Slider> ();
        sliderStressComponent     = sliderStressObj.GetComponent <Slider> ();

        sliderStressComponent.onValueChanged.AddListener(delegate {
            stressValueChanged();
        });
        sliderUnpleasentComponent.onValueChanged.AddListener(delegate {
            unpleasentValueChanged();
        });

        items = new Slider[] { sliderStressComponent, sliderUnpleasentComponent };

        // paint in green the active slider (the first one), and the rest in black
        int index = 0;

        for (index = 0; index < items.Length; index++)
        {
            UnityEngine.UI.Image[] images = items [index].GetComponentsInChildren <UnityEngine.UI.Image> ();
            for (int i = 0; i < images.Length; i++)
            {
                if (images [i].name == "Background")
                {
                    if (index == 0)
                    {
                        images [i].color = Color.green;
                    }
                    else
                    {
                        images [i].color = Color.black;
                    }
                }
            }
        }

        this.lslScript.setMarker("eval_start_1_stress_1");
        this.startTime = Time.time;
    }
示例#4
0
    // Use this for initialization
    void Start()
    {
        GameObject emptyObject    = GameObject.Find("dataSaver");
        dataSaver  dataSaver      = emptyObject.GetComponent <dataSaver> ();
        int        amountInColumn = dataSaver.getAmountInColumn(8);
        Vector3    scale          = new Vector3(transform.localScale.x, transform.localScale.y * amountInColumn, transform.localScale.z);

        transform.localScale = scale;

        Vector3 position = new Vector3(transform.localPosition.x, transform.localPosition.y +
                                       dataSaver.distanceBetweenColumnInHistogram * (amountInColumn - 1),
                                       transform.localPosition.z);

        transform.localPosition = position;
    }
示例#5
0
    /// <summary>
    /// Save on file a parameters+changes configuration
    /// </summary>
    /// <param name="stats">array of parameters</param>
    /// <param name="pc">array of potencial changes</param>
    void SaveStats(float[] stats, float[] pc)
    {
        string[] attributes = new string[myVals.Length];
        for (int i = 0; i < myVals.Length; i++)
        {
            attributes[i] = "Attr" + (i + 1).ToString();
        }

        dataSaver ds = new dataSaver(folder + "\\Stat" + indxSaving + ".fit #" + bestFitness + "#", attributes);

        ds.addLine(stats);
        ds.addLine(pc);
        ds.saveOnFile();
        indxSaving++;
    }
示例#6
0
    void onStartBlock()
    {
        GameObject emptyObject = GameObject.Find("dataSaver");
        dataSaver  dataSaver   = emptyObject.GetComponent <dataSaver> ();


        if (dataSaver)
        {
            string subjectNumber = this.subjectNumberInput.text;
            int    speed         = this.initSpeed();
            string condition     = this.initStressCondition();
            bool   withNBack;
            if (this.useNbackInput.text == "")
            {
                withNBack = false;
            }
            else
            {
                withNBack = this.useNbackInput.text == "yes" ? true : false;
            }

            bool isCalibration;
            int  ringsFailuresForCalibrationTarget = 0;
            if (this.calibrationInput.text == "")
            {
                isCalibration = false;
            }
            else
            {
                isCalibration = true;
                float percentSuccessToPass = float.Parse(calibrationInput.text);

                ringsFailuresForCalibrationTarget = dataSaver.ringsAmountForCalibrationPhase
                                                    - (int)(percentSuccessToPass /
                                                            100.0 * dataSaver.ringsAmountForCalibrationPhase);
            }

            string ringSize   = "big";
            string nLevel     = this.levelInput.text == ""? "1" : this.levelInput.text;
            bool   isPractice = true;

            dataSaver.initSingleNonTestBlock(condition, speed, nLevel, ringSize, withNBack, isPractice, isCalibration,
                                             ringsFailuresForCalibrationTarget);
        }
        this.loadInstructions();
    }
示例#7
0
    // Use this for initialization
    void Start()
    {
        GameObject loadCanvas = GameObject.Find("Canvas_load");

        if (loadCanvas)
        {
            loadCanvas.SetActive(false);
        }
        GameObject emptyObject = GameObject.Find("dataSaver");
        dataSaver  dataSaver   = emptyObject.GetComponent <dataSaver> ();
        int        speed       = dataSaver.moveSpeed;

        GameObject speedValue = GameObject.Find("speedValue");

        UnityEngine.UI.Text speedValueText = speedValue.GetComponent <UnityEngine.UI.Text> ();
        speedValueText.text = speed.ToString();
    }
示例#8
0
    /// <summary>
    /// Save a set of parameters to a file.
    /// <para>This function is used to save the parameters of the best individuals</para>
    /// </summary>
    /// <param name="keys">array of parameters used for an experiment</param>
    /// <param name="fitness">fitness obtained with that set of keys</param>
    void SaveStats(float[] keys, float fitness)
    {
        if (!autoSave)
        {
            return;
        }

        float[] stats = new float[keys.Length + 1];
        stats[0] = fitness;
        for (int i = 1; i < stats.Length; i++)
        {
            stats[i] = keys[i - 1];
        }

        dataSaver ds = new dataSaver(folder + "\\Stat" + indxSaving + ".gen " + actGeneration + ".fit #" + fitness + "#", attributes);

        ds.addLine(stats);
        ds.saveOnFile();
        indxSaving++;
    }
示例#9
0
    void onStartCondition()
    {
        GameObject emptyObject = GameObject.Find("dataSaver");
        dataSaver  dataSaver   = emptyObject.GetComponent <dataSaver> ();

        if (dataSaver)
        {
            if (dataSaver.currentBlockIndex - 1 == dataSaver.halfConditionIndex)
            {
                SceneManager.LoadScene("stress_evaluation");
                return;
            }
            string subjectNumber = this.subjectNumberInput.text;
            int    speed         = this.initSpeed();
            string condition     = this.initStressCondition();
            string order         = this.orderInput.text;

            dataSaver.initCondition(condition, speed, subjectNumber, order);
        }
        this.loadInstructions();
    }
示例#10
0
    // Use this for initialization
    void Start()
    {
        GameObject loadCanvas = GameObject.Find("Canvas_load");

        //lslBCIInputScript.LSL_BCI_Send_Markers_Enabled = true;
        if (loadCanvas)
        {
            loadCanvas.SetActive(false);
        }
        button          = GameObject.Find("Button");
        buttonComponent = button.GetComponent <Button> ();
        buttonComponent.onClick.AddListener(onDone);

        GameObject emptyObject   = GameObject.Find("dataSaver");
        dataSaver  dataSaver     = emptyObject.GetComponent <dataSaver> ();
        int        nBackSuccess  = dataSaver.nBackSuccess;
        int        flightSuccess = dataSaver.flightSuccess;

        GameObject nBackValue  = GameObject.Find("nbackSuccessRateValue");
        GameObject flightValue = GameObject.Find("flightSuccessRateValue");

        UnityEngine.UI.Text nBackValueText  = nBackValue.GetComponent <UnityEngine.UI.Text> ();
        UnityEngine.UI.Text flightValueText = flightValue.GetComponent <UnityEngine.UI.Text> ();


        flightValueText.text = flightSuccess.ToString() + "%";

        if (dataSaver.getLastBlockNbackStatus() == true)
        {
            nBackValueText.text = nBackSuccess.ToString() + "%";
        }
        else
        {
            nBackValueText.text = "";
        }
    }
示例#11
0
    void Start()
    {
        GameObject loadCanvas = GameObject.Find("Canvas_load");

        if (loadCanvas)
        {
            loadCanvas.SetActive(false);
        }

        GameObject stressCanvas = GameObject.Find("Canvas_stress");

        if (stressCanvas)
        {
            stressCanvas.SetActive(false);
        }

        Image image = GetComponent <Image> ();

        startTimeInstructions = Time.time;

        GameObject dataSaverObject = GameObject.Find("dataSaver");

        this.dataSaver = dataSaverObject.GetComponent <dataSaver> ();
        this.lslScript = this.dataSaver.getLslScript();

        this.lslScript.setMarker("instructions_start_1");
        int currentBlockIndex = this.dataSaver.currentBlockIndex;

        if (this.dataSaver.getIsCalibration() == true)
        {
            image.sprite = this.calibration;
        }
        else if (this.dataSaver.getWithNBack() == false)
        {
            image.sprite = this.no_n;
        }
        else
        {
            string n = this.dataSaver.getN();
            if (n == "1")
            {
                image.sprite = this.one;
            }
            else if (n == "2")
            {
                image.sprite = this.two;
            }
            else if (n == "3")
            {
                image.sprite = this.three;
            }
            else
            {
                string type = this.dataSaver.getType();
                if (type == "a" || type == "c")
                {
                    image.sprite = this.zero_a;
                }
                else
                {
                    image.sprite = this.zero_b;
                }
            }
        }
        return;
    }
示例#12
0
 /// <summary>
 /// initialize the dataSaver instances so it'll be possible to save the genes and restart the simulation from a specific situation
 /// </summary>
 void initializeds()
 {
     // this dataSaver will be used to see the fitness trend of the drones in different populations
     ds = new dataSaver("geneticData", new string[] { "lifetime", "fitness" });
 }
示例#13
0
    void Start()
    {
        GameObject stressCanvas = GameObject.Find("Canvas_stress");

        if (stressCanvas)
        {
            stressCanvas.SetActive(false);
        }

        GameObject emptyObject = GameObject.Find("dataSaver");

        dataSaverScript = emptyObject.GetComponent <dataSaver> ();
        if (dataSaverScript.getIsLastPractice())
        {
            timeLimit = int.MaxValue;
        }
        this.lslScript   = dataSaverScript.getLslScript();
        currentItemIndex = 0;

        findAllObjects();
        findAllComponents();

        this.sliderTemporalComponent.onValueChanged.AddListener(delegate {
            temporalValueChanged();
        });
        this.sliderPhysicalComponent.onValueChanged.AddListener(delegate {
            physicalValueChanged();
        });
        this.sliderMentalComponent.onValueChanged.AddListener(delegate {
            mentalValueChanged();
        });
        this.sliderEffortComponent.onValueChanged.AddListener(delegate {
            effortValueChanged();
        });
        this.sliderFrustrationComponent.onValueChanged.AddListener(delegate {
            frustrationValueChanged();
        });
        this.sliderPerformanceComponent.onValueChanged.AddListener(delegate {
            performaceValueChanged();
        });

        // paint in green the active slider (the first one), and the rest in black
        items = new Slider[] { sliderMentalComponent, sliderPhysicalComponent, sliderTemporalComponent,
                               sliderPerformanceComponent, sliderEffortComponent, sliderFrustrationComponent };
        int index = 0;

        for (index = 0; index < items.Length; index++)
        {
            UnityEngine.UI.Image[] images = items [index].GetComponentsInChildren <UnityEngine.UI.Image> ();
            for (int i = 0; i < images.Length; i++)
            {
                if (images [i].name == "Background")
                {
                    if (index == 0)
                    {
                        images [i].color = Color.green;
                    }
                    else
                    {
                        images [i].color = Color.black;
                    }
                }
            }
        }
        this.lslScript.setMarker("eval_start_1_load_1");

        this.startTime = Time.time;
    }