bool NVOverlay::HandlePotentialMapClick(float RawMouseX, float RawMouseY) { float FracMouseX, FracMouseY; FracMouseX = (RawMouseX + 1.0f) * .5f; FracMouseY = (RawMouseY + 1.0f) * .5f; if(GetMapOn()) { // these coords increase towards the right and up unsigned long int ClickPseudoCoordX, ClickPseudoCoordY; ClickPseudoCoordX = (unsigned long int)(FracMouseX * (float)NVW_NVOVERLAY_PSEUDO_SCREENSIZE_X); ClickPseudoCoordY = (unsigned long int)(FracMouseY * (float)NVW_NVOVERLAY_PSEUDO_SCREENSIZE_Y); if(ClickPseudoCoordX > MapLeft && ClickPseudoCoordX < MapRight && ClickPseudoCoordY > MapBot && ClickPseudoCoordY < MapTop) { // translate into image-fraction units float ImageFracX, ImageFracY; // these units also increase to the right and up ImageFracX = ((float)ClickPseudoCoordX - (float)MapLeft) / (float)(MapRight - MapLeft); ImageFracY = ((float)ClickPseudoCoordY - (float)MapBot) / (float)(MapTop - MapBot); // figure out the new spatial position represented by these map fractional coordinates double SpatialX, SpatialY; SpatialX = ((1.0f - ImageFracX) * MasterScene.GetCoordXRange()) + MasterScene.GetCoordXMin(); // Lon increases to left so must be inverted by 1.0 - SpatialY = (ImageFracY * MasterScene.GetCoordYRange()) + MasterScene.GetCoordYMin(); PM->JumpTo(SpatialX, SpatialY); return(true); } // if } // if return(false); } // NVOverlay::HandlePotentialMapClick