mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-21 10:53:51 +00:00
Fix use of uninitialized memory in AiWander::init
This commit is contained in:
parent
061c7813f6
commit
1bb82c710c
2 changed files with 13 additions and 10 deletions
|
@ -35,6 +35,8 @@ namespace MWMechanics
|
||||||
|
|
||||||
void AiWander::init()
|
void AiWander::init()
|
||||||
{
|
{
|
||||||
|
// NOTE: mDistance and mDuration must be set already
|
||||||
|
|
||||||
mCellX = std::numeric_limits<int>::max();
|
mCellX = std::numeric_limits<int>::max();
|
||||||
mCellY = std::numeric_limits<int>::max();
|
mCellY = std::numeric_limits<int>::max();
|
||||||
mXCell = 0;
|
mXCell = 0;
|
||||||
|
@ -47,7 +49,7 @@ namespace MWMechanics
|
||||||
mRotate = false;
|
mRotate = false;
|
||||||
mTargetAngle = 0;
|
mTargetAngle = 0;
|
||||||
mSaidGreeting = Greet_None;
|
mSaidGreeting = Greet_None;
|
||||||
greetingTimer = 0;
|
mGreetingTimer = 0;
|
||||||
mHasReturnPosition = false;
|
mHasReturnPosition = false;
|
||||||
mReturnPosition = Ogre::Vector3(0,0,0);
|
mReturnPosition = Ogre::Vector3(0,0,0);
|
||||||
|
|
||||||
|
@ -430,19 +432,19 @@ namespace MWMechanics
|
||||||
{
|
{
|
||||||
if ((playerDistSqr <= helloDistance*helloDistance) && MWBase::Environment::get().getWorld()->getLOS(player, actor)
|
if ((playerDistSqr <= helloDistance*helloDistance) && MWBase::Environment::get().getWorld()->getLOS(player, actor)
|
||||||
&& MWBase::Environment::get().getMechanicsManager()->awarenessCheck(player, actor))
|
&& MWBase::Environment::get().getMechanicsManager()->awarenessCheck(player, actor))
|
||||||
greetingTimer++;
|
mGreetingTimer++;
|
||||||
|
|
||||||
if (greetingTimer >= GREETING_SHOULD_START)
|
if (mGreetingTimer >= GREETING_SHOULD_START)
|
||||||
{
|
{
|
||||||
mSaidGreeting = Greet_InProgress;
|
mSaidGreeting = Greet_InProgress;
|
||||||
MWBase::Environment::get().getDialogueManager()->say(actor, "hello");
|
MWBase::Environment::get().getDialogueManager()->say(actor, "hello");
|
||||||
greetingTimer = 0;
|
mGreetingTimer = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mSaidGreeting == Greet_InProgress)
|
if(mSaidGreeting == Greet_InProgress)
|
||||||
{
|
{
|
||||||
greetingTimer++;
|
mGreetingTimer++;
|
||||||
|
|
||||||
if(mWalking)
|
if(mWalking)
|
||||||
{
|
{
|
||||||
|
@ -470,10 +472,10 @@ namespace MWMechanics
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (greetingTimer >= GREETING_SHOULD_END)
|
if (mGreetingTimer >= GREETING_SHOULD_END)
|
||||||
{
|
{
|
||||||
mSaidGreeting = Greet_Done;
|
mSaidGreeting = Greet_Done;
|
||||||
greetingTimer = 0;
|
mGreetingTimer = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -680,8 +682,6 @@ namespace MWMechanics
|
||||||
|
|
||||||
AiWander::AiWander (const ESM::AiSequence::AiWander* wander)
|
AiWander::AiWander (const ESM::AiSequence::AiWander* wander)
|
||||||
{
|
{
|
||||||
init();
|
|
||||||
|
|
||||||
mDistance = wander->mData.mDistance;
|
mDistance = wander->mData.mDistance;
|
||||||
mDuration = wander->mData.mDuration;
|
mDuration = wander->mData.mDuration;
|
||||||
mStartTime = MWWorld::TimeStamp(wander->mStartTime);
|
mStartTime = MWWorld::TimeStamp(wander->mStartTime);
|
||||||
|
@ -690,6 +690,8 @@ namespace MWMechanics
|
||||||
mIdle.push_back(wander->mData.mIdle[i]);
|
mIdle.push_back(wander->mData.mIdle[i]);
|
||||||
|
|
||||||
mRepeat = wander->mData.mShouldRepeat;
|
mRepeat = wander->mData.mShouldRepeat;
|
||||||
|
|
||||||
|
init();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ namespace MWMechanics
|
||||||
|
|
||||||
AiWander (const ESM::AiSequence::AiWander* wander);
|
AiWander (const ESM::AiSequence::AiWander* wander);
|
||||||
|
|
||||||
|
// NOTE: mDistance and mDuration must be set already
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
virtual AiPackage *clone() const;
|
virtual AiPackage *clone() const;
|
||||||
|
@ -68,7 +69,7 @@ namespace MWMechanics
|
||||||
Greet_Done
|
Greet_Done
|
||||||
};
|
};
|
||||||
GreetingState mSaidGreeting;
|
GreetingState mSaidGreeting;
|
||||||
int greetingTimer;
|
int mGreetingTimer;
|
||||||
|
|
||||||
bool mHasReturnPosition; // NOTE: Could be removed if mReturnPosition was initialized to actor position,
|
bool mHasReturnPosition; // NOTE: Could be removed if mReturnPosition was initialized to actor position,
|
||||||
// if we had the actor in the AiWander constructor...
|
// if we had the actor in the AiWander constructor...
|
||||||
|
|
Loading…
Reference in a new issue