mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
Add transport support, gameobject queries, and fix item use
- Add setInstancePosition() to M2Renderer and WMORenderer for moving transport instances at runtime - Detect UPDATEFLAG_TRANSPORT on gameobjects and track transport GUIDs - Parse player-on-transport state from movement blocks - Wire transport move callback in Application to update render positions - Implement CMSG_GAMEOBJECT_QUERY / SMSG_GAMEOBJECT_QUERY_RESPONSE so gameobjects display proper names instead of "Unknown" - Add name/entry fields to GameObject entity class - Fix CMSG_USE_ITEM packet: remove extra uint8 that shifted the item GUID by one byte, breaking hearthstone and all item usage - Remove redundant CMSG_LOOT after CMSG_GAMEOBJECT_USE for chests - Show PvP enabled/disabled state in toggle message - Relax WMO ramp wall-collision step-up check to allow walking on gentle ramps where floor rise per step is under 0.1 units - Add M2 fallback when WMO group files fail to load for gameobjects - Handle re-creation of existing gameobject render instances by updating position instead of silently ignoring
This commit is contained in:
parent
5610faa958
commit
0ce38cfb99
12 changed files with 391 additions and 65 deletions
|
|
@ -451,6 +451,14 @@ struct UpdateBlock {
|
|||
float x = 0.0f, y = 0.0f, z = 0.0f, orientation = 0.0f;
|
||||
float runSpeed = 0.0f;
|
||||
|
||||
// Update flags from movement block (for detecting transports, etc.)
|
||||
uint16_t updateFlags = 0;
|
||||
|
||||
// Transport data from LIVING movement block (MOVEMENTFLAG_ONTRANSPORT)
|
||||
bool onTransport = false;
|
||||
uint64_t transportGuid = 0;
|
||||
float transportX = 0.0f, transportY = 0.0f, transportZ = 0.0f, transportO = 0.0f;
|
||||
|
||||
// Field data (for VALUES and CREATE updates)
|
||||
std::map<uint16_t, uint32_t> fields;
|
||||
};
|
||||
|
|
@ -1050,6 +1058,31 @@ public:
|
|||
static bool parse(network::Packet& packet, CreatureQueryResponseData& data);
|
||||
};
|
||||
|
||||
// ============================================================
|
||||
// GameObject Query
|
||||
// ============================================================
|
||||
|
||||
/** CMSG_GAMEOBJECT_QUERY packet builder */
|
||||
class GameObjectQueryPacket {
|
||||
public:
|
||||
static network::Packet build(uint32_t entry, uint64_t guid);
|
||||
};
|
||||
|
||||
/** SMSG_GAMEOBJECT_QUERY_RESPONSE data */
|
||||
struct GameObjectQueryResponseData {
|
||||
uint32_t entry = 0;
|
||||
std::string name;
|
||||
uint32_t type = 0; // GameObjectType (e.g. 3=chest, 2=questgiver)
|
||||
|
||||
bool isValid() const { return entry != 0 && !name.empty(); }
|
||||
};
|
||||
|
||||
/** SMSG_GAMEOBJECT_QUERY_RESPONSE parser */
|
||||
class GameObjectQueryResponseParser {
|
||||
public:
|
||||
static bool parse(network::Packet& packet, GameObjectQueryResponseData& data);
|
||||
};
|
||||
|
||||
// ============================================================
|
||||
// Item Query
|
||||
// ============================================================
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue