void renderPage(WikiPageData page) { foreach (var block in buildingBlocksForCurrentPage) { Destroy(block.gameObject); } foreach (var titleContainer in PageTitleContainers) { titleContainer.text = page.Title; } Window.Title = $"{page.Title} - {BaseTitle}"; buildingBlocksForCurrentPage = new List <WikiPageBuildingBlock>(); Transform blockParent = PageContentContainer.transform; var leadBlock = Instantiate(LeadBuildingBlock, blockParent); leadBlock.SetContent(page.LeadSection); buildingBlocksForCurrentPage.Add(leadBlock); foreach (var bodySection in page.BodySections) { var bodyBlock = Instantiate(BodySectionBuildingBlock, blockParent); bodyBlock.SetContent(bodySection); buildingBlocksForCurrentPage.Add(bodyBlock); } NavigateForwardButton.interactable = currentPositionInSessionBrowsingHistory < sessionBrowsingHistory.Count - 1; NavigateBackButton.interactable = currentPositionInSessionBrowsingHistory > 0; }
public void OpenPage(WikiPageData page) { if (currentPositionInSessionBrowsingHistory >= 0) { recordScrollRectPositionToHistory(); } if (currentPositionInSessionBrowsingHistory < sessionBrowsingHistory.Count - 1) { int cuttingPoint = currentPositionInSessionBrowsingHistory + 1; sessionBrowsingHistory.RemoveRange(cuttingPoint, sessionBrowsingHistory.Count - cuttingPoint); } currentPositionInSessionBrowsingHistory++; sessionBrowsingHistory.Add(new SessionDataPageSnapshot(page)); renderPage(page); ScrollRect.verticalNormalizedPosition = 1; }
public SessionDataPageSnapshot(WikiPageData page) { Page = page; ScrollPosition = 1; // 1 == top of page }