Example #1
0
    // Handle initialization.
    void Start()
    {
        // Get the experiment data manager.
        experimentDataManager   = GameObject.Find("ExperimentDataManager").GetComponent <ExperimentDataManager>();
        continueButtonComponent = continueButton.GetComponent <Button>();

        // Order the pages and define which ones should hide the continue button initially.
        orderedPages   = new GameObject[] { initialInstructionsPage, longInstructionsPage, appearancePage };
        hideButtonPage = new bool[] { true, true, false };

        // Find the first active page and set the currentPageIndex. This is only necessary if the scene is set up incorrectly.
        // Guarantees that at most one page is open at the start.
        bool foundActive = false; // Indicates whether a first active page in the hierarchy has been found.

        for (int i = 0; i < orderedPages.Length; ++i)
        {
            GameObject page = orderedPages[i];
            // If no active page has been found yet and this page is active == the first active page is found.
            if (!foundActive && page.activeSelf)
            {
                currentPageIndex = i;
                foundActive      = true;
            }
            else if (page.activeSelf) // This page is active but not the first active one found.
            {
                page.SetActive(false);
            }
        }
    }
Example #2
0
    // Handle initialization.
    void Start()
    {
        // Get the experiment data manager.
        experimentDataManager = GameObject.Find("ExperimentDataManager").GetComponent <ExperimentDataManager>();

        // Order the pages.
        orderedPages = new GameObject[] { participantDataPage1, participantDataPage2, participantDataPage3, additionalCommentsPage, completionCodePage };

        // Find the first active page and set the currentPageIndex. This is only necessary if the scene is set up incorrectly.
        // Guarantees that at most one page is open at the start.
        bool foundActive = false; // Indicates whether a first active page in the hierarchy has been found.

        for (int i = 0; i < orderedPages.Length; ++i)
        {
            GameObject page = orderedPages[i];
            // If no active page has been found yet and this page is active == the first active page is found.
            if (!foundActive && page.activeSelf)
            {
                currentPageIndex = i;
                foundActive      = true;
            }
            else if (page.activeSelf) // This page is active but not the first active one found.
            {
                page.SetActive(false);
            }
        }
    }
 public ExperimentData(ExperimentDataManager mgr)
 {
     this.fromMturk      = mgr.fromMturk;
     this.completionCode = mgr.completionCode;
     this.browser        = mgr.browser;
     this.participant    = mgr.participant;
     this.appearance     = mgr.appearance;
     this.comments       = mgr.comments;
     this.trials         = mgr.allCompletedTrials;
 }
    // Handle experiment data manager instancing between scene loads.
    void Awake()
    {
        // If there is no instance, let this be the new instance, otherwise, destroy this object.
        if (instance == null)
        {
            instance = this;
        }
        else
        {
            Destroy(gameObject);
            return;
        }

        // If this object was set as the instance, make sure it is not destroyed on scene loads.
        DontDestroyOnLoad(gameObject);
    }
Example #5
0
    IEnumerator TimeActionsWithFirstSceneLoaded()
    {
        // Make sure that this script is executed after all the others.
        yield return(new WaitForEndOfFrame());

        // Find all the objects required by this class.
        assetLoader           = GameObject.Find("AssetLoader").GetComponent <AssetLoader>();
        experimentDataManager = GameObject.Find("ExperimentDataManager").GetComponent <ExperimentDataManager>();
        overlayManager        = GameObject.Find("OverlayCanvas").GetComponent <OverlayManager>();
        sharedVariableManager = GameObject.Find("SharedVariableManager").GetComponent <SharedVariableManager>();
        robotViewText         = GameObject.Find("RobotViewText").GetComponent <Text>();

        // Set up list of robot colors.
        List <RobotColor> colors = new List <RobotColor>();

        colors.Add(RobotColor.BLUE);
        colors.Add(RobotColor.RED);
        colors.Add(RobotColor.PURPLE);
        colors.Add(RobotColor.YELLOW);
        colors.Add(RobotColor.PINK);
        colors.Add(RobotColor.GREEN);
        colors.Add(RobotColor.BROWN);
        colors.Add(RobotColor.ORANGE);
        colors.Add(RobotColor.BLACK);
        colors.Add(RobotColor.SPECIAL);
        colors.Shuffle();

        // Initialize trials list as empty.
        trials = new List <Trial>();

        // Trial list construction.
        // Add trials. This is dependent on the experiment design.
        if (debugTrials)
        {
            // Add the trials.
            // trials.Add(new Trial(EnvironmentType.BASIC, RobotType.PR2, TrialType.AI));
            // trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            // trials.Add(new Trial(EnvironmentType.NARROW, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
        }
        else if (testingTrials)
        {
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
        }
        else
        {
            // Add the trials.
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.PR2, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.AI));
            trials.Add(new Trial(EnvironmentType.OPEN, RobotType.SOPHIA, TrialType.HUMAN));
        }

        // Set colors. Colors are assigned randomly in a way, looped around for the number of trials.
        for (int i = 0; i < trials.Count; ++i)
        {
            trials[i].robotColor = colors[i % colors.Count];
        }

        // Shuffle the trials.
        trials.Shuffle();

        // Add the test trial to the front of the list (should always be first!).
        trials.Insert(0, new Trial());
        // End trial list construction.

        // Load the trial environment.
        assetLoader.LoadEnvironment(trials[currentTrialNum].environmentType);

        // Display the first trial's loading screen.
        overlayManager.DisplayLoadingScreen(trials[currentTrialNum].trialType);

        // Subscribe the new scene actions to future scene loads.
        // Needs to be here in order to not perform NewSceneActions for the first trial.
        SceneManager.sceneLoaded += NewSceneActions;
    }
 private void Start()
 {
     _experimentDataManager = GetComponent <ExperimentDataManager>();
     GenerateRandomTimeStep();
 }