mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-27 03:35:27 +00:00
fix AiPackage repeating
This commit is contained in:
parent
59a1a6d117
commit
203804ff15
@ -58,6 +58,18 @@ bool MWMechanics::AiPackage::getRepeat() const
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MWMechanics::AiPackage::reset()
|
||||||
|
{
|
||||||
|
// reset all members
|
||||||
|
mTimer = AI_REACTION_TIME + 1.0f;
|
||||||
|
mIsShortcutting = false;
|
||||||
|
mShortcutProhibited = false;
|
||||||
|
mShortcutFailPos = ESM::Pathgrid::Point();
|
||||||
|
|
||||||
|
mPathFinder.clearPath();
|
||||||
|
mObstacleCheck.clear();
|
||||||
|
}
|
||||||
|
|
||||||
bool MWMechanics::AiPackage::pathTo(const MWWorld::Ptr& actor, const ESM::Pathgrid::Point& dest, float duration, float destTolerance)
|
bool MWMechanics::AiPackage::pathTo(const MWWorld::Ptr& actor, const ESM::Pathgrid::Point& dest, float duration, float destTolerance)
|
||||||
{
|
{
|
||||||
mTimer += duration; //Update timer
|
mTimer += duration; //Update timer
|
||||||
|
@ -92,6 +92,9 @@ namespace MWMechanics
|
|||||||
/// Return true if this package should repeat. Currently only used for Wander packages.
|
/// Return true if this package should repeat. Currently only used for Wander packages.
|
||||||
virtual bool getRepeat() const;
|
virtual bool getRepeat() const;
|
||||||
|
|
||||||
|
/// Reset pathfinding state
|
||||||
|
void reset();
|
||||||
|
|
||||||
bool isTargetMagicallyHidden(const MWWorld::Ptr& target);
|
bool isTargetMagicallyHidden(const MWWorld::Ptr& target);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -234,6 +234,7 @@ void AiSequence::execute (const MWWorld::Ptr& actor, CharacterController& charac
|
|||||||
// Put repeating noncombat AI packages on the end of the stack so they can be used again
|
// Put repeating noncombat AI packages on the end of the stack so they can be used again
|
||||||
if (isActualAiPackage(packageTypeId) && (mRepeat || package->getRepeat()))
|
if (isActualAiPackage(packageTypeId) && (mRepeat || package->getRepeat()))
|
||||||
{
|
{
|
||||||
|
package->reset();
|
||||||
mPackages.push_back(package->clone());
|
mPackages.push_back(package->clone());
|
||||||
}
|
}
|
||||||
// To account for the rare case where AiPackage::execute() queued another AI package
|
// To account for the rare case where AiPackage::execute() queued another AI package
|
||||||
|
Loading…
x
Reference in New Issue
Block a user