mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-23 07:40:14 +00:00
Add mount pitch and roll for realistic taxi flight animation
Flying mounts now tilt and bank realistically during taxi flights: - Pitch (up/down): calculated from spline tangent's z-component (altitude change) - Roll (banking): proportional to turn rate, clamped to ~40 degrees - Yaw: existing horizontal orientation from spline direction Implementation: - Added mountPitch_ and mountRoll_ to Renderer (radians) - Updated TaxiOrientationCallback to pass yaw, pitch, roll - Calculate pitch using asin(tangent.z) for altitude tilt - Calculate roll from yaw change rate: -orientDiff * 2.5, clamped to ±0.7 rad - Applied to mount rotation: glm::vec3(pitch, roll, yaw) This fixes the "weirdness" where mounts flew sideways or without natural banking.
This commit is contained in:
parent
2e0a7e0039
commit
92031102e4
5 changed files with 34 additions and 12 deletions
|
|
@ -508,6 +508,8 @@ void Renderer::setMounted(uint32_t mountInstId, float heightOffset) {
|
|||
void Renderer::clearMount() {
|
||||
mountInstanceId_ = 0;
|
||||
mountHeightOffset_ = 0.0f;
|
||||
mountPitch_ = 0.0f;
|
||||
mountRoll_ = 0.0f;
|
||||
charAnimState = CharAnimState::IDLE;
|
||||
if (cameraController) {
|
||||
cameraController->setMounted(false);
|
||||
|
|
@ -659,7 +661,8 @@ void Renderer::updateCharacterAnimation() {
|
|||
if (mountInstanceId_ > 0) {
|
||||
characterRenderer->setInstancePosition(mountInstanceId_, characterPosition);
|
||||
float yawRad = glm::radians(characterYaw);
|
||||
characterRenderer->setInstanceRotation(mountInstanceId_, glm::vec3(0.0f, 0.0f, yawRad));
|
||||
// Apply pitch (up/down), roll (banking), and yaw for realistic flight
|
||||
characterRenderer->setInstanceRotation(mountInstanceId_, glm::vec3(mountPitch_, mountRoll_, yawRad));
|
||||
|
||||
// Drive mount model animation: idle when still, run when moving
|
||||
auto pickMountAnim = [&](std::initializer_list<uint32_t> candidates, uint32_t fallback) -> uint32_t {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue