From 32bfabddd03a603bd94030265d125efe84bcad59 Mon Sep 17 00:00:00 2001 From: AeonLucid Date: Thu, 12 Nov 2020 03:58:43 +0100 Subject: [PATCH] Update and fix SnapTo --- .../Objects/Components/IInnerCustomNetworkTransform.cs | 2 +- .../Handlers/PlayerEventListener.cs | 6 ++++++ .../Components/InnerCustomNetworkTransform.Api.cs | 10 ++++++++-- .../Objects/Components/InnerCustomNetworkTransform.cs | 2 +- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/Impostor.Api/Net/Inner/Objects/Components/IInnerCustomNetworkTransform.cs b/src/Impostor.Api/Net/Inner/Objects/Components/IInnerCustomNetworkTransform.cs index d238f37..6d867e7 100644 --- a/src/Impostor.Api/Net/Inner/Objects/Components/IInnerCustomNetworkTransform.cs +++ b/src/Impostor.Api/Net/Inner/Objects/Components/IInnerCustomNetworkTransform.cs @@ -10,6 +10,6 @@ namespace Impostor.Api.Net.Inner.Objects.Components /// /// The target position. /// Task that must be awaited. - ValueTask SnapTo(Vector2 position); + ValueTask SnapToAsync(Vector2 position); } } diff --git a/src/Impostor.Plugins.Example/Handlers/PlayerEventListener.cs b/src/Impostor.Plugins.Example/Handlers/PlayerEventListener.cs index 7238c25..43691ef 100644 --- a/src/Impostor.Plugins.Example/Handlers/PlayerEventListener.cs +++ b/src/Impostor.Plugins.Example/Handlers/PlayerEventListener.cs @@ -1,4 +1,5 @@ using System; +using System.Numerics; using System.Threading.Tasks; using Impostor.Api.Events; using Impostor.Api.Events.Player; @@ -81,6 +82,11 @@ namespace Impostor.Plugins.Example.Handlers await e.PlayerControl.SetPetAsync(PetType.Ufo); } + if (e.Message == "snap") + { + await e.PlayerControl.NetworkTransform.SnapToAsync(new Vector2(1, 1)); + } + await e.PlayerControl.SetNameAsync(e.Message); await e.PlayerControl.SendChatAsync(e.Message); } diff --git a/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.Api.cs b/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.Api.cs index 0f848ad..6223626 100644 --- a/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.Api.cs +++ b/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.Api.cs @@ -6,11 +6,17 @@ namespace Impostor.Server.Net.Inner.Objects.Components { internal partial class InnerCustomNetworkTransform : IInnerCustomNetworkTransform { - public async ValueTask SnapTo(Vector2 position) + public async ValueTask SnapToAsync(Vector2 position) { + var minSid = (ushort)(_lastSequenceId + 5U); + + // Snap in the server. + SnapTo(position, minSid); + + // Broadcast to all clients. var writer = _game.StartRpc(NetId, RpcCalls.SnapTo); WriteVector2(writer, position); - writer.Write(_lastSequenceId + 5U); + writer.Write(_lastSequenceId); await _game.FinishRpcAsync(writer); } } diff --git a/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.cs b/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.cs index fe45479..d261c11 100644 --- a/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.cs +++ b/src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.cs @@ -135,7 +135,7 @@ namespace Impostor.Server.Net.Inner.Objects.Components private void SnapTo(Vector2 position, ushort minSid) { - if (SidGreaterThan(minSid, _lastSequenceId)) + if (!SidGreaterThan(minSid, _lastSequenceId)) { return; } -- 2.39.5