mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-04-17 17:43:52 +00:00
Fix mount sounds, grey WMO meshes, taxi landing, tree animations, and classic dismount
- Per-family mount sounds (kodo, tallstrider, mechanostrider, etc.) detected from M2 model path - Skip WMO groups with SHOW_SKYBOX flag or all-untextured batches (grey mesh in Orgrimmar) - Freeze physics during taxi landing until terrain loads to prevent falling through void - Disable bone animations on tropical vegetation (palm, bamboo, banana, etc.) to fix wiggling - Snap player to final taxi waypoint on flight completion - Extract mount aura spell ID from classic UNIT_FIELD_AURAS for CMSG_CANCEL_AURA dismount - Increase /unstuck forward nudge to 5 units
This commit is contained in:
parent
bf31da8c13
commit
d27387d744
13 changed files with 525 additions and 217 deletions
|
|
@ -3,6 +3,7 @@
|
|||
#include <string>
|
||||
#include <cstdint>
|
||||
#include <vector>
|
||||
#include <unordered_map>
|
||||
#include <chrono>
|
||||
|
||||
namespace wowee {
|
||||
|
|
@ -24,7 +25,15 @@ enum class MountFamily {
|
|||
WOLF,
|
||||
TIGER,
|
||||
RAPTOR,
|
||||
DRAGON
|
||||
DRAGON,
|
||||
KODO,
|
||||
MECHANOSTRIDER,
|
||||
TALLSTRIDER,
|
||||
UNDEAD_HORSE
|
||||
};
|
||||
|
||||
struct MountFamilyHash {
|
||||
std::size_t operator()(MountFamily f) const { return static_cast<std::size_t>(f); }
|
||||
};
|
||||
|
||||
struct MountSample {
|
||||
|
|
@ -42,7 +51,7 @@ public:
|
|||
void update(float deltaTime);
|
||||
|
||||
// Called when mounting/dismounting
|
||||
void onMount(uint32_t creatureDisplayId, bool isFlying);
|
||||
void onMount(uint32_t creatureDisplayId, bool isFlying, const std::string& modelPath = "");
|
||||
void onDismount();
|
||||
|
||||
// Update movement state
|
||||
|
|
@ -63,6 +72,7 @@ public:
|
|||
private:
|
||||
MountType detectMountType(uint32_t creatureDisplayId) const;
|
||||
MountFamily detectMountFamily(uint32_t creatureDisplayId) const;
|
||||
MountFamily detectMountFamilyFromPath(const std::string& modelPath) const;
|
||||
void updateMountSounds();
|
||||
void stopAllMountSounds();
|
||||
void loadMountSounds();
|
||||
|
|
@ -80,11 +90,18 @@ private:
|
|||
// Mount sound samples (loaded from MPQ)
|
||||
std::vector<MountSample> wingFlapSounds_;
|
||||
std::vector<MountSample> wingIdleSounds_;
|
||||
std::vector<MountSample> horseBreathSounds_;
|
||||
std::vector<MountSample> horseMoveSounds_;
|
||||
std::vector<MountSample> horseJumpSounds_; // Jump effort sounds
|
||||
std::vector<MountSample> horseLandSounds_; // Landing thud sounds
|
||||
std::vector<MountSample> horseIdleSounds_; // Snorts and whinnies for idle
|
||||
|
||||
// Per-family ground mount sounds
|
||||
struct FamilySounds {
|
||||
std::vector<MountSample> move; // Movement ambient (alerts/whinnies/growls)
|
||||
std::vector<MountSample> jump; // Jump effort sounds
|
||||
std::vector<MountSample> land; // Landing wound/thud sounds
|
||||
std::vector<MountSample> idle; // Idle ambient (snorts/breathing/fidgets)
|
||||
};
|
||||
std::unordered_map<MountFamily, FamilySounds, MountFamilyHash> familySounds_;
|
||||
|
||||
// Helper to get sounds for current family (falls back to HORSE)
|
||||
const FamilySounds& getCurrentFamilySounds() const;
|
||||
|
||||
// Sound state tracking
|
||||
bool playingMovementSound_ = false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue