Exemple #1
0
        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;
        }
Exemple #2
0
 public void AddGameObjUpdateData(GameObjUpdateData gameObjUpdateData)
 {
     this.gameObjUpdateDataList.Add(gameObjUpdateData);
 }