mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-16 16:10:58 +00:00
b39437dfb6
When an NPC fire a projectile, it should affect only its targeted actor. To this end, after a hit is detected the target is checked against the list of AI targets and reactivated if necessary. Problem occurs when the hit occurs as a result of a friendly actor going into the projectile (detected in ClosestNotMeConvexResultCallback): while the projectile is inside the friend's collision box, it is deactivated, just to be immediately reactivated. Effectively, the projectile does nothing until the actor moves out. Add a check inside the ClosestNotMeConvexResultCallback before declaring a hit. Since the necessary data is not safely accessible from the async thread, maintain a copy inside the Projectile class. |
||
---|---|---|
.. | ||
actor.cpp | ||
actor.hpp | ||
closestnotmeconvexresultcallback.cpp | ||
closestnotmeconvexresultcallback.hpp | ||
closestnotmerayresultcallback.cpp | ||
closestnotmerayresultcallback.hpp | ||
collisiontype.hpp | ||
constants.hpp | ||
contacttestresultcallback.cpp | ||
contacttestresultcallback.hpp | ||
deepestnotmecontacttestresultcallback.cpp | ||
deepestnotmecontacttestresultcallback.hpp | ||
hasspherecollisioncallback.hpp | ||
heightfield.cpp | ||
heightfield.hpp | ||
movementsolver.cpp | ||
movementsolver.hpp | ||
mtphysics.cpp | ||
mtphysics.hpp | ||
object.cpp | ||
object.hpp | ||
physicssystem.cpp | ||
physicssystem.hpp | ||
projectile.cpp | ||
projectile.hpp | ||
ptrholder.hpp | ||
raycasting.hpp | ||
stepper.cpp | ||
stepper.hpp | ||
trace.cpp | ||
trace.h |