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(); }
//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); } }
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); }
private void OnApplicationQuit() { SaveHandPosition.closeIfOpen(); }
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(); }
public void OnApplicationQuit() { SaveClickData.closeIfOpen(); SaveQuestionnaire.CloseIfOpen(); SaveHandPosition.closeIfOpen(); }