Esempio n. 1
0
        public bool processAxis(ref Ray3 spaceRay)
        {
            Vector3 trans = movable.ToolTranslation;

            xAxis.process(spaceRay, trans);
            yAxis.process(spaceRay, trans);
            zAxis.process(spaceRay, trans);

            Vector3 origin = spaceRay.Origin;

            if (xAxis.isSelected() && yAxis.isSelected() && zAxis.isSelected())
            {
                float xAxisDistance = (xAxis.Intersection - origin).length2();
                float yAxisDistance = (yAxis.Intersection - origin).length2();
                float zAxisDistance = (zAxis.Intersection - origin).length2();
                //X closest
                if (xAxisDistance < yAxisDistance && xAxisDistance < zAxisDistance)
                {
                    yAxis.clearSelection();
                    zAxis.clearSelection();
                }
                //Y closest
                else if (yAxisDistance < zAxisDistance && yAxisDistance < xAxisDistance)
                {
                    xAxis.clearSelection();
                    zAxis.clearSelection();
                }
                //Z closest
                else if (zAxisDistance < yAxisDistance && zAxisDistance < xAxisDistance)
                {
                    yAxis.clearSelection();
                    xAxis.clearSelection();
                }
                else
                {
                    xAxis.clearSelection();
                    zAxis.clearSelection();
                }
            }
            else if (xAxis.isSelected() && yAxis.isSelected())
            {
                twoWayAxisComparison(xAxis, yAxis, ref origin);
            }
            else if (xAxis.isSelected() && zAxis.isSelected())
            {
                twoWayAxisComparison(xAxis, zAxis, ref origin);
            }
            else if (zAxis.isSelected() && yAxis.isSelected())
            {
                twoWayAxisComparison(zAxis, yAxis, ref origin);
            }

            bool selected = xAxis.isSelected() || yAxis.isSelected() || zAxis.isSelected();

            movable.alertToolHighlightStatus(selected);

            return(selected);
        }
Esempio n. 2
0
        private void twoWayAxisComparison(RotationAxis axis0, RotationAxis axis1, ref Vector3 origin)
        {
            float axis0Distance = (axis0.Intersection - origin).length2();
            float axis1Distance = (axis1.Intersection - origin).length2();

            if (axis0Distance < axis1Distance)
            {
                axis1.clearSelection();
            }
            else
            {
                axis0.clearSelection();
            }
        }