Exemplo n.º 1
0
		public void MouseUp(object sender, MouseEventArgs e )
		{
			if(!isOn)
				return;
			
			// Test if mouse was clicked and dragged
			if (mouseDragged())
				return;

			// Check if dialog box has been instantiated then get the measure mod
			// if not, automatically assign the mode to be single

			if (World.Settings.MeasureMode == MeasureMode.Multi && multiline == null)
				multiline = new MeasureMultiLine();

			// Cancel selection if right mouse button clicked
			if (e.Button == MouseButtons.Right)
			{
				if(State != MeasureState.Idle && World.Settings.MeasureMode == MeasureMode.Multi)
					MouseRightClick(sender,e);
				else
				{
					multiline.Clear();
					IsOn = false;
				}
				return;
			}

			// Do nothing for all other mouse buttons clicked
			if (e.Button != MouseButtons.Left)
				return;
			
			// Don't know if this is best way to do things...
			if (World.Settings.MeasureMode == MeasureMode.Single)
			{
				switch(State)
				{
					case MeasureState.Idle:
						State = MeasureState.Measuring;
						break;
					case MeasureState.Measuring:
						State = MeasureState.Complete;
						return;
					case MeasureState.Complete:
					{
						multiline.Clear();
						State = MeasureState.Idle;
						return;
					}
				}
			} 
			else if (World.Settings.MeasureMode == MeasureMode.Multi) 
			{
				switch(State)
				{
					case MeasureState.Idle:
						State = MeasureState.Measuring;
						break;
					case MeasureState.Measuring:
					{
						State = MeasureState.Measuring;
						if(multiline.Count>0)
							this.multiline.deleteLine();
						MeasureLine line = new MeasureLine(multiline.Count);
						line.StartLatitude = this.StartLatitude;
						line.EndLatitude = this.EndLatitude;
						line.StartLongitude = this.StartLongitude;
						line.EndLongitude = this.EndLongitude;
						line.Calculate(this.m_world,false);
						this.multiline.addLine(line);
						break;
					}
					case MeasureState.Complete:
					{
						State = MeasureState.Idle;
						return;
					}
				}
			}

			m_drawArgs.WorldCamera.PickingRayIntersection(
				e.X,
				e.Y,
				out StartLatitude,
				out StartLongitude);

			EndLatitude = StartLatitude;
			EndLongitude = StartLongitude;

			measureLine[0].X = (MathEngine.SphericalToCartesian(StartLatitude, 
				StartLongitude, m_drawArgs.WorldCamera.WorldRadius)).X;
			measureLine[0].Y = (MathEngine.SphericalToCartesian(StartLatitude, 
				StartLongitude, m_drawArgs.WorldCamera.WorldRadius)).Y;
			measureLine[0].Z = (MathEngine.SphericalToCartesian(StartLatitude, 
				StartLongitude, m_drawArgs.WorldCamera.WorldRadius)).Z;

			MeasureLine newline = new MeasureLine(multiline.Count);
			newline.StartLatitude = this.StartLatitude;
			newline.EndLatitude = this.EndLatitude;
			newline.StartLongitude = this.StartLongitude;
			newline.EndLongitude = this.EndLongitude;
			newline.Calculate(this.m_world,false);
			this.multiline.addLine(newline);
		}
Exemplo n.º 2
0
		public void MouseUp(object sender, MouseEventArgs e )
		{
			if(!isOn)
				return;
			
			// Test if mouse was clicked and dragged
			if (mouseDragged())
				return;

			// Check if dialog box has been instantiated then get the measure mod
			// if not, automatically assign the mode to be single

			if (World.Settings.MeasureMode == MeasureMode.Multi && multiline == null)
				multiline = new MeasureMultiLine();

			// Cancel selection if right mouse button clicked
			if (e.Button == MouseButtons.Right)
			{
				if(State != MeasureState.Idle && World.Settings.MeasureMode == MeasureMode.Multi)
					MouseRightClick(sender,e);
				else
				{
					multiline.Clear();
					IsOn = false;
				}
				return;
			}

			// Do nothing for all other mouse buttons clicked
			if (e.Button != MouseButtons.Left)
				return;
			
			// Don't know if this is best way to do things...
			if (World.Settings.MeasureMode == MeasureMode.Single)
			{
				switch(State)
				{
					case MeasureState.Idle:
						State = MeasureState.Measuring;
						break;
					case MeasureState.Measuring:
						State = MeasureState.Complete;
						return;
					case MeasureState.Complete:
					{
						multiline.Clear();
						State = MeasureState.Idle;
						return;
					}
				}
			} 
			else if (World.Settings.MeasureMode == MeasureMode.Multi) 
			{
				switch(State)
				{
					case MeasureState.Idle:
						State = MeasureState.Measuring;
						break;
					case MeasureState.Measuring:
					{
						State = MeasureState.Measuring;
						if(multiline.Count>0)
							this.multiline.deleteLine();
						MeasureLine line = new MeasureLine(multiline.Count);
						line.StartLatitude = this.StartLatitude;
						line.EndLatitude = this.EndLatitude;
						line.StartLongitude = this.StartLongitude;
						line.EndLongitude = this.EndLongitude;
						line.Calculate(this.m_world,false);
						this.multiline.addLine(line);
						break;
					}
					case MeasureState.Complete:
					{
						State = MeasureState.Idle;
						return;
					}
				}
			}

			m_drawArgs.WorldCamera.PickingRayIntersection(
				e.X,
				e.Y,
				out StartLatitude,
				out StartLongitude);

			EndLatitude = StartLatitude;
			EndLongitude = StartLongitude;

			measureLine[0].X = (MathEngine.SphericalToCartesian(StartLatitude, 
				StartLongitude, m_drawArgs.WorldCamera.WorldRadius)).X;
			measureLine[0].Y = (MathEngine.SphericalToCartesian(StartLatitude, 
				StartLongitude, m_drawArgs.WorldCamera.WorldRadius)).Y;
			measureLine[0].Z = (MathEngine.SphericalToCartesian(StartLatitude, 
				StartLongitude, m_drawArgs.WorldCamera.WorldRadius)).Z;

			MeasureLine newline = new MeasureLine(multiline.Count);
			newline.StartLatitude = this.StartLatitude;
			newline.EndLatitude = this.EndLatitude;
			newline.StartLongitude = this.StartLongitude;
			newline.EndLongitude = this.EndLongitude;
			newline.Calculate(this.m_world,false);
			this.multiline.addLine(newline);
		}
Exemplo n.º 3
0
			public SaveMultiLine(MeasureToolLayer layer)
			{
				InitializeComponent();
				m_layer = layer;
				m_multiline = layer.multiline;
			}
Exemplo n.º 4
0
			public SaveMultiLine(MeasureToolLayer layer)
			{
				InitializeComponent();
				m_layer = layer;
				m_multiline = layer.multiline;
			}