- Code: Select all
`if (m_digging_button != -1)`

{

f32 digfrac = m_digging_anim;

wield_position.X -= 30 * sin(pow(digfrac, 0.8f) * M_PI);

wield_position.Y += 15 * sin(digfrac * 2 * M_PI);

wield_position.Z += 5 * digfrac;

// Euler angles are PURE EVIL, so why not use quaternions?

core::quaternion quat_begin(wield_rotation * core::DEGTORAD);

core::quaternion quat_end(v3f(90, -10, -130) * core::DEGTORAD);

core::quaternion quat_slerp;

quat_slerp.slerp(quat_begin, quat_end, sin(digfrac * M_PI));

quat_slerp.toEuler(wield_rotation);

wield_rotation *= core::RADTODEG;

}

WITH THIS!

- Code: Select all
`if (m_digging_button != -1)`

{

f32 digfrac = m_digging_anim;

wield_position.X -= 50 * sin(pow(digfrac, 0.8f) * M_PI);

wield_position.Y += 24 * sin(digfrac * 1.8 * M_PI);

wield_position.Z += 25 * 0.5;

// Euler angles are PURE EVIL, so why not use quaternions?

core::quaternion quat_begin(wield_rotation * core::DEGTORAD);

core::quaternion quat_end(v3f(80, 30, 100) * core::DEGTORAD);

core::quaternion quat_slerp;

quat_slerp.slerp(quat_begin, quat_end, sin(digfrac * M_PI));

quat_slerp.toEuler(wield_rotation);

wield_rotation *= core::RADTODEG;

}