// A log item is clicked, highlight it public void OnLogItemClicked(DebugLogItem item) { if (indexOfSelectedLogEntry != item.Index) { DeselectSelectedLogItem(); indexOfSelectedLogEntry = item.Index; positionOfSelectedLogEntry = item.Index * logItemHeight; heightOfSelectedLogEntry = item.CalculateExpandedHeight(item.ToString()); deltaHeightOfSelectedLogEntry = heightOfSelectedLogEntry - logItemHeight; manager.SetSnapToBottom(false); } else { DeselectSelectedLogItem(); } if (indexOfSelectedLogEntry >= currentTopIndex && indexOfSelectedLogEntry <= currentBottomIndex) { ColorLogItem(logItemsAtIndices[indexOfSelectedLogEntry], indexOfSelectedLogEntry); } CalculateContentHeight(); HardResetItems(); UpdateItemsInTheList(true); manager.ValidateScrollPosition(); }
// Color a log item using its index private void ColorLogItem(DebugLogItem logItem, int index) { if (index == indexOfSelectedLogEntry) { logItem.Image.color = logItemSelectedColor; } else if (index % 2 == 0) { logItem.Image.color = logItemNormalColor1; } else { logItem.Image.color = logItemNormalColor2; } }
// Create (or unpool) a log item private void CreateLogItemAtIndex(int index) { DebugLogItem logItem = debugManager.PopLogItem(); // Reposition the log item Vector2 anchoredPosition = new Vector2(1f, -index * logItemHeight); if (index > indexOfSelectedLogEntry) { anchoredPosition.y -= deltaHeightOfSelectedLogEntry; } logItem.Transform.anchoredPosition = anchoredPosition; // Color the log item ColorLogItem(logItem, index); // To access this log item easily in the future, add it to the dictionary logItemsAtIndices[index] = logItem; }
// Pool an unused log item public void PoolLogItem(DebugLogItem logItem) { logItem.gameObject.SetActive(false); pooledLogItems.Add(logItem); }