Currently every entity has los given by range and reveals everything in that range. This patch is adding blocking of entity vision given by terrain (one from TODOs of range manager).
This blocking of vision applies only for visibility on the map. Not to the fact if entity see another entity.
Changed los update computation from stripes to squares starting from entity position and forming them to circle.
This way code can do multiple raycasts at one go and checks every tile in range only once.
To know if tile is visible it needs information at most from 2 neighbouring tiles.
There have been added two maps (both boolean) with the same structure as m_LosState (this holds if tile is visible/explored/hidden).
One map holds information which tiles are visible.
Second map holds information which tiles blocks vision. (tile blocking vision can be visible)
This has to remove incremental update as tile visibility will change every time entity moves and computation needs to always start from source.
Adding new experience from exploring map and increase importance of watch towers and scouting when playing on map with hills. And is removing ability for player to see through mountains.
(related forum topic: https://wildfiregames.com/forum/index.php?/topic/25975-vision-blocking-wip/)