PlayerResources.Refresh now caches storage item counts + capacities before triggering the refresh event. Refreshes twice a second. Changed UI stuff to use this new event and the cached values. Spend/afford calcs still use real-time values so you can't quickly spend more than you have etc.
TerrainUtils.GetPointOnTerrain now returns null if not on terrain instead of the original point with a height of zero to fix a bunch of underground spawning issues. Added TerrainUtils.IsPointBelowWater
Moved Utils.RandomAtCirclePerimeter to TerrainUtils.RandomAtCirclePerimeter and it now includes a call to TerrainUtils.GetClosestNavMeshPoint to make sure the return value is reachable. This fixes a bunch of runtime gather/interaction tasks where the positions are generated at runtime.