mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
fix: pass correct offset to setPlayerOnTransport on transport boarding
Both CREATE_OBJECT and MOVEMENT update paths called setPlayerOnTransport(guid, vec3(0)) then immediately overwrote playerTransportOffset_ on the next line. This left a one-frame window where the composed world position used (0,0,0) as the local offset, causing the player to visually snap to the transport origin. Compute the canonical offset first and pass it directly.
This commit is contained in:
parent
a619f44dfb
commit
e54ed1d46f
1 changed files with 4 additions and 4 deletions
|
|
@ -11293,10 +11293,10 @@ void GameHandler::applyUpdateObjectBlock(const UpdateBlock& block, bool& newItem
|
|||
// Track player-on-transport state
|
||||
if (block.guid == playerGuid) {
|
||||
if (block.onTransport) {
|
||||
setPlayerOnTransport(block.transportGuid, glm::vec3(0.0f));
|
||||
// Convert transport offset from server → canonical coordinates
|
||||
glm::vec3 serverOffset(block.transportX, block.transportY, block.transportZ);
|
||||
playerTransportOffset_ = core::coords::serverToCanonical(serverOffset);
|
||||
glm::vec3 canonicalOffset = core::coords::serverToCanonical(serverOffset);
|
||||
setPlayerOnTransport(block.transportGuid, canonicalOffset);
|
||||
if (transportManager_ && transportManager_->getTransport(playerTransportGuid_)) {
|
||||
glm::vec3 composed = transportManager_->getPlayerWorldPosition(playerTransportGuid_, playerTransportOffset_);
|
||||
entity->setPosition(composed.x, composed.y, composed.z, oCanonical);
|
||||
|
|
@ -12430,10 +12430,10 @@ void GameHandler::applyUpdateObjectBlock(const UpdateBlock& block, bool& newItem
|
|||
|
||||
// Track player-on-transport state from MOVEMENT updates
|
||||
if (block.onTransport) {
|
||||
setPlayerOnTransport(block.transportGuid, glm::vec3(0.0f));
|
||||
// Convert transport offset from server → canonical coordinates
|
||||
glm::vec3 serverOffset(block.transportX, block.transportY, block.transportZ);
|
||||
playerTransportOffset_ = core::coords::serverToCanonical(serverOffset);
|
||||
glm::vec3 canonicalOffset = core::coords::serverToCanonical(serverOffset);
|
||||
setPlayerOnTransport(block.transportGuid, canonicalOffset);
|
||||
if (transportManager_ && transportManager_->getTransport(playerTransportGuid_)) {
|
||||
glm::vec3 composed = transportManager_->getPlayerWorldPosition(playerTransportGuid_, playerTransportOffset_);
|
||||
entity->setPosition(composed.x, composed.y, composed.z, oCanonical);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue