void ChmEngineImpl::Navigate(int dir) { if (!htmlWindow) return; if (dir < 0) { for (; dir < 0 && CanNavigate(dir); dir++) htmlWindow->GoBack(); } else { for (; dir > 0 && CanNavigate(dir); dir--) htmlWindow->GoForward(); } }
void EbookController::Navigate(int dir) { if (!CanNavigate(dir)) return; // update the current history entry int idx = currPageReparseIdx; if (navHistoryIx < navHistory.Count()) navHistory.At(navHistoryIx) = idx; else navHistory.Append(idx); navHistoryIx += dir; idx = navHistory.At(navHistoryIx); int pageNo = PageForReparsePoint(pages, idx); if (0 == pageNo) pageNo = GetMaxPageCount(); if (pageNo > 0) GoToPage(pageNo, false); }
TArray<FVector> ADonNavigationManagerUnbound::NeighborsAsVectors(FVector Location) { TArray<FVector> neighbors; neighbors.Reserve(Volume6DOF + VolumeImplicitDOF); /*FVector volumeId = VolumeIdAt(Location); int x = volumeId.X, y = volumeId.Y, z = volumeId.Z;*/ // 6 DOF neighbors (Direct neighbors) for (int32 i = 0; i < Volume6DOF; i++) { /*int32 xN = x + x6DOFCoords[i]; int32 yN = y + y6DOFCoords[i]; int32 zN = z + z6DOFCoords[i]; neighbors.Add(LocationAtId(xN, yN, zN));*/ FVector neighbor = Location + VoxelSize * FVector(x6DOFCoords[i], y6DOFCoords[i], z6DOFCoords[i]); neighbors.Add(neighbor); } // Implicit: // X if (CanNavigate(LocationAtId(Location, 1, 0, 0)) && CanNavigate(LocationAtId(Location, 0, 0, 1))) neighbors.Add(LocationAtId(Location, 1, 0, 1)); if (CanNavigate(LocationAtId(Location, -1, 0, 0)) && CanNavigate(LocationAtId(Location, 0, 0, 1))) neighbors.Add(LocationAtId(Location, -1, 0, 1)); if (CanNavigate(LocationAtId(Location, 1, 0, 0)) && CanNavigate(LocationAtId(Location, 0, 0, -1))) neighbors.Add(LocationAtId(Location, 1, 0, -1)); if (CanNavigate(LocationAtId(Location, -1, 0, 0)) && CanNavigate(LocationAtId(Location, 0, 0, -1))) neighbors.Add(LocationAtId(Location, -1, 0, -1)); //Y if (CanNavigate(LocationAtId(Location, 0, 1, 0)) && CanNavigate(LocationAtId(Location, 0, 0, 1))) neighbors.Add(LocationAtId(Location, 0, 1, 1)); if (CanNavigate(LocationAtId(Location, 0, -1, 0)) && CanNavigate(LocationAtId(Location, 0, 0, 1))) neighbors.Add(LocationAtId(Location, 0, -1, 1)); if (CanNavigate(LocationAtId(Location, 0, 1, 0)) && CanNavigate(LocationAtId(Location, 0, 0, -1))) neighbors.Add(LocationAtId(Location, 0, 1, -1)); if (CanNavigate(LocationAtId(Location, 0, -1, 0)) && CanNavigate(LocationAtId(Location, 0, 0, -1))) neighbors.Add(LocationAtId(Location, 0, -1, -1)); //Z if (CanNavigate(LocationAtId(Location, 1, 0, 0)) && CanNavigate(LocationAtId(Location, 0, 1, 0))) neighbors.Add(LocationAtId(Location, 1, 1, 0)); if (CanNavigate(LocationAtId(Location, -1, 0, 0)) && CanNavigate(LocationAtId(Location, 0, 1, 0))) neighbors.Add(LocationAtId(Location, -1, 1, 0)); if (CanNavigate(LocationAtId(Location, 1, 0, 0)) && CanNavigate(LocationAtId(Location, 0, -1, 0))) neighbors.Add(LocationAtId(Location, 1, -1, 0)); if (CanNavigate(LocationAtId(Location, -1, 0, 0)) && CanNavigate(LocationAtId(Location, 0, -1, 0))) neighbors.Add(LocationAtId(Location, -1, -1, 0)); // Note:- The commented code below is just a different way of performing the same operations done above. // Need to remove the commented code at some point, leaving it in there for now as the Unbound solution // might needs some time to mature. // X /*if (CanNavigate(LocationAtId(x + 1, y, z)) && CanNavigate(LocationAtId(x, y, z + 1))) neighbors.Add(LocationAtId(x + 1, y, z + 1)); if (CanNavigate(LocationAtId(x - 1, y, z)) && CanNavigate(LocationAtId(x, y, z + 1))) neighbors.Add(LocationAtId(x - 1, y, z + 1)); if (CanNavigate(LocationAtId(x + 1, y, z)) && CanNavigate(LocationAtId(x, y, z - 1))) neighbors.Add(LocationAtId(x + 1, y, z - 1)); if (CanNavigate(LocationAtId(x - 1, y, z)) && CanNavigate(LocationAtId(x, y, z - 1))) neighbors.Add(LocationAtId(x - 1, y, z - 1)); //Y if (CanNavigate(LocationAtId(x, y + 1, z)) && CanNavigate(LocationAtId(x, y, z + 1))) neighbors.Add(LocationAtId(x, y + 1, z + 1)); if (CanNavigate(LocationAtId(x, y - 1, z)) && CanNavigate(LocationAtId(x, y, z + 1))) neighbors.Add(LocationAtId(x, y - 1, z + 1)); if (CanNavigate(LocationAtId(x, y + 1, z)) && CanNavigate(LocationAtId(x, y, z - 1))) neighbors.Add(LocationAtId(x, y + 1, z - 1)); if (CanNavigate(LocationAtId(x, y - 1, z)) && CanNavigate(LocationAtId(x, y, z - 1))) neighbors.Add(LocationAtId(x, y - 1, z - 1)); //Z if (CanNavigate(LocationAtId(x + 1, y, z)) && CanNavigate(LocationAtId(x, y + 1, z))) neighbors.Add(LocationAtId(x + 1, y + 1, z)); if (CanNavigate(LocationAtId(x - 1, y, z)) && CanNavigate(LocationAtId(x, y + 1, z))) neighbors.Add(LocationAtId(x - 1, y + 1, z)); if (CanNavigate(LocationAtId(x + 1, y, z)) && CanNavigate(LocationAtId(x, y - 1, z))) neighbors.Add(LocationAtId(x + 1, y - 1, z)); if (CanNavigate(LocationAtId(x - 1, y, z)) && CanNavigate(LocationAtId(x, y - 1, z))) neighbors.Add(LocationAtId(x - 1, y - 1, z));*/ return neighbors; }