sync player camera fov

fixes #578
This commit is contained in:
_nebula 2023-01-21 11:09:24 +00:00
parent 33a4bb042a
commit 5260896313
2 changed files with 28 additions and 0 deletions

View File

@ -17,6 +17,7 @@ public class PlayerInformationMessage : QSBMessage
private bool TranslatorEquipped;
private bool ProbeActive;
private ClientState ClientState;
private float FieldOfView;
public PlayerInformationMessage()
{
@ -30,6 +31,7 @@ public class PlayerInformationMessage : QSBMessage
TranslatorEquipped = player.TranslatorEquipped;
ProbeActive = player.ProbeActive;
ClientState = player.State;
FieldOfView = PlayerData.GetGraphicSettings().fieldOfView;
}
public override void Serialize(NetworkWriter writer)
@ -44,6 +46,7 @@ public class PlayerInformationMessage : QSBMessage
writer.Write(TranslatorEquipped);
writer.Write(ProbeActive);
writer.Write(ClientState);
writer.Write(FieldOfView);
}
public override void Deserialize(NetworkReader reader)
@ -58,6 +61,7 @@ public class PlayerInformationMessage : QSBMessage
TranslatorEquipped = reader.Read<bool>();
ProbeActive = reader.Read<bool>();
ClientState = reader.Read<ClientState>();
FieldOfView = reader.ReadFloat();
}
public override void OnReceiveRemote()
@ -79,6 +83,10 @@ public class PlayerInformationMessage : QSBMessage
player.UpdateObjectsFromStates();
}
Delay.RunWhen(
() => player.Camera != null,
() => player.Camera.fieldOfView = FieldOfView);
player.State = ClientState;
}
else

View File

@ -0,0 +1,20 @@
using QSB.Messaging;
using QSB.Utility;
namespace QSB.Player.Messages;
internal class UpdateFOVMessage : QSBMessage<float>
{
static UpdateFOVMessage()
=> GlobalMessenger<GraphicSettings>.AddListener(
"GraphicSettingsUpdated",
(GraphicSettings settings) => new UpdateFOVMessage(settings.fieldOfView).Send());
private UpdateFOVMessage(float fov) : base(fov) { }
public override void OnReceiveRemote()
{
var player = QSBPlayerManager.GetPlayer(From);
player.Camera.fieldOfView = Data;
}
}