Esempio n. 1
0
    public static void Save(GameObject palm, Chirality w, int P)
    {
        if (_instance == null)
        {
            _instance = new SaveHandPosition();
        }


        var timestamp      = StudySetup.studySetup.GetCurrentUnixTimestampMillis();
        var Condition      = MySceneManager.sceneManager.currentScene;
        var SubjectID      = StudySetup.studySetup.ParticipantID;
        var GameObjectName = palm.name;
        var Hand           = w;
        var viewID         = P;
        var isStudy        = MySceneManager.sceneManager.isStudy;

        string output = "";

        var PosX = palm.transform.position.x;
        var PosY = palm.transform.position.y;
        var PosZ = palm.transform.position.z;
        var RotX = palm.transform.position.x;
        var RotY = palm.transform.position.y;
        var RotZ = palm.transform.position.z;

        output += Condition + CsvSeparator + timestamp + CsvSeparator + SubjectID + CsvSeparator + GameObjectName +
                  CsvSeparator + viewID + CsvSeparator + Hand + CsvSeparator + isStudy + CsvSeparator + PosX +
                  CsvSeparator + PosY +
                  CsvSeparator + PosZ + CsvSeparator + RotX + CsvSeparator + RotY + CsvSeparator + RotZ;


        _instance.sw.Write(output + "\r\n");
        _instance.sw.Flush();
    }
Esempio n. 2
0
 //call if study is over
 public static void closeIfOpen()
 {
     if (_instance != null)
     {
         _instance.sw.Close();
         Debug.Log("Finished Record boneData");
         _instance = null;
     }
 }
    private void MoveLefttHand()
    {
        //Hand postion, thumb position
        LeapBonesLeft[2].GetComponent <Transform>().position  = ManusBonesLeft[0].GetComponent <Transform>().position;
        LeapBonesLeft[21].GetComponent <Transform>().position = ManusBonesLeft[23].GetComponent <Transform>().position;

        //Hand rotation
        LeapBonesLeft[2].GetComponent <Transform>().rotation =
            ManusBonesLeft[0].GetComponent <Transform>().rotation *Quaternion.Euler(180, 90, 90);


        //Arm Rotation and Pos

        LeapBonesLeft[3].transform.rotation = ManusBonesLeft[1].transform.rotation * Quaternion.Euler(0, -90, -90);
        LeapBonesLeft[3].transform.position =
            ManusBonesLeft[1].transform.position + _distL[5] * ManusBonesLeft[1].transform.up;

        for (var i = 0; i < 5; i++)
        {
            LeapBonesLeft[i + 4].transform.rotation =
                LeapBonesLeft[3].transform.rotation * Quaternion.Euler(-(i * 18), 0, 0);
            ;
            LeapBonesLeft[i + 4].transform.position =
                ManusBonesLeft[1].transform.position + _distL[4 - i] * ManusBonesLeft[1].transform.up;
        }

        //Finger Rotation
        for (var i = 0; i < 3; i++)
        {
            //Index
            LeapBonesLeft[i + 9].GetComponent <Transform>().rotation =
                ManusBonesLeft[i + 3].GetComponent <Transform>().rotation *Quaternion.Euler(-90, 180, 0);
            //Middle
            LeapBonesLeft[i + 12].GetComponent <Transform>().rotation =
                ManusBonesLeft[i + 8].GetComponent <Transform>().rotation *Quaternion.Euler(-90, 180, 0);
            //Pinky
            LeapBonesLeft[i + 15].GetComponent <Transform>().rotation =
                ManusBonesLeft[i + 13].GetComponent <Transform>().rotation *Quaternion.Euler(-90, 180, 0);
            //Ring
            LeapBonesLeft[i + 18].GetComponent <Transform>().rotation =
                ManusBonesLeft[i + 18].GetComponent <Transform>().rotation *Quaternion.Euler(-90, 180, 0);
            //Thumb
            LeapBonesLeft[i + 21].GetComponent <Transform>().rotation =
                ManusBonesLeft[i + 23].GetComponent <Transform>().rotation *Quaternion.Euler(0, 0, 180);
        }
        if (Variables.isTrialActive)
        {
            SaveHandPosition.Save(LeapBonesRight, SaveHandPosition.WhichHand.left);
        }
    }
