public override void OnMouseMove(MouseEventArgs mouseEvent) { lastMouseMovePosition = mouseEvent.Position; base.OnMouseMove(mouseEvent); if (SuppressObject3DControls || !this.PositionWithinLocalBounds(mouseEvent.X, mouseEvent.Y) || !CanSelectObject()) { return; } Ray ray = this.World.GetRayForLocalBounds(mouseEvent.Position); IntersectInfo info = null; var mouseEvent3D = new Mouse3DEventArgs(mouseEvent, ray, info); if (MouseDownOnObject3DControlVolume && mouseDownObject3DControl != null) { mouseDownObject3DControl.OnMouseMove(mouseEvent3D, false); } else { this.FindHitObject3DControl(ray, out IObject3DControl hitObject3DControl, out _); var object3DControls = this.Object3DControls; var overControl = false; foreach (var object3DControl in object3DControls) { if (hitObject3DControl == object3DControl && hitObject3DControl.Visible) { overControl = true; // we have found the control that got hit, wait 200 ms to see if we are still over the same control UiThread.RunOnIdle(() => { var ray2 = this.World.GetRayForLocalBounds(lastMouseMovePosition); this.FindHitObject3DControl(ray2, out IObject3DControl stillOver3DControl, out _); if (stillOver3DControl == hitObject3DControl) { // we are over the same control as the last mouse move so set the hovered object to it HoveredObject3DControl = object3DControl; object3DControl.OnMouseMove(mouseEvent3D, true); } }, .2); } else { object3DControl.OnMouseMove(mouseEvent3D, false); } } if (overControl && hitObject3DControl is Object3DControl object3DControl2 && object3DControl2.RootSelection != null) { ApplicationController.Instance.UiHint = "Click to edit values".Localize(); }
public override void OnMouseMove(MouseEventArgs mouseEvent) { base.OnMouseMove(mouseEvent); if (SuppressObject3DControls || !this.PositionWithinLocalBounds(mouseEvent.X, mouseEvent.Y) || !CanSelectObject()) { return; } Ray ray = this.World.GetRayForLocalBounds(mouseEvent.Position); IntersectInfo info = null; var mouseEvent3D = new Mouse3DEventArgs(mouseEvent, ray, info); if (MouseDownOnObject3DControlVolume && mouseDownObject3DControl != null) { mouseDownObject3DControl.OnMouseMove(mouseEvent3D, false); } else { this.FindHitObject3DControl(ray, out IObject3DControl hitObject3DControl, out _); var object3DControls = this.Object3DControls; foreach (var object3DControl in object3DControls) { if (hitObject3DControl == object3DControl) { HoveredObject3DControl = object3DControl; object3DControl.OnMouseMove(mouseEvent3D, true); } else { object3DControl.OnMouseMove(mouseEvent3D, false); } } } }