static void OnControlChangedSuccess(MySyncEntity entity, ref ControlChangedMsg msg, MyNetworkClient sender)
        {
            PlayerId id = new PlayerId(msg.ClientSteamId, msg.PlayerSerialId);
            MyTrace.Send(TraceWindow.Multiplayer, "OnControlChanged to entity: " + msg.EntityId, id.ToString());

            Sync.Players.SetControlledEntityInternal(id, entity.Entity);
        }
        public void SetControlledEntity(PlayerId id, MyEntity entity)
        {
            var msg = new ControlChangedMsg();
            msg.EntityId = entity.EntityId;
            msg.PlayerSerialId = id.SerialId;
            msg.ClientSteamId = id.SteamId;

            if (Sync.IsServer)
            {
                SetControlledEntityInternal(id, entity);

                Sync.Layer.SendMessageToAll(ref msg, MyTransportMessageEnum.Success);
            }
            else
            {
                Sync.Layer.SendMessageToServer(ref msg, MyTransportMessageEnum.Request);
            }
        }
        static void OnControlChangedRequest(MySyncEntity entity, ref ControlChangedMsg msg, MyNetworkClient sender)
        {
            PlayerId id = new PlayerId(msg.ClientSteamId, msg.PlayerSerialId);
            MyTrace.Send(TraceWindow.Multiplayer, "OnControlChanged to entity: " + msg.EntityId, id.ToString());

            Sync.Players.SetControlledEntityInternal(id, entity.Entity);
            
            Debug.Assert(sender.SteamUserId == msg.ClientSteamId);
            msg.ClientSteamId = sender.SteamUserId;

            Sync.Layer.SendMessageToAll(ref msg, MyTransportMessageEnum.Success);
        }
        static void OnControlChangedSuccess(ref ControlChangedMsg msg, MyNetworkClient sender)
        {
            PlayerId id = new PlayerId(msg.ClientSteamId, msg.PlayerSerialId);
            MyEntity entity = null;
            if (!MyEntities.TryGetEntityById(msg.EntityId, out entity))
            {
                m_missingControlledEntities[msg.EntityId] = id;
                return;
            }
            MyTrace.Send(TraceWindow.Multiplayer, "OnControlChanged to entity: " + msg.EntityId, id.ToString());

            Sync.Players.SetControlledEntityInternal(id, entity);
        }