private void OnLoadFilterGrid(DisplayData data) { try { if (_isBeingDestroyed) { return; } QuickLogger.Debug($"OnLoadFilterGrid : {data.ItemsGrid}", true); //_filterGrid.ClearPage(); if (_trackedFilterState.Count <= 0) { var grouped = _mono.OreGenerator.AllowedOres; for (int i = 0; i < grouped.Count; i++) { GameObject buttonPrefab = Instantiate(data.ItemsPrefab); if (buttonPrefab == null || data.ItemsGrid == null) { if (buttonPrefab != null) { Destroy(buttonPrefab); } return; } buttonPrefab.transform.SetParent(data.ItemsGrid.transform, false); var toggle = buttonPrefab.GetComponent <Toggle>(); toggle.isOn = false; buttonPrefab.SetActive(false); var oreIndex = i; toggle.onValueChanged.AddListener(delegate { OnButtonClick("FilterToggleBTN", new FilterBtnData { TechType = grouped.ElementAt(oreIndex), Toggle = toggle }); }); var itemName = buttonPrefab.GetComponentInChildren <Text>(); itemName.text = TechTypeExtensions.Get(Language.main, grouped.ElementAt(i)); if (_trackedFilterState.ContainsKey(grouped.ElementAt(i))) { toggle.isOn = _trackedFilterState[grouped.ElementAt(i)].isOn; } else { _trackedFilterState.Add(grouped.ElementAt(i), toggle); } } } foreach (KeyValuePair <TechType, Toggle> toggle in _trackedFilterState) { toggle.Value.gameObject.SetActive(false); } var trackedFilterState = _trackedFilterState; if (data.EndPosition > trackedFilterState.Count) { data.EndPosition = trackedFilterState.Count; } for (int i = data.StartPosition; i < data.EndPosition; i++) { _trackedFilterState.ElementAt(i).Value.gameObject.SetActive(true); } _filterGrid.UpdaterPaginator(_trackedFilterState.Count); } catch (Exception e) { QuickLogger.Error("Error Caught"); QuickLogger.Error($"Error Message: {e.Message}"); QuickLogger.Error($"Error StackTrace: {e.StackTrace}"); } }