Esempio n. 4
0
    public static void Save(List <GameObject> bones, WhichHand w)
    {
        if (_instance == null)
        {
            _instance = new SaveHandPosition();
        }


        var timestamp      = Variables.GetCurrentUnixTimestampMillis();
        var Sample         = Variables.SampleNumber;
        var SubjectID      = Variables.UserId;
        var GameObjectName = bones[0].name;
        var Hand           = w;
        var Displacement   = GameObjectName.Split('_')[3];
        var Texture        = GameObjectName.Split('_')[4];
        var Amp            = Variables.Amplitude;
        var Size           = Variables.ButtonWidthModifier;
        var ID             = Mathf.Log(Amp / (Size) + 0.5f, 2);
        var Repetition     = SaveClickData._repetitionDict.ContainsKey(ID) ? SaveClickData._repetitionDict[ID] : 1;
        var Duration       = timestamp - Variables.ClickTime;

        foreach (var bone in bones)
        {
            string output   = "";
            var    BoneName = bone.name;

            var PosX = _instance._objects.Buttons.transform.InverseTransformPoint(bone.transform.position).x;
            var PosY = _instance._objects.Buttons.transform.InverseTransformPoint(bone.transform.position).y;
            var PosZ = _instance._objects.Buttons.transform.InverseTransformPoint(bone.transform.position).z;
            var RotX = _instance._objects.Buttons.transform.InverseTransformPoint(bone.transform.position).x;
            var RotY = _instance._objects.Buttons.transform.InverseTransformPoint(bone.transform.position).y;
            var RotZ = _instance._objects.Buttons.transform.InverseTransformPoint(bone.transform.position).z;

            output += Sample + CsvSeparator + timestamp + CsvSeparator + SubjectID + CsvSeparator + GameObjectName +
                      CsvSeparator + Hand + CsvSeparator + Texture + CsvSeparator + Displacement + CsvSeparator +
                      Amp + CsvSeparator + Size + CsvSeparator + ID + CsvSeparator + Repetition + CsvSeparator +
                      Duration + CsvSeparator + BoneName + CsvSeparator + PosX + CsvSeparator + PosY +
                      CsvSeparator + PosZ + CsvSeparator + RotX + CsvSeparator + RotY + CsvSeparator + RotZ;


            _instance.sw.Write(output + "\r\n");
            _instance.sw.Flush();
        }
    }
    private void map(GameObject[] leap, GameObject[] avatar)
    {
        //index, mid, pinky, ring, thumb
        int[] leap_index   = new int[] { 6, 10, 14, 18, 2 };
        int[] avatar_index = new int[] { 9, 12, 15, 18, 21 };


        switch (whichHand)
        {
        case Chirality.Left:

            avatar[2].transform.position = cHand.GetWristPosition();


            avatar[2].transform.rotation = leap[21].transform.rotation * Quaternion.Euler(palmRotLeft);     //palm


            //Loops over fingers to correct their rotation
            for (int i = 0; i < leap_index.Length; i++)
            {
                //loops over bones
                for (int j = 0; j < 3; j++)
                {
                    avatar[avatar_index[i] + j].transform.rotation =
                        leap[leap_index[i] + j].transform.rotation * Quaternion.Euler(fingerRotLeft);
                }
            }


            avatar[3].transform.position = cHand.GetElbowPosition();
            avatar[3].transform.rotation = leap[22].transform.rotation * Quaternion.Euler(armRotLeft);

            break;

        case Chirality.Right:

            avatar[2].transform.position = cHand.GetWristPosition();


            avatar[2].transform.rotation = leap[21].transform.rotation * Quaternion.Euler(palmRotRight);     //palm


            //Loops over fingers to correct their rotation
            for (int i = 0; i < leap_index.Length; i++)
            {
                //loops over bones
                for (int j = 0; j < 3; j++)
                {
                    avatar[avatar_index[i] + j].transform.rotation =
                        leap[leap_index[i] + j].transform.rotation * Quaternion.Euler(fingerRotRight);
                }
            }


            avatar[3].transform.position = cHand.GetElbowPosition();
            avatar[3].transform.rotation = leap[22].transform.rotation * Quaternion.Euler(armRotRight);

            break;
        }


        SaveHandPosition.Save(avatar[2].gameObject, avatar[0].GetComponent <PlayerHand>().whichHand, PV.ViewID);
    }
