public void Add() { Remove(); DiscreteShadowCaster.GetVisibleCells(cell, litCells, (int)radius, shape); for (int i = 0; i < litCells.Count; i++) { int num = litCells[i]; int num2 = Mathf.Max(1, Mathf.RoundToInt(falloffRate * (float)Mathf.Max(Grid.GetCellDistance(num, cell), 1))); int num3 = Mathf.Max(0, Grid.RadiationCount[num] + intensity / num2); Grid.RadiationCount[num] = num3; RadiationGridManager.previewLux[num] = num3; } }
public static void CreatePreview(int origin_cell, float radius, LightShape shape, int lux) { previewLightCells.Clear(); ListPool <int, RadiationGridEmitter> .PooledList pooledList = ListPool <int, RadiationGridEmitter> .Allocate(); pooledList.Add(origin_cell); DiscreteShadowCaster.GetVisibleCells(origin_cell, pooledList, (int)radius, shape); int num = 0; foreach (int item in pooledList) { if (Grid.IsValidCell(item)) { num = lux / CalculateFalloff(0.5f, item, origin_cell); previewLightCells.Add(new Tuple <int, int>(item, num)); previewLux[item] = num; } } pooledList.Recycle(); }
public void UpdateLitCells() { DiscreteShadowCaster.GetVisibleCells(state.origin, litCells, (int)state.radius, state.shape); }