private Utils.VisualPrimitiveArrow ConfigureVisual(ShapeUtils.Direction direction)
        {
            const float edgeDirectionAlpha    = 0.25f;
            const float nonEdgeDirectionAlpha = 0.025f;
            const float mouseOverAlpha        = 0.65f;

            var visual = GetVisual(direction);

            visual.Visible = true;
            visual.Color   = direction == ShapeUtils.Direction.Negative_Z || direction == ShapeUtils.Direction.Positive_Z ?
                             new Color(0.96f, 0.8f, 0.8f, edgeDirectionAlpha) :
                             new Color(0.8f, 0.8f, 0.96f, nonEdgeDirectionAlpha);
            visual.MouseOverColor = new Color(0.9f, 0.9f, 0.9f, mouseOverAlpha);

            return(visual);
        }
 private Quaternion GetRotation(Vector3 axis, ShapeUtils.Direction direction)
 {
     return(Quaternion.LookRotation(MainDirection, UpVector) * Quaternion.FromToRotation(axis, ShapeUtils.GetLocalFaceDirection(direction)));
 }
 public Utils.VisualPrimitiveArrow GetVisual(ShapeUtils.Direction direction)
 {
     return(GetOrCreateVisualPrimitive <Utils.VisualPrimitiveArrow>(direction.ToString(), "GUI/Text Shader"));
 }