0

Suggestion for ViewCube

Anonymous 10 years ago 0
This discussion was imported from CodePlex

Elemental wrote at 2011-11-18 07:24:

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


objo wrote at 2011-11-18 19:00:

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


Elemental wrote at 2011-11-20 18:55:

Wow, I learn so much from your toolkit!

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