public void BroadcastPlayerPosUpdate(ClientState client, Vector3 newPos, byte rawPitch, byte rawYaw, PosUpdateOptions flags = PosUpdateOptions.None) { var server = ServerController.Instance; var player = GetPlayerByOwner(client); var pitch = MathUtils.Remap(rawPitch, 0, 255, 0, 360); var yaw = MathUtils.Remap(rawYaw, 0, 255, 0, 360); player.Position = newPos; player.LookDir = new Vector2(pitch, yaw); server.SendToAll(ServerPacketID.PlayerPosAndRotUpdate, new S_PosAndOrientationUpdateMessage { CommandID = (byte)flags, ConId = (ushort)client.ConnectionID, Position = newPos, LookPitch = rawPitch, Yaw = rawYaw }); }
public static void Unset(PosUpdateOptions flags, PosUpdateOptions flag) { flags = (flags & (~flag)); }
public static bool IsSet(this PosUpdateOptions flags, PosUpdateOptions flag) { return((flags & flag) != 0); }
public static void Set(ref PosUpdateOptions flags, PosUpdateOptions flag) { flags = (flags | flag); }
public void UpdatePlayerPos(ushort conId, Vector3 newPos, byte rawPitch, byte rawYaw, PosUpdateOptions flags) { var localEntity = GetPlayer(conId); if (localEntity == null) { return; } localEntity.Position = newPos; var pitch = MathUtils.Remap(rawPitch, 0, 255, 0, 360); var yaw = MathUtils.Remap(rawYaw, 0, 255, 0, 360); localEntity.LookDir = new Vector2(pitch, yaw); EventManager.Fire(new OnClientPlayerUpdate { Player = localEntity, Flags = flags }); }