Add WoW-style camera system with collision and first-person mode

- Implement orbit camera with smooth zoom and collision detection
- Add 50° slope limiting with sliding (prevents mountain climbing)
- Add first-person mode that hides player model and weapons
- Add floor clearance check to prevent camera clipping through ground
- Improve WMO wall collision with proper height range checks
- Add two-sided floor collision detection for WMO geometry
- Increase M2 render distance slightly for better visibility
This commit is contained in:
Kelsi 2026-02-03 14:26:08 -08:00
parent 3e792af3e5
commit 54dc27c2ec
7 changed files with 307 additions and 64 deletions

View file

@ -61,6 +61,7 @@ public:
void setInstancePosition(uint32_t instanceId, const glm::vec3& position);
void setInstanceRotation(uint32_t instanceId, const glm::vec3& rotation);
void setActiveGeosets(uint32_t instanceId, const std::unordered_set<uint16_t>& geosets);
void setInstanceVisible(uint32_t instanceId, bool visible);
void removeInstance(uint32_t instanceId);
/** Attach a weapon model to a character instance at the given attachment point. */
@ -95,6 +96,7 @@ private:
glm::vec3 position;
glm::vec3 rotation;
float scale;
bool visible = true; // For first-person camera hiding
// Animation state
uint32_t currentAnimationId = 0;