//------------------------------------------------------------------------- // Makes sure the lat/lon point is visible in the current map view, if not // centre the view on the co-ordinates without changing the zoom level. public void EnsurePointIsInView(double latitudeDeg, double longitudeDeg) { if (CurrentMapPosition == null || !CurrentMapPosition.CanSeePoint(latitudeDeg, longitudeDeg)) { CentreMap(latitudeDeg, longitudeDeg); } }
public void runonce() { // rotate left if (fKeyLeft) { if ((fPlayerArc -= ANGLE10) < ANGLE0) { fPlayerArc += ANGLE360; } } // rotate right else if (fKeyRight) { if ((fPlayerArc += ANGLE10) >= ANGLE360) { fPlayerArc -= ANGLE360; } } // _____ _ // |\ arc | // | \ y // | \ | // - // |--x--| // // sin(arc)=y/diagonal // cos(arc)=x/diagonal where diagonal=speed double playerXDir = fCosTable[fPlayerArc]; double playerYDir = fSinTable[fPlayerArc]; // move forward if (fKeyUp) { fPlayerX += (int)(playerXDir * fPlayerSpeed); fPlayerY += (int)(playerYDir * fPlayerSpeed); } // move backward else if (fKeyDown) { fPlayerX -= (int)(playerXDir * fPlayerSpeed); fPlayerY -= (int)(playerYDir * fPlayerSpeed); } // get walls ClipPlayer(); showStatus(CurrentMapPosition.ToString()); //render(); }
//------------------------------------------------------------------------- public void ChangeView(double centreLatDeg, double centreLonDeg, double widthDeg, double heightDeg) { RaiseChangeViewEvent(new ChangeViewEventEventArgs(centreLatDeg, centreLonDeg, widthDeg, heightDeg)); double level = 1.0; if (Map?.TileProvider != null) { level = Map.TileProvider.Level; } CurrentMapPosition.Update(centreLatDeg, centreLonDeg, widthDeg, heightDeg, level); }
//*******************************************************************// //* Running thread //*******************************************************************// public void run() { requestFocus(); // create offscreen buffer fOffscreenImage = createImage(getSize().width, getSize().height); fOffscreenGraphics = fOffscreenImage.getGraphics(); while (fThread != null) { // rotate left if (fKeyLeft) { if ((fPlayerArc -= ANGLE10) < ANGLE0) { fPlayerArc += ANGLE360; } } // rotate right else if (fKeyRight) { if ((fPlayerArc += ANGLE10) >= ANGLE360) { fPlayerArc -= ANGLE360; } } // _____ _ // |\ arc | // | \ y // | \ | // - // |--x--| // // sin(arc)=y/diagonal // cos(arc)=x/diagonal where diagonal=speed double playerXDir = fCosTable[fPlayerArc]; double playerYDir = fSinTable[fPlayerArc]; // move forward if (fKeyUp) { fPlayerX += (int)(playerXDir * fPlayerSpeed); fPlayerY += (int)(playerYDir * fPlayerSpeed); } // move backward else if (fKeyDown) { fPlayerX -= (int)(playerXDir * fPlayerSpeed); fPlayerY -= (int)(playerYDir * fPlayerSpeed); } // get walls ClipPlayer(); showStatus(CurrentMapPosition.ToString()); render(); try { Thread.sleep(50); } catch //(System.Exception sleepProblem) { showStatus("Sleep problem"); } } }