]> git.deb.at Git - rhonda/impostor.git/commitdiff
Snap player to position (#109)
authordanbudworthmead <danbudworthmead@gmail.com>
Thu, 12 Nov 2020 02:44:37 +0000 (02:44 +0000)
committerGitHub <noreply@github.com>
Thu, 12 Nov 2020 02:44:37 +0000 (03:44 +0100)
* Snap player to position

* Update IInnerCustomNetworkTransform.cs

src/Impostor.Api/Net/Inner/Objects/Components/IInnerCustomNetworkTransform.cs
src/Impostor.Server/Net/Inner/Objects/Components/InnerCustomNetworkTransform.Api.cs

index 856e077f3f397d49a5085429664d230edad614e8..d238f3713c9af6939eaeaadee2a1e0a24e144f30 100644 (file)
@@ -1,6 +1,15 @@
-namespace Impostor.Api.Net.Inner.Objects.Components
+using System.Numerics;
+using System.Threading.Tasks;
+
+namespace Impostor.Api.Net.Inner.Objects.Components
 {
     public interface IInnerCustomNetworkTransform : IInnerNetObject
     {
+        /// <summary>
+        ///     Snaps the current to the given position <see cref="IInnerPlayerControl"/>.
+        /// </summary>
+        /// <param name="position">The target position.</param>
+        /// <returns>Task that must be awaited.</returns>
+        ValueTask SnapTo(Vector2 position);
     }
 }
index 302bb734dfc21c2079a7093a78354f798c30a0f9..0f848ad8fe97a394a8d40316dffaa735fafbf3f0 100644 (file)
@@ -1,8 +1,17 @@
-using Impostor.Api.Net.Inner.Objects.Components;
+using System.Numerics;
+using System.Threading.Tasks;
+using Impostor.Api.Net.Inner.Objects.Components;
 
 namespace Impostor.Server.Net.Inner.Objects.Components
 {
     internal partial class InnerCustomNetworkTransform : IInnerCustomNetworkTransform
     {
+        public async ValueTask SnapTo(Vector2 position)
+        {
+            var writer = _game.StartRpc(NetId, RpcCalls.SnapTo);
+            WriteVector2(writer, position);
+            writer.Write(_lastSequenceId + 5U);
+            await _game.FinishRpcAsync(writer);
+        }
     }
 }