public RecrdngSerial Serialize()
    {
        RecrdngSerial rtn = new RecrdngSerial();

        rtn.Vehicles = new RecordableVehicleSerial[Recordables.Count()];
        int i = 0;

        foreach (RecordableVehicle rv in  Recordables)
        {
            rtn.Vehicles[i] = rv.Serialize();
            i++;
        }
        int SavedFrameCount = EndFrame - StartFrame;

        rtn.Data = new RecFrameDataSerial[SavedFrameCount, Recordables.Count()];

        for (int f = 0; f < SavedFrameCount; f++)
        {
            for (int r = 0; r < Recordables.Count(); r++)
            {
                rtn.Data[f, r] = this.Data[f + StartFrame][r].Serialize();
            }
        }
        return(rtn);
    }
    public Recrdng(string filename)
    {
        Filename = filename;
        BinaryFormatter bf = new BinaryFormatter();

        if (File.Exists(Application.persistentDataPath + "/" + Filename))
        {
            FileStream    file      = File.Open(Application.persistentDataPath + "/" + Filename, FileMode.Open);
            RecrdngSerial rs        = (RecrdngSerial)bf.Deserialize(file);
            int           _vehCount = rs.Data.GetLength(1);
            Main.Instance.Vehicles = rs.Vehicles.ToList();
            FrameCount             = rs.Data.GetLength(0);
            Data = new List <List <RecFrameData> >();
            for (int f = 0; f < FrameCount; f++)
            {
                List <RecFrameData> lf = new List <RecFrameData>();
                for (int v = 0; v < _vehCount; v++)
                {
                    RecFrameData       rfd  = new RecFrameData();
                    RecFrameDataSerial rfds = rs.Data[f, v];
                    rfd.VId       = rfds.VId;
                    rfd.FAV       = (sbyte)rfds.FAngularVelocity;
                    rfd.RAV       = (sbyte)rfds.RAngularVelocity;
                    rfd.FLSprL    = rfds.FLSprL;
                    rfd.FRSprL    = rfds.FRSprL;
                    rfd.RLSprL    = rfds.RLSprL;
                    rfd.RRSprL    = rfds.RRSprL;
                    rfd.FLGnd     = rfds.FLGnd;
                    rfd.FRGnd     = rfds.FRGnd;
                    rfd.RLGnd     = rfds.RLGnd;
                    rfd.RRGnd     = rfds.RRGnd;
                    rfd.Pos       = rfds.Pos.V3;
                    rfd.Rot       = rfds.Rot.Decode;
                    rfd.XMovement = rfds.XMovement;
                    if (rfds.Events != null)
                    {
                        rfd.Events = rfds.Events.ToList();
                    }
                    //rfd.Event = new RecEvent {Type = (RecEventType)rfds.EventType, Data = rfds.EventData };
                    lf.Add(rfd);
                }
                Data.Add(lf);
            }
            file.Close();
            CurrFrame = 0;
        }
    }