InGamePacketHandler: don't bother checking for flag changes if the flag fields are identical

we don't need to check this on a bit by bit level if the integers are the same.

this saves 2-3 microseconds per packet on my machine, which doesn't sound like much, but it adds up when there are lots of players.
This commit is contained in:
Dylan K. Taylor 2022-07-24 20:35:49 +01:00
parent 3724479be3
commit b75bc61a64
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D

View File

@ -145,6 +145,8 @@ class InGamePacketHandler extends PacketHandler{
/** @var UseItemTransactionData|null */ /** @var UseItemTransactionData|null */
protected $lastRightClickData = null; protected $lastRightClickData = null;
protected ?int $lastPlayerAuthInputFlags = null;
/** @var bool */ /** @var bool */
public $forceMoveSync = false; public $forceMoveSync = false;
@ -208,6 +210,9 @@ class InGamePacketHandler extends PacketHandler{
$this->forceMoveSync = false; $this->forceMoveSync = false;
$inputFlags = $packet->getInputFlags(); $inputFlags = $packet->getInputFlags();
if($inputFlags !== $this->lastPlayerAuthInputFlags){
$this->lastPlayerAuthInputFlags = $inputFlags;
$sneaking = $this->resolveOnOffInputFlags($inputFlags, PlayerAuthInputFlags::START_SNEAKING, PlayerAuthInputFlags::STOP_SNEAKING); $sneaking = $this->resolveOnOffInputFlags($inputFlags, PlayerAuthInputFlags::START_SNEAKING, PlayerAuthInputFlags::STOP_SNEAKING);
$sprinting = $this->resolveOnOffInputFlags($inputFlags, PlayerAuthInputFlags::START_SPRINTING, PlayerAuthInputFlags::STOP_SPRINTING); $sprinting = $this->resolveOnOffInputFlags($inputFlags, PlayerAuthInputFlags::START_SPRINTING, PlayerAuthInputFlags::STOP_SPRINTING);
$swimming = $this->resolveOnOffInputFlags($inputFlags, PlayerAuthInputFlags::START_SWIMMING, PlayerAuthInputFlags::STOP_SWIMMING); $swimming = $this->resolveOnOffInputFlags($inputFlags, PlayerAuthInputFlags::START_SWIMMING, PlayerAuthInputFlags::STOP_SWIMMING);
@ -224,6 +229,7 @@ class InGamePacketHandler extends PacketHandler{
if($packet->hasFlag(PlayerAuthInputFlags::START_JUMPING)){ if($packet->hasFlag(PlayerAuthInputFlags::START_JUMPING)){
$this->player->jump(); $this->player->jump();
} }
}
if(!$this->forceMoveSync){ if(!$this->forceMoveSync){
//TODO: this packet has WAYYYYY more useful information that we're not using //TODO: this packet has WAYYYYY more useful information that we're not using