mirror of
https://github.com/TES3MP/TES3MP.git
synced 2025-09-30 08:35:52 -04:00
Fix use of uninitialized memory in AiWander::init
This commit is contained in:
parent
061c7813f6
commit
1bb82c710c
@ -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…
x
Reference in New Issue
Block a user