From 19a0ea2e93e7331b7f8ce2b6ccfed0b6e92170bf Mon Sep 17 00:00:00 2001 From: Mordred Date: Fri, 19 Apr 2019 14:04:38 +0200 Subject: [PATCH] Fix roaming --- src/world/Actor/BNpc.cpp | 6 +++++- src/world/Navi/NaviProvider.cpp | 7 +++++++ src/world/Navi/NaviProvider.h | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/world/Actor/BNpc.cpp b/src/world/Actor/BNpc.cpp index 7c0e8808..0080d550 100644 --- a/src/world/Actor/BNpc.cpp +++ b/src/world/Actor/BNpc.cpp @@ -278,10 +278,14 @@ bool Sapphire::Entity::BNpc::moveTo( const FFXIVARR_POSITION3& pos ) //pNaviProvider->setMoveTarget( *this, pos ); auto pos1 = pNaviProvider->getMovePos( *this ); - if( Util::distance( pos1, pos ) < 0.1f ) + if( Util::distance( pos1, pos ) < 1.1f ) { // Reached destination + face( pos1 ); + setPos( pos1 ); + sendPositionUpdate(); pNaviProvider->resetMoveTarget( *this ); + pNaviProvider->updateAgentPosition( *this ); return true; } //Logger::debug( "{} {} {}", pos1.x, pos1.y, pos1.z ); diff --git a/src/world/Navi/NaviProvider.cpp b/src/world/Navi/NaviProvider.cpp index ff735ac6..3d983b19 100644 --- a/src/world/Navi/NaviProvider.cpp +++ b/src/world/Navi/NaviProvider.cpp @@ -649,3 +649,10 @@ void Sapphire::World::Navi::NaviProvider::resetMoveTarget( Entity::Chara& chara { m_pCrowd->resetMoveTarget( chara.getAgentId() ); } + +void Sapphire::World::Navi::NaviProvider::updateAgentPosition( Entity::Chara& chara ) +{ + removeAgent( chara ); + auto newIndex = addAgent( chara ); + chara.setAgentId( newIndex ); +} diff --git a/src/world/Navi/NaviProvider.h b/src/world/Navi/NaviProvider.h index 95f7b488..965de453 100644 --- a/src/world/Navi/NaviProvider.h +++ b/src/world/Navi/NaviProvider.h @@ -65,6 +65,8 @@ namespace Sapphire::World::Navi void resetMoveTarget( Entity::Chara& chara ); + void updateAgentPosition( Entity::Chara& chara ); + protected: std::string m_internalName;