mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-28 15:17:46 +00:00
Navmeshes should now work again using bgpath
This commit is contained in:
parent
e572acc011
commit
18f23dbc64
5 changed files with 25 additions and 11 deletions
|
@ -205,7 +205,7 @@ bool Sapphire::Entity::BNpc::moveTo( const FFXIVARR_POSITION3& pos )
|
||||||
if( Util::getTimeMs() - m_naviLastUpdate > 500 )
|
if( Util::getTimeMs() - m_naviLastUpdate > 500 )
|
||||||
{
|
{
|
||||||
auto pNaviMgr = m_pFw->get< World::Manager::NaviMgr >();
|
auto pNaviMgr = m_pFw->get< World::Manager::NaviMgr >();
|
||||||
auto pNaviProvider = pNaviMgr->getNaviProvider( m_pCurrentZone->getInternalName() );
|
auto pNaviProvider = pNaviMgr->getNaviProvider( m_pCurrentZone->getBgPath() );
|
||||||
|
|
||||||
if( !pNaviProvider )
|
if( !pNaviProvider )
|
||||||
{
|
{
|
||||||
|
|
|
@ -10,11 +10,16 @@ Sapphire::World::Manager::NaviMgr::NaviMgr( FrameworkPtr pFw ) :
|
||||||
|
|
||||||
bool Sapphire::World::Manager::NaviMgr::setupTerritory( const std::string& internalName )
|
bool Sapphire::World::Manager::NaviMgr::setupTerritory( const std::string& internalName )
|
||||||
{
|
{
|
||||||
auto provider = Navi::make_NaviProvider( internalName, m_pFw );
|
std::string bg;
|
||||||
|
auto findPos = internalName.find_last_of( "/" );
|
||||||
|
if( findPos != std::string::npos )
|
||||||
|
bg = internalName.substr( findPos + 1 );
|
||||||
|
|
||||||
|
auto provider = Navi::make_NaviProvider( bg, m_pFw );
|
||||||
|
|
||||||
if( provider->init() )
|
if( provider->init() )
|
||||||
{
|
{
|
||||||
m_naviProviderTerritoryMap.insert( std::make_pair( internalName, provider ) );
|
m_naviProviderTerritoryMap.insert( std::make_pair( bg, provider ) );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,8 +28,13 @@ bool Sapphire::World::Manager::NaviMgr::setupTerritory( const std::string& inter
|
||||||
|
|
||||||
Sapphire::World::Navi::NaviProviderPtr Sapphire::World::Manager::NaviMgr::getNaviProvider( const std::string& internalName )
|
Sapphire::World::Navi::NaviProviderPtr Sapphire::World::Manager::NaviMgr::getNaviProvider( const std::string& internalName )
|
||||||
{
|
{
|
||||||
if( m_naviProviderTerritoryMap.find( internalName ) != m_naviProviderTerritoryMap.end() )
|
std::string bg;
|
||||||
return m_naviProviderTerritoryMap[ internalName ];
|
auto findPos = internalName.find_last_of( "/" );
|
||||||
|
if( findPos != std::string::npos )
|
||||||
|
bg = internalName.substr( findPos + 1 );
|
||||||
|
|
||||||
|
if( m_naviProviderTerritoryMap.find( bg ) != m_naviProviderTerritoryMap.end() )
|
||||||
|
return m_naviProviderTerritoryMap[ bg ];
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,12 +166,7 @@ bool Sapphire::World::Manager::TerritoryMgr::createDefaultTerritories()
|
||||||
|
|
||||||
auto pNaviMgr = framework()->get< Manager::NaviMgr >();
|
auto pNaviMgr = framework()->get< Manager::NaviMgr >();
|
||||||
std::string bgPath = territoryInfo->bg;
|
std::string bgPath = territoryInfo->bg;
|
||||||
std::string bg;
|
bool hasNaviMesh = pNaviMgr->setupTerritory( bgPath );
|
||||||
auto findPos = bgPath.find_last_of( "/" );
|
|
||||||
if( findPos != std::string::npos )
|
|
||||||
bg = bgPath.substr( findPos + 1 );
|
|
||||||
|
|
||||||
bool hasNaviMesh = pNaviMgr->setupTerritory( bg );
|
|
||||||
|
|
||||||
Logger::info( "{0}\t{1}\t{2}\t{3:<10}\t{4}\t{5}\t{6}",
|
Logger::info( "{0}\t{1}\t{2}\t{3:<10}\t{4}\t{5}\t{6}",
|
||||||
territoryTypeId,
|
territoryTypeId,
|
||||||
|
|
|
@ -79,6 +79,7 @@ Sapphire::Zone::Zone( uint16_t territoryTypeId, uint32_t guId,
|
||||||
|
|
||||||
m_weatherOverride = Weather::None;
|
m_weatherOverride = Weather::None;
|
||||||
m_territoryTypeInfo = pExdData->get< Sapphire::Data::TerritoryType >( territoryTypeId );
|
m_territoryTypeInfo = pExdData->get< Sapphire::Data::TerritoryType >( territoryTypeId );
|
||||||
|
m_bgPath = m_territoryTypeInfo->bg;
|
||||||
|
|
||||||
loadWeatherRates();
|
loadWeatherRates();
|
||||||
loadSpawnGroups();
|
loadSpawnGroups();
|
||||||
|
@ -352,6 +353,11 @@ const std::string& Sapphire::Zone::getInternalName() const
|
||||||
return m_internalName;
|
return m_internalName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const std::string& Sapphire::Zone::getBgPath() const
|
||||||
|
{
|
||||||
|
return m_bgPath;
|
||||||
|
}
|
||||||
|
|
||||||
std::size_t Sapphire::Zone::getPopCount() const
|
std::size_t Sapphire::Zone::getPopCount() const
|
||||||
{
|
{
|
||||||
return m_playerMap.size();
|
return m_playerMap.size();
|
||||||
|
|
|
@ -38,6 +38,7 @@ namespace Sapphire
|
||||||
|
|
||||||
std::string m_placeName;
|
std::string m_placeName;
|
||||||
std::string m_internalName;
|
std::string m_internalName;
|
||||||
|
std::string m_bgPath;
|
||||||
|
|
||||||
std::unordered_map< int32_t, Entity::PlayerPtr > m_playerMap;
|
std::unordered_map< int32_t, Entity::PlayerPtr > m_playerMap;
|
||||||
std::unordered_map< int32_t, Entity::BNpcPtr > m_bNpcMap;
|
std::unordered_map< int32_t, Entity::BNpcPtr > m_bNpcMap;
|
||||||
|
@ -135,6 +136,8 @@ namespace Sapphire
|
||||||
|
|
||||||
const std::string& getInternalName() const;
|
const std::string& getInternalName() const;
|
||||||
|
|
||||||
|
const std::string& getBgPath() const;
|
||||||
|
|
||||||
std::size_t getPopCount() const;
|
std::size_t getPopCount() const;
|
||||||
|
|
||||||
void loadWeatherRates();
|
void loadWeatherRates();
|
||||||
|
|
Loading…
Add table
Reference in a new issue