private void GetNewTrees() { //Removing non-valid trees from existing dictionary Dictionary <Tree, GameObject> temp = new Dictionary <Tree, GameObject>(_trees); foreach (KeyValuePair <Tree, GameObject> pair in temp) { if (_selectionArea.Contains(pair.Key.Position) == false) { pair.Value.SetActive(false); _jobIconsPool.Push(pair.Value); _trees.Remove(pair.Key); } } temp.Clear(); //Detecting new trees. foreach (Vector2Int position in _selectionArea.GetPositions()) { Tile t = Utils.TileAt(position.x, position.y); if (t is null || t.Contents is null || t.Contents.StaticObject is null) { continue; } StaticObject staticObject = t.Contents.StaticObject; if (staticObject.GetType() != typeof(Tree) || (staticObject as Tree).HasCutJob) { continue; } if (_trees.ContainsKey(staticObject as Tree) == false) { _trees.Add(staticObject as Tree, CreateJobIcon(staticObject as Tree)); } } }