From b951d3475c19a0b594ee4af1af37482e2dbc0929 Mon Sep 17 00:00:00 2001 From: collett Date: Sun, 8 Aug 2021 05:11:52 +0900 Subject: [PATCH] set m_rot early as well --- src/scripts/common/eobj/HousingEstateEntrance.cpp | 2 +- src/scripts/common/warptaxi/WarpTaxi131088.cpp | 2 +- src/world/Actor/Player.cpp | 13 ++++++------- src/world/Actor/Player.h | 2 +- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/scripts/common/eobj/HousingEstateEntrance.cpp b/src/scripts/common/eobj/HousingEstateEntrance.cpp index 2abc371b..bb280288 100644 --- a/src/scripts/common/eobj/HousingEstateEntrance.cpp +++ b/src/scripts/common/eobj/HousingEstateEntrance.cpp @@ -78,7 +78,7 @@ public: return; } - player.setInstance( internalZone, pos ); + player.setInstance( internalZone, pos, player.getRot() ); } ); } }; diff --git a/src/scripts/common/warptaxi/WarpTaxi131088.cpp b/src/scripts/common/warptaxi/WarpTaxi131088.cpp index d5049503..7375a18a 100644 --- a/src/scripts/common/warptaxi/WarpTaxi131088.cpp +++ b/src/scripts/common/warptaxi/WarpTaxi131088.cpp @@ -24,7 +24,7 @@ public: if( instance ) { Common::FFXIVARR_POSITION3 pos { 30, 1, 0 }; - player.setInstance( instance, pos ); + player.setInstance( instance, pos, player.getRot() ); } } }; diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index aa169fbd..90f5d996 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -495,7 +495,7 @@ bool Sapphire::Entity::Player::setInstance( TerritoryPtr instance ) return teriMgr.movePlayer( instance, getAsPlayer() ); } -bool Sapphire::Entity::Player::setInstance( TerritoryPtr instance, Common::FFXIVARR_POSITION3 pos ) +bool Sapphire::Entity::Player::setInstance( TerritoryPtr instance, Common::FFXIVARR_POSITION3 pos, float rot ) { m_onEnterEventDone = false; if( !instance ) @@ -514,12 +514,16 @@ bool Sapphire::Entity::Player::setInstance( TerritoryPtr instance, Common::FFXIV } m_pos = pos; + m_rot = rot; if( teriMgr.movePlayer( instance, getAsPlayer() ) ) { return true; } else + { m_pos = m_prevPos; + m_rot= m_prevRot; + } return false; } @@ -2806,12 +2810,7 @@ bool Sapphire::Entity::Player::enterPredefinedPrivateInstance( uint32_t zoneId ) auto instance = getOrCreatePrivateInstance( zoneId ); if( instance ) - { - auto result = setInstance( instance, info.pos ); - if( result ) - setRot( info.rot ); - return result; - } + return setInstance( instance, info.pos, info.rot ); } sendUrgent( "instance id: {} is not defined.", zoneId ); auto instance = getOrCreatePrivateInstance( zoneId ); diff --git a/src/world/Actor/Player.h b/src/world/Actor/Player.h index 208dfbfd..cc6966a2 100644 --- a/src/world/Actor/Player.h +++ b/src/world/Actor/Player.h @@ -490,7 +490,7 @@ namespace Sapphire::Entity bool setInstance( TerritoryPtr instance ); /*! sets the players instance & initiates zoning process */ - bool setInstance( Sapphire::TerritoryPtr instance, Sapphire::Common::FFXIVARR_POSITION3 pos ); + bool setInstance( Sapphire::TerritoryPtr instance, Sapphire::Common::FFXIVARR_POSITION3 pos, float rot ); /*! returns the player to their position before zoning into an instance */ bool exitInstance();