Ticket #3334: t3334_floatingpoint_territorry_radius_v1.patch

File t3334_floatingpoint_territorry_radius_v1.patch, 1.0 KB (added by elexis, 9 years ago)

Fixes the actual cause of the problem.

  • source/simulation2/components/CCmpTerritoryManager.cpp

    void CCmpTerritoryManager::CalculateTerr  
    440440            if (!cmpPosition || !cmpPosition->IsInWorld())
    441441                continue;
    442442
    443443            CmpPtr<ICmpTerritoryInfluence> cmpTerritoryInfluence(GetSimContext(), ent);
    444444            u32 weight = cmpTerritoryInfluence->GetWeight();
    445             u32 radius = cmpTerritoryInfluence->GetRadius() / (Pathfinding::NAVCELL_SIZE * NAVCELLS_PER_TERRITORY_TILE).ToInt_RoundToNegInfinity();
     445            double radius = cmpTerritoryInfluence->GetRadius() / (Pathfinding::NAVCELL_SIZE * NAVCELLS_PER_TERRITORY_TILE).ToDouble();
     446
    446447            if (weight == 0 || radius == 0)
    447448                continue;
     449
    448450            u32 falloff = weight / radius;
    449451
    450452            CFixedVector2D pos = cmpPosition->GetPosition2D();
    451453            u16 i, j;
    452454            NearestTerritoryTile(pos.X, pos.Y, i, j, tilesW, tilesH);