public override bool PerformSelectionAction(DrawArgs drawArgs) { bool bRet = false; float elevation = (float)(m_parentWorld.TerrainAccessor.GetElevationAt(m_fStartLatitud,m_fStartLongitude, (double)241)); if (m_fStartAlt < elevation) m_fStartAlt = elevation; xyzPosition=MathEngine.SphericalToCartesian(m_fStartLatitud, m_fStartLongitude, this.m_parentWorld.EquatorialRadius + (m_fStartAlt * World.Settings.VerticalExaggeration)); if (!drawArgs.WorldCamera.ViewFrustum.ContainsPoint(xyzPosition)) return false; Vector3 translationVector = new Vector3( (float)(xyzPosition.X - drawArgs.WorldCamera.ReferenceCenter.X), (float)(xyzPosition.Y - drawArgs.WorldCamera.ReferenceCenter.Y), (float)(xyzPosition.Z - drawArgs.WorldCamera.ReferenceCenter.Z)); Vector3 projectedPoint = drawArgs.WorldCamera.Project(translationVector); #if !DEBUG try #endif { if (Math.Abs(DrawArgs.LastMousePosition.X - projectedPoint.X) < m_iIconWidthHalf && Math.Abs(DrawArgs.LastMousePosition.Y - projectedPoint.Y) < m_iIconHeightHalf) { byte[] pbKeyState = new byte[256]; GetKeyboardState(pbKeyState); if ((pbKeyState[VK_LCONTROL] & 0x80) == 0x80) //Toggle Information text { GpsSetup gpsSetup = new GpsSetup(null, this, null); gpsSetup.ShowDialog(); gpsSetup.Dispose(); } bRet = true; Update(drawArgs); } } #if !DEBUG catch { } #endif return bRet; //false }
public override bool PerformSelectionAction(DrawArgs drawArgs) { bool bRet=false; float elevation = (float)(m_parentWorld.TerrainAccessor.GetElevationAt(m_RenderInfo.fLat,m_RenderInfo.fLon, (double)241)); if (m_RenderInfo.fAlt < elevation) m_RenderInfo.fAlt = elevation; xyzPosition=MathEngine.SphericalToCartesian(m_RenderInfo.fLat, m_RenderInfo.fLon, this.m_parentWorld.EquatorialRadius + (m_RenderInfo.fAlt * World.Settings.VerticalExaggeration)); if(!drawArgs.WorldCamera.ViewFrustum.ContainsPoint(xyzPosition)) return false; Vector3 translationVector = new Vector3( (float)(xyzPosition.X - drawArgs.WorldCamera.ReferenceCenter.X), (float)(xyzPosition.Y - drawArgs.WorldCamera.ReferenceCenter.Y), (float)(xyzPosition.Z - drawArgs.WorldCamera.ReferenceCenter.Z)); Vector3 projectedPoint = drawArgs.WorldCamera.Project(translationVector); #if !DEBUG try #endif { if(Math.Abs(DrawArgs.LastMousePosition.X-projectedPoint.X)<m_iIconWidthHalf && Math.Abs(DrawArgs.LastMousePosition.Y-projectedPoint.Y)<m_iIconHeightHalf) { byte [] pbKeyState = new byte[256]; GetKeyboardState(pbKeyState); if ((pbKeyState[VK_LCONTROL] & 0x80)==0x80) //Toggle Information text { GpsSetup gpsSetup = new GpsSetup(this, null, null); gpsSetup.ShowDialog(); gpsSetup.Dispose(); m_gpsTrackerOverlay.ToggleTrackHeading(m_bTrackHeading); m_gpsTrackerOverlay.ToggleTrackLine(m_bTrackLine); if (m_RenderInfo.bPOI==false) { if (m_bSignalDistance==false) { for (int i=0; i<m_gpsTrackerOverlay.m_iGpsPOIIndex; i++) { if (m_gpsTrackerOverlay.m_gpsPOI[i]!=null) { m_gpsTrackerOverlay.m_gpsPOI[i].m_fLatitudeFrom=1000F; m_gpsTrackerOverlay.m_gpsPOI[i].m_fLongitudeFrom=1000F; m_gpsTrackerOverlay.m_gpsPOI[i].m_sDescriptionFrom=""; } } } else { for (int i=0; i<m_gpsTrackerOverlay.m_iGpsIconIndex; i++) if (m_gpsTrackerOverlay.m_gpsIcons[i]!=null) m_gpsTrackerOverlay.m_gpsIcons[i].m_bSignalDistance=false; for (int i=0; i<m_gpsTrackerOverlay.m_iGpsPOIIndex; i++) { if (m_gpsTrackerOverlay.m_gpsPOI[i]!=null) { m_bSignalDistance = true; m_gpsTrackerOverlay.m_gpsPOI[i].m_fLatitudeFrom=m_RenderInfo.fLat; m_gpsTrackerOverlay.m_gpsPOI[i].m_fLongitudeFrom=m_RenderInfo.fLon; m_gpsTrackerOverlay.m_gpsPOI[i].m_sDescriptionFrom=m_RenderInfo.sDescription; } } } } else { if (m_bSignalDistance==false) { for (int i=0; i<m_gpsTrackerOverlay.m_iGpsIconIndex; i++) { if (m_gpsTrackerOverlay.m_gpsIcons[i]!=null) { m_gpsTrackerOverlay.m_gpsIcons[i].m_fLatitudeFrom=1000F; m_gpsTrackerOverlay.m_gpsIcons[i].m_fLongitudeFrom=1000F; m_gpsTrackerOverlay.m_gpsIcons[i].m_sDescriptionFrom=""; } } } else { for (int i=0; i<m_gpsTrackerOverlay.m_iGpsPOIIndex; i++) if (m_gpsTrackerOverlay.m_gpsPOI[i]!=null) m_gpsTrackerOverlay.m_gpsPOI[i].m_bSignalDistance=false; for (int i=0; i<m_gpsTrackerOverlay.m_iGpsIconIndex; i++) { if (m_gpsTrackerOverlay.m_gpsIcons[i]!=null) { m_bSignalDistance = true; m_gpsTrackerOverlay.m_gpsIcons[i].m_fLatitudeFrom=m_RenderInfo.fLat; m_gpsTrackerOverlay.m_gpsIcons[i].m_fLongitudeFrom=m_RenderInfo.fLon; m_gpsTrackerOverlay.m_gpsIcons[i].m_sDescriptionFrom=m_RenderInfo.sDescription; } } } } } else { bool bOn=true; if (m_bTrack) bOn=false; for (int i=0; i<m_gpsTrackerOverlay.m_iGpsIconIndex; i++) m_gpsTrackerOverlay.m_gpsIcons[i].m_bTrack=false; for (int i=0; i<m_gpsTrackerOverlay.m_iGpsPOIIndex; i++) m_gpsTrackerOverlay.m_gpsPOI[i].m_bTrack=false; m_bTrack=bOn; m_gpsTrackerOverlay.SetActiveTrack(m_RenderInfo.iIndex,bOn); } bRet=true; } } #if !DEBUG catch { } #endif return bRet; //false }