public void RecordTimeStamp() { TimeStampData timeStampData = new TimeStampData(); timeStampData.players = CloneConfigs(config.players); timeStampData.boxes = CloneConfigs(config.boxes); timeStampData.walls = CloneConfigs(config.walls); timeStampData.exits = CloneConfigs(config.exits); timeStampData.gates = CloneConfigs(config.gates); timeStampData.switches = CloneConfigs(config.switches); // Clean up textures for leaks Destroy(timeStampData.snapshotTexture); Destroy(timeStampData.snapshotSprite); timeStampData.snapshotTexture = GenerateSnapShotTexture(); timeStampData.snapshotSprite = GenerateSnapShotSprite(timeStampData.snapshotTexture); if (config.timeStampData.Count >= 10) { TimeStampData tsd = Bit.Utils.Slice(config.timeStampData, 0); Destroy(tsd.snapshotTexture); Destroy(tsd.snapshotSprite); config.timeStampData.RemoveAt(0); } config.timeStampData.Add(timeStampData); }
public void Open() { scrollViewOpen = !scrollViewOpen; scrollView.SetActive(scrollViewOpen); foreach (GameObject g in scrollViewContent) { Destroy(g); } scrollViewContent.Clear(); // choose 3 or less from stamp data int timeStampCount = config.timeStampData.Count; RectTransform contentRect = contentDisplay.gameObject.GetComponent <RectTransform>(); Vector2 sizeD = contentRect.sizeDelta; sizeD.x = 560.0f * timeStampCount; contentRect.sizeDelta = sizeD; for (int i = 0; i < timeStampCount; ++i) { GameObject g = Instantiate(prefabImage); g.transform.SetParent(contentDisplay); TimeStampData timeStampData = config.timeStampData[i]; RectTransform rectTransform = g.GetComponent <RectTransform>(); Vector2 anchoredPos = rectTransform.anchoredPosition; anchoredPos.x = (500.0f * i) + (50.0f * (i + 1)); anchoredPos.y = 0; rectTransform.anchoredPosition = anchoredPos; Image image = g.GetComponent <Image>(); image.sprite = timeStampData.snapshotSprite; Button button = g.GetComponent <Button>(); button.onClick.AddListener(() => ClickTimeStamp(timeStampData)); scrollViewContent.Add(g); } }
private void ClickTimeStamp(TimeStampData pTimeStampData) { scrollViewOpen = !scrollViewOpen; scrollView.SetActive(scrollViewOpen); foreach (GameObject g in scrollViewContent) { Image image = g.GetComponent <Image>(); image.sprite = null; Button button = g.GetComponent <Button>(); button.onClick.RemoveAllListeners(); Destroy(g); } scrollViewContent.Clear(); OnTimeStampClicked?.Invoke(pTimeStampData); }