mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-03 08:03:50 +00:00
Add taxi system, fix WMO interior lighting, ramp collision, and /unstuck
- Implement flight path system: SMSG_SHOWTAXINODES parser, CMSG_ACTIVATETAXIEXPRESS builder, BFS multi-hop pathfinding through TaxiNodes/TaxiPath DBC, taxi destination UI, movement blocking during flight - Fix WMO interiors too dark by boosting vertex color lighting multiplier - Dim M2 objects inside WMO interiors (rugs, furniture) via per-instance interior detection - Fix ramp/stair clipping by lowering wall collision normal threshold from 0.85 to 0.55 - Restore 5-sample cardinal footprint for ground detection to fix rug slipping - Fix /unstuck command to reset player Z to WMO/terrain floor height - Handle MSG_MOVE_TELEPORT_ACK and SMSG_TRANSFER_PENDING for hearthstone teleports - Fix spawning under Stormwind with online-mode camera controller reset
This commit is contained in:
parent
3fa519ac96
commit
e8f8426a43
15 changed files with 691 additions and 108 deletions
|
|
@ -1652,6 +1652,48 @@ public:
|
|||
static bool parse(network::Packet& packet, ListInventoryData& data);
|
||||
};
|
||||
|
||||
// ============================================================
|
||||
// Taxi / Flight Paths
|
||||
// ============================================================
|
||||
|
||||
static constexpr uint32_t TLK_TAXI_MASK_SIZE = 12;
|
||||
|
||||
/** SMSG_SHOWTAXINODES data */
|
||||
struct ShowTaxiNodesData {
|
||||
uint32_t windowInfo = 0; // 1 = show window
|
||||
uint64_t npcGuid = 0;
|
||||
uint32_t nearestNode = 0; // Taxi node player is at
|
||||
uint32_t nodeMask[TLK_TAXI_MASK_SIZE] = {};
|
||||
bool isNodeKnown(uint32_t nodeId) const {
|
||||
uint32_t idx = nodeId / 32;
|
||||
uint32_t bit = nodeId % 32;
|
||||
return idx < TLK_TAXI_MASK_SIZE && (nodeMask[idx] & (1u << bit));
|
||||
}
|
||||
};
|
||||
|
||||
/** SMSG_SHOWTAXINODES parser */
|
||||
class ShowTaxiNodesParser {
|
||||
public:
|
||||
static bool parse(network::Packet& packet, ShowTaxiNodesData& data);
|
||||
};
|
||||
|
||||
/** SMSG_ACTIVATETAXIREPLY data */
|
||||
struct ActivateTaxiReplyData {
|
||||
uint32_t result = 0; // 0 = OK
|
||||
};
|
||||
|
||||
/** SMSG_ACTIVATETAXIREPLY parser */
|
||||
class ActivateTaxiReplyParser {
|
||||
public:
|
||||
static bool parse(network::Packet& packet, ActivateTaxiReplyData& data);
|
||||
};
|
||||
|
||||
/** CMSG_ACTIVATETAXIEXPRESS packet builder */
|
||||
class ActivateTaxiExpressPacket {
|
||||
public:
|
||||
static network::Packet build(uint64_t npcGuid, const std::vector<uint32_t>& pathNodes);
|
||||
};
|
||||
|
||||
/** CMSG_REPOP_REQUEST packet builder */
|
||||
class RepopRequestPacket {
|
||||
public:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue