Added static keyword to three vectors in CalculateCoverFromEnemies and resizing them to 0 at the end of the function so we're not constantly creating and destroying them at every call of DisplayCover function. Speeds it up a little bit. (by Asdow)

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8880 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Sevenfm
2020-08-09 14:01:32 +00:00
parent 5903abee09
commit ecf4e42fac
+15 -8
View File
@@ -552,8 +552,8 @@ static void CalculateCoverFromEnemies()
SOLDIERTYPE* pSoldier;
GetSoldier(&pSoldier, gusSelectedSoldier);
INT8 OurSoldierStealth = GetStealth(pSoldier);
INT8 OurSoldierLBESightAdjustment = GetSightAdjustmentBasedOnLBE(pSoldier);
const INT8 OurSoldierStealth = GetStealth(pSoldier);
const INT8 OurSoldierLBESightAdjustment = GetSightAdjustmentBasedOnLBE(pSoldier);
// Loop through the grid and reset cover
@@ -571,9 +571,13 @@ static void CalculateCoverFromEnemies()
//loop through all the actors in the sector and save enemies' info for cover calculation
std::vector<SOLDIERTYPE*> pOpponents;
std::vector<BOOLEAN> bCowering;
std::vector<UINT8> tunnelVision;
static std::vector<SOLDIERTYPE*> pOpponents;
static std::vector<BOOLEAN> bCowering;
static std::vector<UINT8> tunnelVision;
pOpponents.reserve(TOTAL_SOLDIERS);
bCowering.reserve(TOTAL_SOLDIERS);
tunnelVision.reserve(TOTAL_SOLDIERS);
for (UINT32 i = 0; i < guiNumMercSlots; ++i)
{
SOLDIERTYPE *pOpponent = MercSlots[i];
@@ -609,8 +613,8 @@ static void CalculateCoverFromEnemies()
for (UINT32 i = 0; i < pOpponents.size(); ++i)
{
SOLDIERTYPE *pOpponent = pOpponents[i];
BOOLEAN isCowering = bCowering[i];
UINT8 tunnelVisionPercentage = tunnelVision[i];
const BOOLEAN isCowering = bCowering[i];
const UINT8 tunnelVisionPercentage = tunnelVision[i];
for (INT32 ubX = gsMinCellX; ubX <= gsMaxCellX; ++ubX)
@@ -664,6 +668,9 @@ static void CalculateCoverFromEnemies()
}
}
pOpponents.resize(0);
bCowering.resize(0);
tunnelVision.resize(0);
AddCoverObjectsToViewArea();
}
@@ -772,7 +779,7 @@ void CalculateCoverFromSoldier( SOLDIERTYPE* pFromSoldier, const INT32& sTargetG
static void CalculateCoverFromEnemySoldier(SOLDIERTYPE* pFromSoldier, const INT32& sTargetGridNo, const BOOLEAN& fRoof, INT8& bOverlayType, SOLDIERTYPE* pToSoldier, const BOOLEAN& bFromSoldierCowering, const UINT8& tunnelVision, const INT8 ToSoldierStealth, const INT8 ToSoldierLBeSightAdjustment)
{
// Had to extract this from SOLDIERTYPE::GetMaxDistanceVisible() function due to performance improvement from minimizing recalculating CoweringShockLevel(pSoldier) & GetPercentTunnelVision(pSoldier)
UINT16 usSightLimit = DistanceVisible(pFromSoldier, (SoldierHasLimitedVision(pFromSoldier) ? pFromSoldier->pathing.bDesiredDirection : DIRECTION_IRRELEVANT), DIRECTION_IRRELEVANT, sTargetGridNo, (INT8)fRoof, bFromSoldierCowering, tunnelVision);
const UINT16 usSightLimit = DistanceVisible(pFromSoldier, (SoldierHasLimitedVision(pFromSoldier) ? pFromSoldier->pathing.bDesiredDirection : DIRECTION_IRRELEVANT), DIRECTION_IRRELEVANT, sTargetGridNo, (INT8)fRoof, bFromSoldierCowering, tunnelVision);
for (int i = 0; i < sizeof(animArr); ++i)
{