BG BotFill : pathfinding des bots repare (tuiles navmesh + generateur de mouvement)
1. Les tuiles navmesh ne se chargeaient qu avec les grilles occupees : tout trajet de bot vers une zone vide retombait en BuildShortcut (ligne droite a travers le decor). Prechargement des tuiles des 5 cartes BG au boot. 2. MovePathfinding empilait un PointMovementGenerator generatePath=false qui relancait un deplacement en ligne droite au moindre changement de vitesse, ecrasant la spline du chemin. Remplace par un generateur passif. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -450,15 +450,16 @@ void MotionMaster::MovePathfinding(PathParameter* pathParam)
|
||||
{
|
||||
if (!pathParam)
|
||||
return;
|
||||
UnitMoveType curMoveType = UnitMoveType::MOVE_RUN;
|
||||
G3D::Vector3 dest = pathParam->destPosition;
|
||||
Mutate(new PointMovementGenerator<Player>(0, dest.x, dest.y, dest.z, false, _owner->GetSpeed(curMoveType)), MOTION_SLOT_CONTROLLED);// MOTION_SLOT_ACTIVE);
|
||||
|
||||
// SylvaniaCore (module BG BotFill): l ancien PointMovementGenerator (generatePath=false)
|
||||
// relancait un deplacement en ligne droite au moindre evenement (changement de vitesse),
|
||||
// ecrasant la spline du chemin calcule -> bots a travers le decor et vitesse anormale.
|
||||
// On lance la spline du chemin puis on pose un generateur passif qui attend sa fin.
|
||||
Movement::MoveSplineInit init(_owner);
|
||||
init.MovebyPath(pathParam->finishPaths);
|
||||
init.SetSmooth();
|
||||
init.SetWalk(false);
|
||||
init.Launch();
|
||||
Mutate(new EffectMovementGenerator(0), MOTION_SLOT_CONTROLLED);
|
||||
}
|
||||
|
||||
void MotionMaster::MoveKnockbackFrom(float srcX, float srcY, float speedXY, float speedZ, Movement::SpellEffectExtraData const* spellEffectExtraData /*= nullptr*/)
|
||||
|
||||
@@ -1882,6 +1882,22 @@ void World::SetInitialWorldSettings()
|
||||
MMAP::MMapManager* mmmgr = MMAP::MMapFactory::createOrGetMMapManager();
|
||||
mmmgr->InitializeThreadUnsafe(mapData);
|
||||
|
||||
// SylvaniaCore (module BG BotFill): precharge les tuiles navmesh des cartes de champs de
|
||||
// bataille. Sans cela, les tuiles ne se chargent qu avec les grilles (la ou il y a des
|
||||
// joueurs) et le pathfinding des bots vers les zones vides retombe en ligne droite
|
||||
// (BuildShortcut) : bots a travers le decor.
|
||||
if (sConfigMgr->GetIntDefault("pbotbg", 0) || sConfigMgr->GetIntDefault("pbotall", 1))
|
||||
{
|
||||
uint32 preloadTiles = 0;
|
||||
uint32 const bgNavMaps[5] = { 30, 489, 529, 566, 628 };
|
||||
for (uint32 bgMapId : bgNavMaps)
|
||||
for (int32 gx = 0; gx < 64; ++gx)
|
||||
for (int32 gy = 0; gy < 64; ++gy)
|
||||
if (mmmgr->loadMap(m_dataPath, bgMapId, gx, gy))
|
||||
++preloadTiles;
|
||||
TC_LOG_INFO("server.loading", ">> BG BotFill: %u tuiles navmesh prechargees pour les champs de bataille", preloadTiles);
|
||||
}
|
||||
|
||||
TC_LOG_INFO("server.loading", "Loading SpellInfo store...");
|
||||
sSpellMgr->LoadSpellInfoStore();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user