mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-04-03 20:03:50 +00:00
fix: MSG_MOVE_START_DESCEND never set DESCENDING flag
Only ASCENDING was cleared — the DESCENDING flag was never toggled, so outgoing movement packets during flight descent had incorrect flags. Also clears DESCENDING on start-ascend and stop-ascend for symmetry. Replaces static heartbeat log counter with member variable (was shared across instances and not thread-safe) and demotes to LOG_DEBUG.
This commit is contained in:
parent
b0aa4445a0
commit
4e0e234ae9
2 changed files with 11 additions and 5 deletions
|
|
@ -211,6 +211,7 @@ private:
|
||||||
uint32_t fallStartMs_ = 0;
|
uint32_t fallStartMs_ = 0;
|
||||||
|
|
||||||
// Heartbeat timing
|
// Heartbeat timing
|
||||||
|
int heartbeatLogCount_ = 0; // periodic position audit counter
|
||||||
float timeSinceLastMoveHeartbeat_ = 0.0f;
|
float timeSinceLastMoveHeartbeat_ = 0.0f;
|
||||||
float moveHeartbeatInterval_ = 0.5f;
|
float moveHeartbeatInterval_ = 0.5f;
|
||||||
uint32_t lastHeartbeatSendTimeMs_ = 0;
|
uint32_t lastHeartbeatSendTimeMs_ = 0;
|
||||||
|
|
|
||||||
|
|
@ -457,12 +457,18 @@ void MovementHandler::sendMovement(Opcode opcode) {
|
||||||
break;
|
break;
|
||||||
case Opcode::MSG_MOVE_START_ASCEND:
|
case Opcode::MSG_MOVE_START_ASCEND:
|
||||||
movementInfo.flags |= static_cast<uint32_t>(MovementFlags::ASCENDING);
|
movementInfo.flags |= static_cast<uint32_t>(MovementFlags::ASCENDING);
|
||||||
|
movementInfo.flags &= ~static_cast<uint32_t>(MovementFlags::DESCENDING);
|
||||||
break;
|
break;
|
||||||
case Opcode::MSG_MOVE_STOP_ASCEND:
|
case Opcode::MSG_MOVE_STOP_ASCEND:
|
||||||
movementInfo.flags &= ~static_cast<uint32_t>(MovementFlags::ASCENDING);
|
movementInfo.flags &= ~static_cast<uint32_t>(MovementFlags::ASCENDING);
|
||||||
|
movementInfo.flags &= ~static_cast<uint32_t>(MovementFlags::DESCENDING);
|
||||||
break;
|
break;
|
||||||
case Opcode::MSG_MOVE_START_DESCEND:
|
case Opcode::MSG_MOVE_START_DESCEND:
|
||||||
|
// Must set DESCENDING so outgoing movement packets carry the correct
|
||||||
|
// flag during flight descent. Only clearing ASCENDING left the flag
|
||||||
|
// field ambiguous (neither ascending nor descending).
|
||||||
movementInfo.flags &= ~static_cast<uint32_t>(MovementFlags::ASCENDING);
|
movementInfo.flags &= ~static_cast<uint32_t>(MovementFlags::ASCENDING);
|
||||||
|
movementInfo.flags |= static_cast<uint32_t>(MovementFlags::DESCENDING);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
@ -597,11 +603,10 @@ void MovementHandler::sendMovement(Opcode opcode) {
|
||||||
wireInfo.y = serverPos.y;
|
wireInfo.y = serverPos.y;
|
||||||
wireInfo.z = serverPos.z;
|
wireInfo.z = serverPos.z;
|
||||||
|
|
||||||
// Log outgoing position periodically to detect coordinate bugs
|
// Periodic position audit — DEBUG to avoid flooding production logs.
|
||||||
static int heartbeatLogCounter = 0;
|
if (opcode == Opcode::MSG_MOVE_HEARTBEAT && ++heartbeatLogCount_ % 30 == 0) {
|
||||||
if (opcode == Opcode::MSG_MOVE_HEARTBEAT && ++heartbeatLogCounter % 30 == 0) {
|
LOG_DEBUG("HEARTBEAT pos canonical=(", movementInfo.x, ",", movementInfo.y, ",", movementInfo.z,
|
||||||
LOG_WARNING("HEARTBEAT pos canonical=(", movementInfo.x, ",", movementInfo.y, ",", movementInfo.z,
|
") wire=(", wireInfo.x, ",", wireInfo.y, ",", wireInfo.z, ")");
|
||||||
") wire=(", wireInfo.x, ",", wireInfo.y, ",", wireInfo.z, ")");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wireInfo.orientation = core::coords::canonicalToServerYaw(wireInfo.orientation);
|
wireInfo.orientation = core::coords::canonicalToServerYaw(wireInfo.orientation);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue