private void InstantiateOrDestroyGameObjectsAtDeltaReplay(Dictionary <int, string> idToNames)
        {
            var idToGameObject = ReplayManager.Instance.IdToGameObject;

            foreach (var idToName in idToNames)
            {
                if (!string.IsNullOrEmpty(idToName.Value))
                {
                    var go = GameObject.Instantiate(Resources.Load(idToName.Value) as GameObject,
                                                    Vector3.zero, Quaternion.identity);
                    idToGameObject.Add(idToName.Key, go);
                    var newEntity = go.GetComponent <ReplayEntity>();
                    ReplayEntities.Add(go.GetComponent <ReplayEntity>());
                    Debug.Log($"{go.name} created with id {idToName.Key}");
                }
                else
                {
                    var go = idToGameObject[idToName.Key];
                    ReplayEntities.Remove(go.GetComponent <ReplayEntity>());
                    go.GetComponent <ReplayEntity>().IsDestroyed = true;
                    Debug.Log($"{go.name} destroyed with id {go.GetComponent<ReplayEntity>().Id}");
                    GameObject.Destroy(idToGameObject[idToName.Key].gameObject);
                    idToGameObject.Remove(idToName.Key);
                }
            }
        }
        public override void WriteObjectsIdsAndNames()
        {
            var entities = new List <ReplayEntity>();

            var i = 0;

            foreach (var replayEntity in ReplayEntities.Where(replayEntity => !BaseFrame.FrameEntities.Contains(replayEntity)))
            {
                entities.Add(replayEntity);
                i++;
            }

            var j = 0;

            foreach (var replayEntity in BaseFrame.FrameEntities.Where(replayEntity => !ReplayEntities.Contains(replayEntity)))
            {
                entities.Add(replayEntity);
                j++;
            }

            ReplayWriter.Write((byte)(i + j));
            for (var z = 0; z < (i + j); z++)
            {
                ReplayWriter.Write(entities[z].Id);
                if (z < i) // instantiate those
                {
                    ReplayWriter.Write(entities[z].GameObjectName);
                }
                else if (z < (j + i))       // delete those
                {
                    ReplayWriter.Write(""); // u dont need the name for objects to delte cause they exist already
                }
            }
        }