void SendCheckpoint(NetConnection sendTo)
        {
            Log("SendCheckpoint");
            var checkpointEvent = new MyEventCheckpoint();

            checkpointEvent.Checkpoint = GetCheckpoint();

            Peers.NetworkClient.Send(ref checkpointEvent, sendTo, NetDeliveryMethod.ReliableOrdered, 0, 1024 * 1024);

            // Send missiles, cannon shots etc.
            m_entitiesToTransfer.Clear();
            MyEntities.FindEntities(AmmoEntitiesPredicate, m_entitiesToTransfer);
            foreach (var e in m_entitiesToTransfer)
            {
                var ammo = (MyAmmoBase)e;

                var weapon = MyGuiSmallShipHelpers.GetFirstWeaponType(ammo.AmmoType);
                if (!weapon.HasValue)
                {
                    continue;
                }

                MyEventShoot shootMsg = new MyEventShoot();
                shootMsg.Ammo               = ammo.AmmoType;
                shootMsg.Position           = new MyMwcPositionAndOrientation(ammo.WorldMatrix);
                shootMsg.ProjectileEntityId = MyEntityIdentifier.ToNullableInt(ammo.EntityId);
                shootMsg.ShooterEntityId    = (ammo.OwnerEntity != null && ammo.OwnerEntity.EntityId.HasValue) ? ammo.OwnerEntity.EntityId.Value.NumericValue : 0;
                shootMsg.TargetEntityId     = null;
                shootMsg.Weapon             = weapon.Value;
                Peers.NetworkClient.Send(ref shootMsg, sendTo, NetDeliveryMethod.ReliableOrdered, 0);
            }
        }
        private void OnReceiveCheckpoint(ref MyEventCheckpoint sectorData)
        {
            MyMultiplayerGameplay.Log("JOIN 7. - Checkpoint received (#SectorData), join completed, loading");
            MyMultiplayerGameplay.Log("MTU: " + sectorData.SenderConnection.GetMTU());
            if (MySession.PlayerShip != null)
            {
                MyMultiplayerGameplay.StoredShip = (MyMwcObjectBuilder_SmallShip)MySession.PlayerShip.GetObjectBuilder(false);
            }

            var loadedPlayer = sectorData.Checkpoint.LoadCoopPlayer(MyClientServer.LoggedPlayer.GetDisplayName().ToString());

            if (loadedPlayer != null)
            {
                var faction = sectorData.Checkpoint.PlayerObjectBuilder.ShipObjectBuilder.Faction;
                sectorData.Checkpoint.PlayerObjectBuilder = loadedPlayer;
                sectorData.Checkpoint.PlayerObjectBuilder.ShipObjectBuilder         = new MyMwcObjectBuilder_SmallShip_Player(sectorData.Checkpoint.PlayerObjectBuilder.ShipObjectBuilder);
                sectorData.Checkpoint.PlayerObjectBuilder.ShipObjectBuilder.Faction = faction;
            }
            else
            {
                // Set default values for playership (coop)
                sectorData.Checkpoint.PlayerObjectBuilder.ShipConfigObjectBuilder              = null;
                sectorData.Checkpoint.PlayerObjectBuilder.ShipObjectBuilder.ReflectorLight     = true;
                sectorData.Checkpoint.PlayerObjectBuilder.ShipObjectBuilder.ReflectorLongRange = false;
                sectorData.Checkpoint.PlayerObjectBuilder.ShipObjectBuilder.IsDummy            = false;
            }

            if (sectorData.Checkpoint.CurrentSector.SectorType == MyMwcSectorTypeEnum.SANDBOX && !MinerWars.AppCode.Networking.MySteam.IsActive)
            {
                sectorData.Checkpoint.PlayerObjectBuilder.Money = (float)MySectorServiceClient.GetCheckedInstance().GetGameMoney();
                MySectorServiceClient.SafeClose();
            }
            else
            {
                // Keep money
                sectorData.Checkpoint.PlayerObjectBuilder.Money = MySession.Static != null ? MySession.Static.Player.Money : 0;
            }

            MyMultiplayerGameplay.StartBufferingGameEvents();

            var handler = m_gameJoinedAction;

            if (handler != null)
            {
                handler(m_game, MyResultCodeEnum.OK, sectorData.Checkpoint); // Will handle sector loading
            }
        }