Ticket #3334: t3334_floatingpoint_territorry_radius_v2.patch
File t3334_floatingpoint_territorry_radius_v2.patch, 1.2 KB (added by , 9 years ago) |
---|
-
source/simulation2/components/CCmpTerritoryManager.cpp
void CCmpTerritoryManager::CalculateTerr 438 438 { 439 439 CmpPtr<ICmpPosition> cmpPosition(GetSimContext(), ent); 440 440 if (!cmpPosition || !cmpPosition->IsInWorld()) 441 441 continue; 442 442 443 // Use two digits precision for the radius without introducing floats 443 444 CmpPtr<ICmpTerritoryInfluence> cmpTerritoryInfluence(GetSimContext(), ent); 444 445 u32 weight = cmpTerritoryInfluence->GetWeight(); 445 u32 radius = cmpTerritoryInfluence->GetRadius() / (Pathfinding::NAVCELL_SIZE * NAVCELLS_PER_TERRITORY_TILE).ToInt_RoundToNegInfinity();446 u32 radius = 100 * cmpTerritoryInfluence->GetRadius() / (Pathfinding::NAVCELL_SIZE * NAVCELLS_PER_TERRITORY_TILE).ToInt_RoundToNegInfinity(); 446 447 if (weight == 0 || radius == 0) 447 448 continue; 448 u32 falloff = weight / radius;449 u32 falloff = 100 * weight / radius; 449 450 450 451 CFixedVector2D pos = cmpPosition->GetPosition2D(); 451 452 u16 i, j; 452 453 NearestTerritoryTile(pos.X, pos.Y, i, j, tilesW, tilesH); 453 454