public SharedWorldSyncActions ToActions(ISharedWorldFrame baseline)
 {
     var realBaseline = baseline ?? new SharedWorldFrame(Enumerable.Empty<ISharedEntity>());
     return new SharedWorldSyncActions
     {
         AddActions = _entities.Values.Where(entity => !baseline.Entities.ContainsKey(entity.Id)).Select(entity => new SharedWorldSyncActionAddEntity { NewEntityId = entity.Id, NewEntityTypeId = entity.TypeId }).ToArray(),
         MoveActions = _entities.Values.Where(entity => HasMovedFromBaseline(entity, baseline)).Select(entity => new SharedWorldSyncActionMoveEntity { EntityId = entity.Id, Pos = entity.Position }).ToArray()
     };
 }
 private bool HasMovedFromBaseline(ISharedEntity entity, ISharedWorldFrame baseline)
 {
     ISharedEntity baselineEntity;
     return baseline.Entities.TryGetValue(entity.Id, out baselineEntity) && entity.Position != baselineEntity.Position;
 }