Core/Movement: updated collision height packet handling to ack handling
This commit is contained in:
1 parent
4b56a7b9a3
commit
631b499414
8 files changed
+122
-20
No files matched your search
@@ -19,6 +19,7 @@
|
||||
#include "MovementPacketSender.h"
|
||||
#include "MovementStructures.h"
|
||||
#include "Player.h"
|
||||
#include "SharedDefines.h"
|
||||
#include "WorldPacket.h"
|
||||
#include "WorldSession.h"
|
||||
|
||||
@@ -77,6 +78,48 @@ MovementChangeType MovementPacketSender::GetChangeTypeByMovementFlag(MovementFla
|
||||
}
|
||||
}
|
||||
|
||||
void MovementPacketSender::SendHeightChangeToMover(Unit* unit, float newHeight, UpdateCollisionHeightReason reason)
|
||||
{
|
||||
GameClient* controller = unit->GetGameClientMovingMe();
|
||||
|
||||
ASSERT(controller);
|
||||
|
||||
uint32 mCounter = unit->GetMovementCounterAndInc();
|
||||
PlayerMovementPendingChange pendingChange;
|
||||
pendingChange.movementCounter = mCounter;
|
||||
pendingChange.newValue = newHeight;
|
||||
pendingChange.movementChangeType = MovementChangeType::SET_COLLISION_HGT;
|
||||
unit->AssignPendingMovementChange(pendingChange.movementChangeType, std::move(pendingChange));
|
||||
static MovementStatusElements const extraElements[] =
|
||||
{
|
||||
MSEExtraTwoBits,
|
||||
MSEExtraFloat
|
||||
};
|
||||
|
||||
Movement::ExtraMovementStatusElement extra(extraElements);
|
||||
extra.Data.floatData = newHeight;
|
||||
extra.Data.byteData = reason;
|
||||
|
||||
WorldPacket data(SMSG_MOVE_SET_COLLISION_HEIGHT, 8 + 1 + 4);
|
||||
unit->WriteMovementInfo(data, &extra, &mCounter);
|
||||
controller->SendDirectMessage(&data);
|
||||
}
|
||||
|
||||
void MovementPacketSender::SendHeightChangeToObservers(Unit* unit, float newHeight)
|
||||
{
|
||||
GameClient* controller = unit->GetGameClientMovingMe();
|
||||
|
||||
ASSERT(controller);
|
||||
|
||||
WorldPacket data(SMSG_MOVE_UPDATE_COLLISION_HEIGHT);
|
||||
static MovementStatusElements const speedVal = MSEExtraFloat;
|
||||
Movement::ExtraMovementStatusElement extra(&speedVal);
|
||||
extra.Data.floatData = newHeight;
|
||||
|
||||
unit->WriteMovementInfo(data, &extra);
|
||||
unit->SendMessageToSet(&data, controller->GetBasePlayer());
|
||||
}
|
||||
|
||||
void MovementPacketSender::SendSpeedChangeToMover(Unit* unit, UnitMoveType mtype, float newSpeedFlat)
|
||||
{
|
||||
GameClient* controller = unit->GetGameClientMovingMe();
|
||||
|
||||
Reference in new issue
Block a user