chore: paddle and ball tweens updated for smoother gameplay
This commit is contained in:
		@@ -68,7 +68,12 @@ public class BallBehaviour : Behaviour2D, IFirstFrameUpdate, IPhysicsUpdate, INe
 | 
			
		||||
    void IPacketListenerClient<BallResetPacket>.OnClientPacketArrived(IConnection sender, BallResetPacket packet) => ResetBall();
 | 
			
		||||
    void IPacketListenerClient<BallUpdatePacket>.OnClientPacketArrived(IConnection sender, BallUpdatePacket packet)
 | 
			
		||||
    {
 | 
			
		||||
        networkTween = Transform.TweenPositionAdditive(tweenManager, .25f, Transform.Position.FromTo(packet.Position));
 | 
			
		||||
        Vector2D localToServerPosition = Transform.Position.FromTo(packet.Position);
 | 
			
		||||
        if (localToServerPosition.MagnitudeSquared < 4f)
 | 
			
		||||
            networkTween = Transform.TweenPositionAdditive(tweenManager, .25f, localToServerPosition);
 | 
			
		||||
        else
 | 
			
		||||
            Transform.Position = packet.Position;
 | 
			
		||||
 | 
			
		||||
        RigidBody.Velocity = packet.Velocity;
 | 
			
		||||
        physicsEngine2D.StepIndividual(RigidBody, sender.Ping);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@ using Syntriax.Engine.Core;
 | 
			
		||||
using Syntriax.Engine.Network;
 | 
			
		||||
using Syntriax.Engine.Physics2D;
 | 
			
		||||
using Syntriax.Engine.Systems.Input;
 | 
			
		||||
using Syntriax.Engine.Systems.Tween;
 | 
			
		||||
 | 
			
		||||
namespace Pong.Behaviours;
 | 
			
		||||
 | 
			
		||||
@@ -28,6 +29,9 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp
 | 
			
		||||
    private IRigidBody2D rigidBody = null!;
 | 
			
		||||
    private IPhysicsEngine2D physicsEngine2D = null!;
 | 
			
		||||
 | 
			
		||||
    private ITween? networkTween = null;
 | 
			
		||||
    private ITweenManager tweenManager = null!;
 | 
			
		||||
 | 
			
		||||
    public void PhysicsIterate(float delta)
 | 
			
		||||
    {
 | 
			
		||||
        if (isUpPressed)
 | 
			
		||||
@@ -48,6 +52,7 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp
 | 
			
		||||
        networkClient = Universe.FindBehaviour<INetworkCommunicatorClient>();
 | 
			
		||||
        networkServer = Universe.FindBehaviour<INetworkCommunicatorServer>();
 | 
			
		||||
        rigidBody = BehaviourController.GetRequiredBehaviour<IRigidBody2D>();
 | 
			
		||||
        tweenManager = Universe.FindRequiredBehaviour<ITweenManager>();
 | 
			
		||||
 | 
			
		||||
        inputs?.RegisterOnPress(Up, OnUpPressed);
 | 
			
		||||
        inputs?.RegisterOnRelease(Up, OnUpReleased);
 | 
			
		||||
@@ -83,7 +88,12 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp
 | 
			
		||||
    {
 | 
			
		||||
        isUpPressed = packet.IsUpPressed;
 | 
			
		||||
        isDownPressed = packet.IsDownPressed;
 | 
			
		||||
        Transform.Position = packet.Position;
 | 
			
		||||
 | 
			
		||||
        Vector2D localToServerPosition = Transform.Position.FromTo(packet.Position);
 | 
			
		||||
        if (localToServerPosition.MagnitudeSquared < 1f)
 | 
			
		||||
            networkTween = Transform.TweenPositionAdditive(tweenManager, .25f, localToServerPosition);
 | 
			
		||||
        else
 | 
			
		||||
            Transform.Position = packet.Position;
 | 
			
		||||
 | 
			
		||||
        physicsEngine2D.StepIndividual(rigidBody, sender.Ping);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user