summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexei Dobrohotov <alex462002@gmail.com>2021-04-25 21:58:48 +0000
committerpsi29a <psi29a@gmail.com>2021-04-26 05:31:10 +0000
commitdca628de0fcaddd1e43dfe25de295c4fcb9b9f77 (patch)
tree9791cc0e9d2cc994e9aa4ec583a0ab1b786979c2
parentadd04a4ea0ebc54190d3570aed79c10610ba5d64 (diff)
Merge branch 'minor_aicombat' into 'master'cherry-pick-f1d19035
Minor optimization in aicombat.cpp See merge request OpenMW/openmw!737 (cherry picked from commit f1d19035cccfff2523faad0d4e4d96cd3ddae2e6) bbbfc520 Minor optimization in aicombat.cpp 237b34a6 Fix style a14911cb Fix indentation
-rw-r--r--apps/openmw/mwmechanics/aicombat.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/apps/openmw/mwmechanics/aicombat.cpp b/apps/openmw/mwmechanics/aicombat.cpp
index b5e7594f32..f6123c12c0 100644
--- a/apps/openmw/mwmechanics/aicombat.cpp
+++ b/apps/openmw/mwmechanics/aicombat.cpp
@@ -715,16 +715,18 @@ osg::Vec3f AimDirToMovingTarget(const MWWorld::Ptr& actor, const MWWorld::Ptr& t
float t_collision;
float projVelDirSquared = projSpeed * projSpeed - velPerp * velPerp;
+ if (projVelDirSquared > 0)
+ {
+ osg::Vec3f vTargetMoveDirNormalized = vTargetMoveDir;
+ vTargetMoveDirNormalized.normalize();
- osg::Vec3f vTargetMoveDirNormalized = vTargetMoveDir;
- vTargetMoveDirNormalized.normalize();
-
- float projDistDiff = vDirToTarget * vTargetMoveDirNormalized; // dot product
- projDistDiff = std::sqrt(distToTarget * distToTarget - projDistDiff * projDistDiff);
+ float projDistDiff = vDirToTarget * vTargetMoveDirNormalized; // dot product
+ projDistDiff = std::sqrt(distToTarget * distToTarget - projDistDiff * projDistDiff);
- if (projVelDirSquared > 0)
t_collision = projDistDiff / (std::sqrt(projVelDirSquared) - velDir);
- else t_collision = 0; // speed of projectile is not enough to reach moving target
+ }
+ else
+ t_collision = 0; // speed of projectile is not enough to reach moving target
return vDirToTarget + vTargetMoveDir * t_collision;
}