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();
                }
Example #2
0
        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);
                    }
                }
            }
        }