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); }