Following e757fb84d5
: also regenerate the JS values for AI maps upon deserialization.
Fixes #4247, refs #4191 This was SVN commit r18797.
This commit is contained in:
parent
b74b807444
commit
636da605bb
@ -508,7 +508,7 @@ public:
|
|||||||
m_GameState = gameState;
|
m_GameState = gameState;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdatePathfinder(const Grid<NavcellData>& passabilityMap, bool globallyDirty, const Grid<u8>& dirtinessGrid,
|
void UpdatePathfinder(const Grid<NavcellData>& passabilityMap, bool globallyDirty, const Grid<u8>& dirtinessGrid, bool justDeserialized,
|
||||||
const std::map<std::string, pass_class_t>& nonPathfindingPassClassMasks, const std::map<std::string, pass_class_t>& pathfindingPassClassMasks)
|
const std::map<std::string, pass_class_t>& nonPathfindingPassClassMasks, const std::map<std::string, pass_class_t>& pathfindingPassClassMasks)
|
||||||
{
|
{
|
||||||
ENSURE(m_CommandsComputed);
|
ENSURE(m_CommandsComputed);
|
||||||
@ -521,7 +521,7 @@ public:
|
|||||||
m_LongPathfinder.Update(&m_PassabilityMap, dirtinessGrid);
|
m_LongPathfinder.Update(&m_PassabilityMap, dirtinessGrid);
|
||||||
|
|
||||||
JSContext* cx = m_ScriptInterface->GetContext();
|
JSContext* cx = m_ScriptInterface->GetContext();
|
||||||
if (dimensionChange)
|
if (dimensionChange || justDeserialized)
|
||||||
ScriptInterface::ToJSVal(cx, &m_PassabilityMapVal, m_PassabilityMap);
|
ScriptInterface::ToJSVal(cx, &m_PassabilityMapVal, m_PassabilityMap);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1108,14 +1108,15 @@ public:
|
|||||||
{
|
{
|
||||||
GridUpdateInformation dirtinessInformations = cmpPathfinder->GetDirtinessData();
|
GridUpdateInformation dirtinessInformations = cmpPathfinder->GetDirtinessData();
|
||||||
|
|
||||||
if (dirtinessInformations.dirty)
|
if (dirtinessInformations.dirty || m_JustDeserialized)
|
||||||
{
|
{
|
||||||
const Grid<NavcellData>& passabilityMap = cmpPathfinder->GetPassabilityGrid();
|
const Grid<NavcellData>& passabilityMap = cmpPathfinder->GetPassabilityGrid();
|
||||||
|
|
||||||
std::map<std::string, pass_class_t> nonPathfindingPassClassMasks, pathfindingPassClassMasks;
|
std::map<std::string, pass_class_t> nonPathfindingPassClassMasks, pathfindingPassClassMasks;
|
||||||
cmpPathfinder->GetPassabilityClasses(nonPathfindingPassClassMasks, pathfindingPassClassMasks);
|
cmpPathfinder->GetPassabilityClasses(nonPathfindingPassClassMasks, pathfindingPassClassMasks);
|
||||||
|
|
||||||
m_Worker.UpdatePathfinder(passabilityMap, dirtinessInformations.globallyDirty, dirtinessInformations.dirtinessGrid,
|
m_Worker.UpdatePathfinder(passabilityMap,
|
||||||
|
dirtinessInformations.globallyDirty, dirtinessInformations.dirtinessGrid, m_JustDeserialized,
|
||||||
nonPathfindingPassClassMasks, pathfindingPassClassMasks);
|
nonPathfindingPassClassMasks, pathfindingPassClassMasks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1123,7 +1124,7 @@ public:
|
|||||||
// Update the territory data
|
// Update the territory data
|
||||||
// Since getting the territory grid can trigger a recalculation, we check NeedUpdate first
|
// Since getting the territory grid can trigger a recalculation, we check NeedUpdate first
|
||||||
CmpPtr<ICmpTerritoryManager> cmpTerritoryManager(GetSystemEntity());
|
CmpPtr<ICmpTerritoryManager> cmpTerritoryManager(GetSystemEntity());
|
||||||
if (cmpTerritoryManager && cmpTerritoryManager->NeedUpdate(&m_TerritoriesDirtyID))
|
if (cmpTerritoryManager && (cmpTerritoryManager->NeedUpdate(&m_TerritoriesDirtyID) || m_JustDeserialized))
|
||||||
{
|
{
|
||||||
const Grid<u8>& territoryMap = cmpTerritoryManager->GetTerritoryGrid();
|
const Grid<u8>& territoryMap = cmpTerritoryManager->GetTerritoryGrid();
|
||||||
m_Worker.UpdateTerritoryMap(territoryMap);
|
m_Worker.UpdateTerritoryMap(territoryMap);
|
||||||
|
Loading…
Reference in New Issue
Block a user