mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-05-08 03:28:15 +03:00
AiCombat use evadeObstacles() from AiPackage.
This commit is contained in:
parent
ceada145ab
commit
0feae19140
4 changed files with 7 additions and 7 deletions
|
@ -200,7 +200,7 @@ namespace MWMechanics
|
||||||
|
|
||||||
//Update every frame
|
//Update every frame
|
||||||
storage.updateCombatMove(duration);
|
storage.updateCombatMove(duration);
|
||||||
updateActorsMovement(actor, storage.mMovement);
|
updateActorsMovement(actor, duration, storage.mMovement);
|
||||||
storage.updateAttack(characterController);
|
storage.updateAttack(characterController);
|
||||||
storage.mActionCooldown -= duration;
|
storage.mActionCooldown -= duration;
|
||||||
|
|
||||||
|
@ -494,7 +494,7 @@ namespace MWMechanics
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AiCombat::updateActorsMovement(const MWWorld::Ptr& actor, MWMechanics::Movement& desiredMovement)
|
void AiCombat::updateActorsMovement(const MWWorld::Ptr& actor, float duration, MWMechanics::Movement& desiredMovement)
|
||||||
{
|
{
|
||||||
MWMechanics::Movement& actorMovementSettings = actor.getClass().getMovementSettings(actor);
|
MWMechanics::Movement& actorMovementSettings = actor.getClass().getMovementSettings(actor);
|
||||||
if (mPathFinder.isPathConstructed())
|
if (mPathFinder.isPathConstructed())
|
||||||
|
@ -506,8 +506,7 @@ namespace MWMechanics
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
zTurn(actor, mPathFinder.getZAngleToNext(pos.pos[0], pos.pos[1]));
|
evadeObstacles(actor, duration, pos);
|
||||||
actorMovementSettings.mPosition[1] = 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -65,7 +65,7 @@ namespace MWMechanics
|
||||||
AiCombatStorage& storage, MWWorld::Ptr target);
|
AiCombatStorage& storage, MWWorld::Ptr target);
|
||||||
|
|
||||||
/// Transfer desired movement (from AiCombatStorage) to Actor
|
/// Transfer desired movement (from AiCombatStorage) to Actor
|
||||||
void updateActorsMovement(const MWWorld::Ptr& actor, MWMechanics::Movement& movement);
|
void updateActorsMovement(const MWWorld::Ptr& actor, float duration, MWMechanics::Movement& movement);
|
||||||
void rotateActorOnAxis(const MWWorld::Ptr& actor, int axis,
|
void rotateActorOnAxis(const MWWorld::Ptr& actor, int axis,
|
||||||
MWMechanics::Movement& actorMovementSettings, MWMechanics::Movement& desiredMovement);
|
MWMechanics::Movement& actorMovementSettings, MWMechanics::Movement& desiredMovement);
|
||||||
};
|
};
|
||||||
|
|
|
@ -77,7 +77,7 @@ bool MWMechanics::AiPackage::pathTo(const MWWorld::Ptr& actor, ESM::Pathgrid::Po
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MWMechanics::AiPackage::evadeObstacles(const MWWorld::Ptr& actor, float duration, ESM::Position& pos)
|
void MWMechanics::AiPackage::evadeObstacles(const MWWorld::Ptr& actor, float duration, const ESM::Position& pos)
|
||||||
{
|
{
|
||||||
zTurn(actor, mPathFinder.getZAngleToNext(pos.pos[0], pos.pos[1]));
|
zTurn(actor, mPathFinder.getZAngleToNext(pos.pos[0], pos.pos[1]));
|
||||||
|
|
||||||
|
|
|
@ -78,6 +78,8 @@ namespace MWMechanics
|
||||||
|
|
||||||
virtual bool doesPathNeedRecalc(ESM::Pathgrid::Point dest, const ESM::Cell *cell);
|
virtual bool doesPathNeedRecalc(ESM::Pathgrid::Point dest, const ESM::Cell *cell);
|
||||||
|
|
||||||
|
void evadeObstacles(const MWWorld::Ptr& actor, float duration, const ESM::Position& pos);
|
||||||
|
|
||||||
// TODO: all this does not belong here, move into temporary storage
|
// TODO: all this does not belong here, move into temporary storage
|
||||||
PathFinder mPathFinder;
|
PathFinder mPathFinder;
|
||||||
ObstacleCheck mObstacleCheck;
|
ObstacleCheck mObstacleCheck;
|
||||||
|
@ -87,7 +89,6 @@ namespace MWMechanics
|
||||||
ESM::Pathgrid::Point mPrevDest;
|
ESM::Pathgrid::Point mPrevDest;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void evadeObstacles(const MWWorld::Ptr& actor, float duration, ESM::Position& pos);
|
|
||||||
bool isNearInactiveCell(const ESM::Position& actorPos);
|
bool isNearInactiveCell(const ESM::Position& actorPos);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue