diff --git a/Sources/CryGame C++/Solution1/CryGame/WeaponClass.cpp b/Sources/CryGame C++/Solution1/CryGame/WeaponClass.cpp index 5097b3f..3bf4b5b 100644 --- a/Sources/CryGame C++/Solution1/CryGame/WeaponClass.cpp +++ b/Sources/CryGame C++/Solution1/CryGame/WeaponClass.cpp @@ -393,10 +393,10 @@ void CWeaponClass::GetMuzzlePosAngles(Vec3& muzzlePos, Vec3& muzzleAngles) Matrix34 worldMuzzleTransform = m * m_muzzleTransform * Matrix33::CreateRotationY(gf_PI_DIV_2); // eliminate roll from the final transform, to make grenade throws more consistent - Vec3 fwd = worldMuzzleTransform.GetForward(); + Vec3 fwd = worldMuzzleTransform.GetForward().GetNormalized(); Vec3 up = Vec3(0, 0, 1); - Vec3 left = -fwd.Cross(up); - up = left.Cross(-fwd); + Vec3 left = -fwd.Cross(up).GetNormalized(); + up = left.Cross(-fwd).GetNormalized(); worldMuzzleTransform.SetMatFromVectors(left, -fwd, up, worldMuzzleTransform.GetTranslation()); muzzleAngles = ToAnglesDeg(worldMuzzleTransform); diff --git a/Sources/CryGame C++/Solution1/CryGame/XPlayer.cpp b/Sources/CryGame C++/Solution1/CryGame/XPlayer.cpp index 8865bca..f878e1e 100644 --- a/Sources/CryGame C++/Solution1/CryGame/XPlayer.cpp +++ b/Sources/CryGame C++/Solution1/CryGame/XPlayer.cpp @@ -2475,9 +2475,9 @@ void CPlayer::ModifyWeaponPosition(CWeaponClass* weapon, Vec3& weaponAngles, Vec Matrix34 worldOffHandTransform = GetWorldControllerTransform(m_offHand); Vec3 forward = worldOffHandTransform.GetTranslation() - worldControllerTransform.GetTranslation(); forward.Normalize(); - Vec3 left = ((Matrix33)worldControllerTransform).GetColumn(0); - Vec3 up = left.Cross(-forward); - left = -forward.Cross(up); + Vec3 left = ((Matrix33)worldControllerTransform).GetColumn(0).GetNormalized(); + Vec3 up = left.Cross(-forward).GetNormalized(); + left = -forward.Cross(up).GetNormalized(); worldControllerTransform.SetMatFromVectors(left, -forward, up, worldControllerTransform.GetTranslation()); }