//Update the position, rotation, or scale of the object selections based on the tool handle
        private void EditSelection()
        {
            //Determine which tool was used and call the respective transform
            switch (SelectionHandle.Instance.Tool)
            {
            case Tool.Translate:
                //Get the position displacement and translate the selected objects
                Vector3 posDisplacement = SelectionHandle.Instance.GetPosDisplacement();
                TransformTools.TranslateSelection(Instance.selectedObjects, posDisplacement);

                //Update the selection average
                TranslateSelectionAverage(posDisplacement);
                break;

            case Tool.Rotate:
                //Get the angle and axis and to rotate around
                Vector3 rotationAxis;
                float   angle = SelectionHandle.Instance.GetRotDisplacement(out rotationAxis);

                //Rotate the selected objects around the selection average
                TransformTools.RotateSelection(Instance.selectedObjects, selectionAverage, rotationAxis, angle);
                break;

            case Tool.Scale:
                //Get the scale displacement and scale the selected objects
                Vector3 scaleDisplacement = SelectionHandle.Instance.GetScaleDisplacement();
                TransformTools.ScaleSelection(Instance.selectedObjects, selectionAverage, scaleDisplacement, false);
                break;
            }
        }
            public override void RevertEdit()
            {
                TransformTools.ScaleSelection(Instance.selectedObjects, Instance.selectionAverage, scaleDownFactor, false);

                //Recalculate the bounding sphere
                Instance.UpdateSelectionBounds();
            }