mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
feat: propagate OBJECT_FIELD_SCALE_X through creature and GO spawn pipeline
Reads OBJECT_FIELD_SCALE_X (field 4, cross-expansion) from CREATE_OBJECT update fields and passes it through the full creature and game object spawn chain: game_handler callbacks → pending spawn structs → async load results → createInstance() calls. This gives boss giants, gnomes, children, and other non-unit-scale NPCs correct visual size, and ensures scaled GOs (e.g. large treasure chests, oversized plants) render at the server-specified scale rather than always at 1.0. - Added OBJECT_FIELD_SCALE_X to UF enum and all expansion update_fields.json - Added float scale to CreatureSpawnCallback and GameObjectSpawnCallback - Propagated scale through PendingCreatureSpawn, PreparedCreatureModel, PendingGameObjectSpawn, PreparedGameObjectWMO - Used scale in charRenderer/m2Renderer/wmoRenderer createInstance() calls - Sanity-clamped raw float to [0.01, 100.0] range before use
This commit is contained in:
parent
b658743e94
commit
d95abfb607
10 changed files with 85 additions and 24 deletions
|
|
@ -735,8 +735,8 @@ public:
|
|||
void setHearthstonePreloadCallback(HearthstonePreloadCallback cb) { hearthstonePreloadCallback_ = std::move(cb); }
|
||||
|
||||
// Creature spawn callback (online mode - triggered when creature enters view)
|
||||
// Parameters: guid, displayId, x, y, z (canonical), orientation
|
||||
using CreatureSpawnCallback = std::function<void(uint64_t guid, uint32_t displayId, float x, float y, float z, float orientation)>;
|
||||
// Parameters: guid, displayId, x, y, z (canonical), orientation, scale (OBJECT_FIELD_SCALE_X)
|
||||
using CreatureSpawnCallback = std::function<void(uint64_t guid, uint32_t displayId, float x, float y, float z, float orientation, float scale)>;
|
||||
void setCreatureSpawnCallback(CreatureSpawnCallback cb) { creatureSpawnCallback_ = std::move(cb); }
|
||||
|
||||
// Creature despawn callback (online mode - triggered when creature leaves view)
|
||||
|
|
@ -766,8 +766,8 @@ public:
|
|||
void setPlayerEquipmentCallback(PlayerEquipmentCallback cb) { playerEquipmentCallback_ = std::move(cb); }
|
||||
|
||||
// GameObject spawn callback (online mode - triggered when gameobject enters view)
|
||||
// Parameters: guid, entry, displayId, x, y, z (canonical), orientation
|
||||
using GameObjectSpawnCallback = std::function<void(uint64_t guid, uint32_t entry, uint32_t displayId, float x, float y, float z, float orientation)>;
|
||||
// Parameters: guid, entry, displayId, x, y, z (canonical), orientation, scale (OBJECT_FIELD_SCALE_X)
|
||||
using GameObjectSpawnCallback = std::function<void(uint64_t guid, uint32_t entry, uint32_t displayId, float x, float y, float z, float orientation, float scale)>;
|
||||
void setGameObjectSpawnCallback(GameObjectSpawnCallback cb) { gameObjectSpawnCallback_ = std::move(cb); }
|
||||
|
||||
// GameObject move callback (online mode - triggered when gameobject position updates)
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ namespace game {
|
|||
enum class UF : uint16_t {
|
||||
// Object fields
|
||||
OBJECT_FIELD_ENTRY,
|
||||
OBJECT_FIELD_SCALE_X,
|
||||
|
||||
// Unit fields
|
||||
UNIT_FIELD_TARGET_LO,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue