//TODO Once finished use flatbuffer to save player game data
    public void SaveProfileToFlat(PlayerProfileModel prof)
    {
        float start = Time.realtimeSinceStartup;
        List <Offset <CharacterModelFlat> > charList = new List <Offset <CharacterModelFlat> >();
        FlatBufferBuilder fbb  = new FlatBufferBuilder(1);
        StringOffset      item = fbb.CreateString(prof.itemString);

        foreach (CharacterModel model in prof.characters)
        {
            charList.Add(AddCharacterToFlat(fbb, model));
        }
        VectorOffset charVector = fbb.CreateVectorOfTables <CharacterModelFlat>(charList.ToArray());

        PlayerProfileFlat.StartPlayerProfileFlat(fbb);
        PlayerProfileFlat.AddGold(fbb, prof.Gold);
        PlayerProfileFlat.AddItems(fbb, item);
        PlayerProfileFlat.AddCharacters(fbb, charVector);
        Offset <PlayerProfileFlat> offset = PlayerProfileFlat.EndPlayerProfileFlat(fbb);

        PlayerProfileFlat.FinishPlayerProfileFlatBuffer(fbb, offset);
        MemoryStream ms = new MemoryStream(fbb.DataBuffer.Data, fbb.DataBuffer.Position, fbb.Offset);

        File.WriteAllBytes(XmlSaver.PersistentDataPath() + "/SAVEDATA", ms.ToArray());
        Debug.Log("Flat Saving time  " + (Time.realtimeSinceStartup - start));
    }
    public void LoadFlatProfile()
    {//TODO Finish this in final version, convert to useable ProfileManager
        float start = Time.realtimeSinceStartup;

        if (!File.Exists(XmlSaver.PersistentDataPath() + "/SAVEDATA"))
        {
            return;
        }
        ByteBuffer bb = new ByteBuffer(File.ReadAllBytes(XmlSaver.PersistentDataPath() + "/SAVEDATA"));

        if (!PlayerProfileFlat.PlayerProfileFlatBufferHasIdentifier(bb))
        {
            return;
        }
        PlayerProfileFlat flat = PlayerProfileFlat.GetRootAsPlayerProfileFlat(bb);

        Debug.Log("Flat Loading time  " + (Time.realtimeSinceStartup - start) + " " + flat.Characters(0).Value.Name);
    }