fixes
This commit is contained in:
@@ -222,7 +222,7 @@ public class WorldStateManager
|
||||
|
||||
public void RecordPlayerInput(uint playerIndex, ulong frame, PlayerInputState2 inputState, PlayerMovementState movementState)
|
||||
{
|
||||
WorldState worldState = NetworkManager.server != null ? serverWorldState : clientWorldState;
|
||||
WorldState worldState = /*NetworkManager.server != null*/IsServer ? serverWorldState : clientWorldState;
|
||||
PlayerFrame[] playerFrames = worldState.playerFrameHistory[playerIndex];
|
||||
PlayerFrame playerFrame = playerFrames[frame % 120];
|
||||
|
||||
@@ -562,10 +562,10 @@ public class WorldStateManager
|
||||
{
|
||||
IPlayerInput playerInput = playerActor.GetScript<PlayerMovement>().Input;
|
||||
|
||||
if (IsLocalClient && reportedPlayerId == NetworkManager.LocalPlayerClientId)
|
||||
/*if (IsLocalClient && reportedPlayerId == NetworkManager.LocalPlayerClientId)
|
||||
{ }
|
||||
else
|
||||
playerInput.SetFrame(reportedFrame);//playerInput.SetState(reportedFrame, inputState, actorState);
|
||||
playerInput.SetFrame(reportedFrame);*///playerInput.SetState(reportedFrame, inputState, actorState);
|
||||
|
||||
if (!IsLocalClient && playerInput is PlayerInputNetwork2)
|
||||
{
|
||||
|
||||
@@ -67,8 +67,8 @@ public class PlayerInput2 : IPlayerInput
|
||||
_recordState.ViewDelta += new Float2(Input.GetAxisRaw("Mouse X"), Input.GetAxisRaw("Mouse Y")) * sensitivity;
|
||||
_recordState.ViewDelta += new Float2(Input.GetAxisRaw("LookRight"), Input.GetAxisRaw("LookUp")) * Time.DeltaTime * turnSpeed;
|
||||
|
||||
_recordState.MoveForward = Math.Max(_recordState.MoveForward, Input.GetAxis("Vertical"));
|
||||
_recordState.MoveRight = Math.Max(_recordState.MoveRight, Input.GetAxis("Horizontal"));
|
||||
_recordState.MoveForward = MathF.MaxMagnitude(_recordState.MoveForward, Input.GetAxis("Vertical"));
|
||||
_recordState.MoveRight = MathF.MaxMagnitude(_recordState.MoveRight, Input.GetAxis("Horizontal"));
|
||||
_recordState.Attack |= Input.GetAction("Attack");
|
||||
_recordState.Jump |= Input.GetAction("Jump");
|
||||
}
|
||||
@@ -80,8 +80,28 @@ public class PlayerInput2 : IPlayerInput
|
||||
|
||||
public class PlayerInputNetwork2 : IPlayerInput
|
||||
{
|
||||
public void SetFrame(ulong frame) { }
|
||||
public void UpdateState() { }
|
||||
private uint _playerId;
|
||||
private WorldStateManager _worldStateManager;
|
||||
private ulong _frame;
|
||||
private PlayerInputState2 _state;
|
||||
|
||||
public PlayerInputNetwork2(uint playerId, WorldStateManager worldStateManager)
|
||||
{
|
||||
_playerId = playerId;
|
||||
_worldStateManager = worldStateManager;
|
||||
}
|
||||
|
||||
public void SetFrame(ulong frame) => _frame = frame;
|
||||
|
||||
public void UpdateState()
|
||||
{
|
||||
_worldStateManager.GetPlayerInputState(_playerId, _frame, out _state);
|
||||
}
|
||||
|
||||
public PlayerInputState2 GetState() { return default; }
|
||||
public void ResetState() { }
|
||||
|
||||
public void ResetState()
|
||||
{
|
||||
_state = new PlayerInputState2();
|
||||
}
|
||||
}
|
||||
@@ -184,19 +184,24 @@ public class PlayerMovement : Script
|
||||
|
||||
PlayerId = playerId;
|
||||
bool isServerScene = Scene.Name == "ServerScene";
|
||||
if (isServerScene)
|
||||
worldStateManager = NetworkManager.serverWorldStateManager;
|
||||
else
|
||||
worldStateManager = NetworkManager.clientWorldStateManager;
|
||||
|
||||
if (PlayerId == NetworkManager.LocalPlayerClientId && !isServerScene)//if (NetworkReplicator.GetObjectRole(this.Parent) == NetworkObjectRole.OwnedAuthoritative)// if (playerId == NetworkManager.LocalPlayerClientId)
|
||||
{
|
||||
Console.Print("local player?: " + playerId.ToString());
|
||||
//string demoPath = System.IO.Path.Combine(AssetManager.DemoPath, $"{DateTimeOffset.Now.UtcTicks}.gdem");
|
||||
//input = new PlayerInputLocal(playerActor, demoPath); // TODO: support recording
|
||||
Input = new PlayerInput2();//new PlayerInputLocal(playerActor);
|
||||
worldStateManager = NetworkManager.serverWorldStateManager;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.Print("network player: " + playerId.ToString());
|
||||
Input = new PlayerInputNetwork2();
|
||||
worldStateManager = NetworkManager.clientWorldStateManager;
|
||||
Input = new PlayerInputNetwork2(playerId, worldStateManager);
|
||||
|
||||
}
|
||||
Assert.IsTrue(worldStateManager != null);
|
||||
}
|
||||
@@ -281,6 +286,7 @@ public class PlayerMovement : Script
|
||||
//if (Input is PlayerInputDemo /*&& currentInputFrame2 >= currentInputFrame*/)
|
||||
// return;
|
||||
|
||||
Input.SetFrame(worldStateManager.ClientFrame);
|
||||
Input.UpdateState();
|
||||
|
||||
/*if (input.frame > 0)
|
||||
@@ -340,7 +346,7 @@ public class PlayerMovement : Script
|
||||
//Input.OnFixedUpdate();
|
||||
PlayerInputState2 inputState = Input.GetState();
|
||||
|
||||
if (Input is PlayerInputNetwork2)
|
||||
if (false && Input is PlayerInputNetwork2)
|
||||
{
|
||||
#if false
|
||||
bool canpredict = true;
|
||||
@@ -620,7 +626,7 @@ public class PlayerMovement : Script
|
||||
|
||||
//Console.Print($"recording frame {input.frame}, client: {GameModeManager.ClientFrame}, server: {GameModeManager.ServerFrame}");
|
||||
worldStateManager.RecordPlayerInput(PlayerId, worldStateManager.Frame, inputState, movementState); // MAYBE?
|
||||
//Input.OnEndFrame();
|
||||
Input.ResetState();
|
||||
}
|
||||
|
||||
if (movementState.position.Length < 0.1)
|
||||
|
||||
Reference in New Issue
Block a user