Esempio n. 6
0
 private void OnApplicationQuit()
 {
     SaveHandPosition.closeIfOpen();
 }
Esempio n. 7
0
    private IEnumerator Delay()
    {
        yield return(new WaitForSeconds(0.1f));

        foreach (var g in Variables.ButtonNames)
        {
            Destroy(g);
        }

        Variables.LastRoundFailed = false;
        Variables.Count           = 1;
        Variables.NextIndex       = 0;
        Variables.Times.Clear();
        Variables.Round = (Variables.Round + 1) % (Variables.AmountOfRounds);
        if (Variables.Round == 0)
        {
            //Close last HandData save
            SaveHandPosition.closeIfOpen();
            Variables.isTrialActive = false;
            //Wait after last trial and show timer
            float elapsedTime = 5.0f;
            while (elapsedTime > 0.0f)
            {
                elapsedTime   -= Time.deltaTime;
                TableText.text = "End of Task \n " + Mathf.Round(elapsedTime);
                if (Input.GetKeyDown(KeyCode.Escape))
                {
                    elapsedTime = 0.0f;
                }
                else
                {
                    yield return(null);
                }
            }
            TableText.text = "";
            _objects.TableTop.GetComponent <Questionnaire>().SetActiveQ(true, _objects.Fragebogen);
            _objects.Fragebogen.GetComponent <CreateQuestionnaire>().CreateQuestions();
            while (Variables.IsConfirmPressed == false)
            {
                yield return(null);
            }

            if (Variables.IsConfirmPressed)
            {
                SaveQuestionnaire.SaveCollecter(SaveQuestionnaire.QuestionnaireType.Post);
                _objects.TableTop.GetComponent <Questionnaire>().SetActiveQ(false, _objects.Fragebogen);
                Variables.IsConfirmPressed = false;
                print("Trial: " + Variables.Trial + " von " + Variables.AmountOfTrials);
                if (Variables.Trial == Variables.AmountOfTrials - 1)
                {
                    float endTime = 120.0f;
                    while (endTime > 0.0f)
                    {
                        endTime       -= Time.deltaTime;
                        TableText.text = "End of Study \n Thanks for participating!";
                        if (Input.GetKeyDown(KeyCode.Escape))
                        {
                            endTime = 0.0f;
                        }
                        else
                        {
                            yield return(null);
                        }
                    }
                    TableText.text = "";
                }
                Variables.Trial++;
                SaveClickData._repetitionDict.Clear();
                _objects.Buttons.GetComponent <Setup>().ShuffleList(Variables.UserId, Variables.Trial);
                _objects.HandController.GetComponent <GetHandMovement>().NextHand();
                yield return(StartCoroutine(CreatePreQuestionnaire()));
            }
        }

        Debug.Log("Round: " + Variables.Round + " von " + Variables.AmountOfRounds);
        yield return(new WaitForSeconds(1));

        Setup.SetupInstance.CreateButtons();
    }
Esempio n. 8
0
 public void OnApplicationQuit()
 {
     SaveClickData.closeIfOpen();
     SaveQuestionnaire.CloseIfOpen();
     SaveHandPosition.closeIfOpen();
 }