private void StartPlaying() { if (!File.Exists(inputFilePath.text)) { Debug.Log("Input File NOT found."); return; } // File open StreamReader srMotionsDataReader = new StreamReader(inputFilePath.text); this.timeSeriesMotionsQue = new Queue <TimeSeriesMotionsData>(); List <Transform> transformOrder = new List <Transform>(); while (srMotionsDataReader.Peek() >= 0) { string lineStr = srMotionsDataReader.ReadLine(); string[] columnArray = lineStr.Split(new char[] { '\t' }, 2); if (columnArray.Length < 2) { continue; } string headerStr = columnArray[0]; string dataStr = columnArray[1]; string[] headerArray = headerStr.Split(','); // Motion data if (headerArray[1] == DataType1Motion) { string[] dataArray = dataStr.Split('\t'); // Definition if (headerArray[2] == DataType2MotionDefinition) { transformOrder.Clear(); Debug.Log("data num=" + dataArray.Length); foreach (string transformPath in dataArray) { transformOrder.Add(GameObject.Find(transformPath).transform); } } // Value else if (headerArray[2] == DataType2MotionValue) { if (transformOrder.Count == 0) { continue; } TimeSeriesMotionsData timeSeriesMotionsData = new TimeSeriesMotionsData(); timeSeriesMotionsData.ElapsedTime = float.Parse(headerArray[0]); for (int i = 0; i < dataArray.Length; i++) { string[] transformValues = dataArray[i].Split(','); GameObjUpdateData transform = new GameObjUpdateData(); transform.SetUpdatingTargetTransform(transformOrder[i]); transform.SetPostion(new Vector3(float.Parse(transformValues[0]), float.Parse(transformValues[1]), float.Parse(transformValues[2]))); transform.SetRotation(new Vector3(float.Parse(transformValues[3]), float.Parse(transformValues[4]), float.Parse(transformValues[5]))); if (transformValues.Length == 6) { transform.SetScale(Vector3.one); } else if (transformValues.Length == 9) { transform.SetScale(new Vector3(float.Parse(transformValues[6]), float.Parse(transformValues[7]), float.Parse(transformValues[8]))); } timeSeriesMotionsData.AddGameObjUpdateData(transform); } this.timeSeriesMotionsQue.Enqueue(timeSeriesMotionsData); } } } srMotionsDataReader.Close(); // Change Buttons this.playButtonText.text = ButtonTextStop; this.recordButton.interactable = false; // Disable Animator foreach (GameObject targetObj in targetObjects) { // Disable only one animator component targetObj.transform.GetComponent <Animator>().enabled = false; } // Reset elapsed time this.elapsedTime = 0.0f; this.previousRecordedTime = 0.0f; this.isPlaying = true; }
public void AddGameObjUpdateData(GameObjUpdateData gameObjUpdateData) { this.gameObjUpdateDataList.Add(gameObjUpdateData); }