public void Refresh() { UnregisterLight(); Operational component = GetComponent <Operational>(); if ((!((Object)component != (Object)null) || component.IsOperational) && base.isActiveAndEnabled) { Vector3 position = base.transform.GetPosition(); position = new Vector3(position.x + Offset.x, position.y + Offset.y, position.z); int num = Grid.PosToCell(position); if (Grid.IsValidCell(num)) { Vector2I vector2I = Grid.CellToXY(num); int num2 = (int)Range; if (shape == LightShape.Circle) { Vector2I vector2I2 = new Vector2I(vector2I.x - num2, vector2I.y - num2); solidPartitionerEntry = GameScenePartitioner.Instance.Add("Radiator", base.gameObject, vector2I2.x, vector2I2.y, 2 * num2, 2 * num2, GameScenePartitioner.Instance.solidChangedLayer, TriggerRefresh); liquidPartitionerEntry = GameScenePartitioner.Instance.Add("Radiator", base.gameObject, vector2I2.x, vector2I2.y, 2 * num2, 2 * num2, GameScenePartitioner.Instance.liquidChangedLayer, TriggerRefresh); } else if (shape == LightShape.Cone) { Vector2I vector2I3 = new Vector2I(vector2I.x - num2, vector2I.y - num2); solidPartitionerEntry = GameScenePartitioner.Instance.Add("Radiator", base.gameObject, vector2I3.x, vector2I3.y, 2 * num2, num2, GameScenePartitioner.Instance.solidChangedLayer, TriggerRefresh); liquidPartitionerEntry = GameScenePartitioner.Instance.Add("Radiator", base.gameObject, vector2I3.x, vector2I3.y, 2 * num2, num2, GameScenePartitioner.Instance.liquidChangedLayer, TriggerRefresh); } cell = num; litCells.Clear(); emitter = new RadiationGridEmitter(cell, litCells, Lux, Range, shape, 0.5f); emitter.Add(); isRegistered = true; } } }