Kelsidavis-WoWee/include/pipeline/wdt_loader.hpp
Kelsi d0e8b44866
Some checks are pending
Build / Build (arm64) (push) Waiting to run
Build / Build (x86-64) (push) Waiting to run
Build / Build (macOS arm64) (push) Waiting to run
Build / Build (windows-arm64) (push) Waiting to run
Build / Build (windows-x86-64) (push) Waiting to run
Security / CodeQL (C/C++) (push) Waiting to run
Security / Semgrep (push) Waiting to run
Security / Sanitizer Build (ASan/UBSan) (push) Waiting to run
Add instance support: WDT parser, WMO-only map loading, area triggers, BG queue accept
- WDT parser detects WMO-only maps (dungeons/raids/BGs) via MPHD flag 0x01
- WMO-only loading branch in loadOnlineWorldTerrain loads root WMO directly
- Area trigger system: loads AreaTrigger.dbc, checks player proximity, sends CMSG_AREATRIGGER
- BG queue acceptance via /join command sending CMSG_BATTLEFIELD_PORT
- SMSG_INSTANCE_DIFFICULTY handler stub
- Map change cleanup (clear old WMO/M2/terrain on map transfer)
- 5-second area trigger cooldown after map transfer to prevent ping-pong loops
2026-02-26 17:56:11 -08:00

26 lines
631 B
C++

#pragma once
#include <cstdint>
#include <string>
#include <vector>
namespace wowee {
namespace pipeline {
struct WDTInfo {
uint32_t mphdFlags = 0;
bool isWMOOnly() const { return mphdFlags & 0x01; } // WDTF_GLOBAL_WMO
std::string rootWMOPath; // from MWMO chunk (null-terminated string)
// MODF placement (only valid for WMO-only maps):
float position[3] = {}; // ADT placement space coords
float rotation[3] = {}; // degrees
uint16_t flags = 0;
uint16_t doodadSet = 0;
};
WDTInfo parseWDT(const std::vector<uint8_t>& data);
} // namespace pipeline
} // namespace wowee