title: How to rotate a game object through an array of Quaternions?
body: <p>Im trying to rotate a gameobject through an array of Quaternions that I've read in via a CSV file. Its currently not rotating the objectas i believe i'm not updating the transform.rotation correctly.  Any help resolving this would be greatly appreciated, let me know if you need anymore information.</p>
  
  <p><strong>RotationAnimator.cs</strong>  The Rotator Script:</p>
  
  <pre><code>public class RotationAnimator : MonoBehaviour
  {
      public Transform playbackTarget;
      [HideInInspector]
      public bool playingBack = false;
      public CSVReader csvReader;
  
      public void PlayRecording()
      {
          //  -1 as it reads the last blank line of the CSV for reasons
          for (int row = 0; row &lt; csvReader.quaternionRecords.Length-1; row++)
          {
              playbackTarget.rotation = new Quaternion(csvReader.quaternionRecords[row].x, csvReader.quaternionRecords[row].y, csvReader.quaternionRecords[row].z, csvReader.quaternionRecords[row].w);
          }
      }
  }
  </code></pre>
  
  <p><strong>CSVReader.cs</strong> The script reading the csv file</p>
  
  <pre><code>public class CSVReader : MonoBehaviour
  {
      public QuaternionRecord[] quaternionRecords;
      public List&lt;List&lt;String&gt;&gt; fileData;
      ILogging logger;
      string path = "Assets\\Logs\\RotationList.csv";
  
      private void OnEnable()
      {
          logger = Logging.GetCurrentClassLogger();
      }
  
      public void ReadFile()
      {
          var r = File.OpenText(path);
          fileData = r.ReadToEnd().Split('\n').Select(s =&gt; s.Split(',').ToList()).ToList();
          quaternionRecords = new QuaternionRecord[fileData.Count];
  
          // skip last empty line at "file data.count -1"
          for(int row = 0; row &lt;  fileData.Count-1; row++)
          {
              try
              {
                  quaternionRecords[row] = new QuaternionRecord();
                  quaternionRecords[row].time = float.Parse(fileData[row][0]);
                  quaternionRecords[row].x = float.Parse(fileData[row][1]);
                  quaternionRecords[row].y = float.Parse(fileData[row][2]);
                  quaternionRecords[row].z = float.Parse(fileData[row][3]);
                  quaternionRecords[row].w = float.Parse(fileData[row][4]);
              }
              catch(Exception e)
              {
                  Debug.Log("Ouch!");
              }
          }
          r.Close();
      }
  
      public struct QuaternionRecord
      {
          public float time;
          public float x;
          public float y;
          public float z;
          public float w;
      }
  }
  </code></pre>
  
  <p>Where PlayRecording is called:</p>
  
  <pre><code>    public void Playback()
      {
          Debug.Log("Beginning Playback...");
          csvReader.ReadFile();
          rotationAnimator.PlayRecording();
      }
  </code></pre>