mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-23 07:40:14 +00:00
Load single-player NPC spawns from local AzerothCore SQL assets
This commit is contained in:
parent
5f519e77e3
commit
ae37e5592e
164 changed files with 1862344 additions and 60 deletions
|
|
@ -342,7 +342,13 @@ void Application::update(float deltaTime) {
|
|||
if (world) {
|
||||
world->update(deltaTime);
|
||||
}
|
||||
// Local test NPC spawning disabled.
|
||||
// Spawn/update local single-player NPCs.
|
||||
if (!npcsSpawned && singlePlayerMode) {
|
||||
spawnNpcs();
|
||||
}
|
||||
if (npcManager && renderer && renderer->getCharacterRenderer()) {
|
||||
npcManager->update(deltaTime, renderer->getCharacterRenderer());
|
||||
}
|
||||
|
||||
// Sync character render position → canonical WoW coords each frame
|
||||
if (renderer && gameHandler) {
|
||||
|
|
@ -854,17 +860,25 @@ void Application::spawnNpcs() {
|
|||
if (!gameHandler) return;
|
||||
|
||||
npcManager = std::make_unique<game::NpcManager>();
|
||||
glm::vec3 playerSpawnGL = renderer->getCamera()->getPosition() - glm::vec3(0.0f, 0.0f, 5.0f);
|
||||
glm::vec3 playerSpawnGL = renderer->getCharacterPosition();
|
||||
glm::vec3 playerCanonical = core::coords::renderToCanonical(playerSpawnGL);
|
||||
std::string mapName = "Azeroth";
|
||||
if (auto* minimap = renderer->getMinimap()) {
|
||||
mapName = minimap->getMapName();
|
||||
}
|
||||
|
||||
npcManager->initialize(assetManager.get(),
|
||||
renderer->getCharacterRenderer(),
|
||||
gameHandler->getEntityManager(),
|
||||
playerSpawnGL);
|
||||
mapName,
|
||||
playerCanonical,
|
||||
renderer->getTerrainManager());
|
||||
|
||||
// If the player WoW position hasn't been set by the server yet (offline mode),
|
||||
// derive it from the camera so targeting distance calculations work.
|
||||
const auto& movement = gameHandler->getMovementInfo();
|
||||
if (movement.x == 0.0f && movement.y == 0.0f && movement.z == 0.0f) {
|
||||
glm::vec3 canonical = core::coords::renderToCanonical(playerSpawnGL);
|
||||
glm::vec3 canonical = playerCanonical;
|
||||
gameHandler->setPosition(canonical.x, canonical.y, canonical.z);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue