Suggestion for ViewCube

Nov 18, 2011 at 6:24 AM

I really like your ViewCube, but one of my collegues at work had an idea that makes it even beter (in my opinion ;-) )

When you click on one side of the cube it rotates to the side. The change is that it rotates to the opposite site on double click.

It an easy change and I thought maybe you want to add it to your library...

 

       private DateTime lastClick = DateTime.MinValue;

        void cube_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            DateTime currentTime = DateTime.Now;

            Vector3D normalVector = this.m_dicNormalVectors[sender];
            Vector3D upVector = this.m_dicUpVectors[sender];

            //check if this was a double click or a normal click
            if ((currentTime - lastClick).TotalSeconds < 0.5)
            {
                //this was a double click, so scroll to the opposite side of the cube
                normalVector = this.m_dicOppositeNormalVectors[sender];
                upVector = this.m_dicOppositeUpVectors[sender];
            }
            lastClick = currentTime;

            var camera = this.MainViewport.Camera as ProjectionCamera;
            Point3D target = camera.Position + camera.LookDirection;
            double distance = camera.LookDirection.Length;

            Vector3D lookDirection = -normalVector;
            lookDirection.Normalize();
            lookDirection = lookDirection * distance;

            Point3D pos = target - lookDirection;
            Vector3D upDirection = upVector;
            upDirection.Normalize();

            Helper.AnimateTo(camera, pos, lookDirection, upDirection, 500);
        }

 

Best Regards

Coordinator
Nov 18, 2011 at 6:00 PM

good idea! I added double-click to the ViewCube in change set 72415!

Nov 20, 2011 at 5:55 PM

Wow, I learn so much from your toolkit!

Didn't know the MouseButtonEventArgs has a ClickCount property :-)