fix(rendering): emote animations, WMO portal culling, transport teleport

Emote animations: fix DBC chain for /laugh, /flirt, /sleep, /fart, /stink.
Previously all emotes with AnimID=0 used emoteRef as animId (wrong DBC
record IDs). Now resolves through Emotes.dbc properly, with per-emote
overrides for emotes whose DBC chain yields 0. Adds Emotes.dbc load
failure warning and diagnostic logging.

WMO culling: skip portal culling when camera is outside all groups (fixes
vanishing Stormwind ground tiles). Also handle indoor/outdoor AABB overlap
by showing all groups when position is in both indoor and outdoor AABBs.

Transport: clear ONTRANSPORT flag and transport state when transport not
found, preventing stale transport data from teleporting player to map
origin. Add area trigger safety net near (0,0,0) on Eastern Kingdoms.
This commit is contained in:
Kelsi 2026-04-05 17:25:25 -07:00
parent fe29ccad3f
commit aff545edef
5 changed files with 101 additions and 10 deletions

View file

@ -93,6 +93,9 @@ void AnimationController::playEmote(const std::string& emoteName) {
auto* characterRenderer = renderer_->getCharacterRenderer();
uint32_t characterInstanceId = renderer_->getCharacterInstanceId();
if (characterRenderer && characterInstanceId > 0) {
bool hasAnim = characterRenderer->hasAnimation(characterInstanceId, animId);
LOG_WARNING("playEmote '", emoteName, "': animId=", animId, " loop=", loop,
" modelHasAnim=", hasAnim);
characterRenderer->playAnimation(characterInstanceId, animId, loop);
lastPlayerAnimRequest_ = animId;
lastPlayerAnimLoopRequest_ = loop;