public override void SetStateAndStep(ref ClientState state, InputFrame input, float deltaTime) { foreach (PlayerState player in state.Players().Values) { player.Position.Value = Bodies[player.GUID.Value].position; player.Rotation.Value = Bodies[player.GUID.Value].rotation; } common.logic.PlayerMovement.Execute(ref m_localPlayerBody, PlayerControllers[state.PlayerGUID].GetStats(), input, deltaTime); }
public override bool NeedsCorrection(ClientState localState, ClientState remoteState) { bool err = false; foreach (PlayerState player in remoteState.Players().Values) { err = (player.Position.Value - localState.Players()[player.GUID.Value].Position.Value).sqrMagnitude > 0.01f; if (err) { return(true); } } return(err); }
public override void UpdateFromState(ClientState state) { foreach (PlayerState player in state.Players().Values) { if (player.GUID.Value != m_playerGUID) { m_goalStates[player.GUID.Value] = player; } else { Bodies[player.GUID.Value].position = player.Position.Value; Bodies[player.GUID.Value].rotation = player.Rotation.Value; } } }