IEnumerator Coroutine_Playback(DataReadingStructure[] dataFromSaveFile, FlightRecorderPlayback flightRecorderPlayback, Action callback)
        {
            Debug.Log("•Started playing playback");

            //Position on starting od recording point
            flightRecorderPlayback.Pitch    = dataFromSaveFile[0].Pitch;
            flightRecorderPlayback.Roll     = dataFromSaveFile[0].Roll;
            flightRecorderPlayback.Yaw      = dataFromSaveFile[0].Yaw;
            flightRecorderPlayback.Throttle = dataFromSaveFile[0].Throttle;
            flightRecorderPlayback.GetComponent <Rigidbody>().position        = dataFromSaveFile[0].Position;
            flightRecorderPlayback.GetComponent <Rigidbody>().rotation        = Quaternion.Euler(dataFromSaveFile[0].Rotation);
            flightRecorderPlayback.GetComponent <Rigidbody>().velocity        = dataFromSaveFile[0].Velocity;
            flightRecorderPlayback.GetComponent <Rigidbody>().angularVelocity = dataFromSaveFile[0].AngularVelocity;
            flightRecorderPlayback.GetComponent <Rigidbody>().drag            = dataFromSaveFile[0].Drag;
            flightRecorderPlayback.GetComponent <Rigidbody>().angularDrag     = dataFromSaveFile[0].AngularDrag;
            flightRecorderPlayback.LeftHanded = bool.Parse(dataFromSaveFile[0].LeftHanded);

            //start playing data on our drone
            int i = 0;

            while (i < dataFromSaveFile.Length - 1)
            {
                yield return(null);

                flightRecorderPlayback.Pitch    = dataFromSaveFile[i].Pitch;
                flightRecorderPlayback.Roll     = dataFromSaveFile[i].Roll;
                flightRecorderPlayback.Yaw      = dataFromSaveFile[i].Yaw;
                flightRecorderPlayback.Throttle = dataFromSaveFile[i].Throttle;
                flightRecorderPlayback.GetComponent <Rigidbody>().position        = Vector3.Lerp(flightRecorderPlayback.GetComponent <Rigidbody>().position, dataFromSaveFile[i].Position, Time.deltaTime * 15);
                flightRecorderPlayback.GetComponent <Rigidbody>().rotation        = Quaternion.Lerp(flightRecorderPlayback.GetComponent <Rigidbody>().rotation, Quaternion.Euler(dataFromSaveFile[i].Rotation), Time.deltaTime * 15);
                flightRecorderPlayback.GetComponent <Rigidbody>().velocity        = dataFromSaveFile[i].Velocity;
                flightRecorderPlayback.GetComponent <Rigidbody>().angularVelocity = dataFromSaveFile[i].AngularVelocity;
                flightRecorderPlayback.GetComponent <Rigidbody>().drag            = dataFromSaveFile[i].Drag;
                flightRecorderPlayback.GetComponent <Rigidbody>().angularDrag     = dataFromSaveFile[i].AngularDrag;
                flightRecorderPlayback.LeftHanded = bool.Parse(dataFromSaveFile[0].LeftHanded);
                i++;
            }

            Debug.Log("•Finished playing playback");
            callback.Invoke();
        }
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();
            myScript = target as FlightRecorderPlayback;

            if (myScript.Playbacking == false)
            {
                if (GUILayout.Button("Load flight"))
                {
                    string flightPath = GetRecordedFilePath();
                    flightPath = flightPath.Replace('/', '\\');
                    myScript.LoadFlight(flightPath);
                }
            }
            else
            {
                if (GUILayout.Button("Unload flight"))
                {
                    myScript.UnloadFlight();
                }
            }
        }
        IEnumerator Coroutine_Playback(DataReadingStructure[] dataFromSaveFile, FlightRecorderPlayback flightRecorderPlayback, Action callback)
        {
            Debug.Log("•Started playing playback");

            //Position on starting od recording point
            flightRecorderPlayback.GetComponent <Rigidbody>().position     = dataFromSaveFile[0].Position;
            flightRecorderPlayback.droneMovement.droneObject.localRotation = Quaternion.Euler(dataFromSaveFile[0].RotationFixed);
            flightRecorderPlayback.GetComponent <Rigidbody>().rotation     = Quaternion.Euler(dataFromSaveFile[2].Rotation);
            flightRecorderPlayback.droneMovement.animatedGameObject.transform.localRotation = Quaternion.Euler(dataFromSaveFile[0].RotationAnimated);

            //start playing data on our drone
            int i = 0;

            while (i < dataFromSaveFile.Length - 1)
            {
                yield return(null);

                flightRecorderPlayback.GetComponent <Rigidbody>().position     = Vector3.Lerp(flightRecorderPlayback.GetComponent <Rigidbody>().position, dataFromSaveFile[i].Position, Time.deltaTime * 15);
                flightRecorderPlayback.droneMovement.droneObject.localRotation = Quaternion.Euler(dataFromSaveFile[i].RotationFixed);
                flightRecorderPlayback.GetComponent <Rigidbody>().rotation     = Quaternion.Euler(dataFromSaveFile[i].Rotation);
                flightRecorderPlayback.droneMovement.animatedGameObject.transform.localRotation = Quaternion.Euler(dataFromSaveFile[i].RotationAnimated);
                flightRecorderPlayback.Vertical_W   = dataFromSaveFile[i].Vertical_W;
                flightRecorderPlayback.Vertical_S   = dataFromSaveFile[i].Vertical_S;
                flightRecorderPlayback.Horizontal_A = dataFromSaveFile[i].Horizontal_A;
                flightRecorderPlayback.Horizontal_D = dataFromSaveFile[i].Horizontal_D;
                flightRecorderPlayback.Vertical_I   = dataFromSaveFile[i].Vertical_I;
                flightRecorderPlayback.Vertical_K   = dataFromSaveFile[i].Vertical_K;
                flightRecorderPlayback.Horizontal_J = dataFromSaveFile[i].Horizontal_J;
                flightRecorderPlayback.Horizontal_L = dataFromSaveFile[i].Horizontal_L;
                flightRecorderPlayback.GetComponent <Rigidbody>().velocity = dataFromSaveFile[i].Velocity;
                i++;
            }

            Debug.Log("•Finished playing playback");
            callback.Invoke();
        }
 public void StartPlayingPlayback(DataReadingStructure[] dataFromSaveFile, FlightRecorderPlayback flightRecorderPlayback, Action callback)
 {
     C_Playback.Add(StartCoroutine(Coroutine_Playback(dataFromSaveFile, flightRecorderPlayback, callback)));
 }