public static string FormatCoordinate(double coord, CoordinateDisplay display)
 {
     coord = Math.Abs(coord);
     if (display == CoordinateDisplay.DecimalDegrees)
     {
         return string.Format("{0:0.00000}", coord);
     }
     else if (display == CoordinateDisplay.DecimalMinutes)
     {
         return string.Format("{0} {1:0.000}", (int)coord, (coord - (int)coord) * 60.0);
     }
     return "Unknown format";
 }
Example #2
0
 public static string FormatCoordinate(double coord, CoordinateDisplay display)
 {
     coord = Math.Abs(coord);
     if (display == CoordinateDisplay.DecimalDegrees)
     {
         return(string.Format("{0:0.00000}", coord));
     }
     else if (display == CoordinateDisplay.DecimalMinutes)
     {
         return(string.Format("{0} {1:0.000}", (int)coord, (coord - (int)coord) * 60.0));
     }
     return("Unknown format");
 }
Example #3
0
            public static void Draw(SceneView sceneView, GridData gridData)
            {
                CoordinateDisplay coordinateStyle = GridSettings.instance.coordinateDisplay;

                if (coordinateStyle == CoordinateDisplay.Off)
                {
                    return;
                }

                if (sceneView.camera.orthographic && coordinateStyle == CoordinateDisplay.PerspectiveOnly)
                {
                    return;
                }

                if (!sceneView.camera.orthographic && coordinateStyle == CoordinateDisplay.OrthographicOnly)
                {
                    return;
                }

                if (Selection.activeTransform != null)
                {
                    GUIStyle style = new GUIStyle(EditorGUIUtility.GetBuiltinSkin(EditorSkin.Game).box)
                    {
                        richText = true,
                        padding  = new RectOffset(0, 0, 0, 0),
                        margin   = new RectOffset(0, 0, 0, 0)
                    };

                    string    coordinateColor    = GetHexRGB(GridSettings.instance.coordinateColor);
                    bool      useComponentColors = GridSettings.instance.useAxisColorForComponents;
                    GridPoint gridPoint          = gridData.WorldPositionToGridPoint(Selection.activeTransform.position);
                    string    label = string.Format(COORDINATE_LABEL_FORMAT,
                                                    gridPoint.x, gridPoint.y, gridPoint.z,
                                                    (useComponentColors ? GetHexRGB(GridSettings.instance.xAxisColor) : coordinateColor),
                                                    (useComponentColors ? GetHexRGB(GridSettings.instance.yAxisColor) : coordinateColor),
                                                    (useComponentColors ? GetHexRGB(GridSettings.instance.zAxisColor) : coordinateColor),
                                                    GridSettings.instance.coordinateSize,
                                                    coordinateColor);

                    CoordinateAnchor coordinateAnchor = GridSettings.instance.coordinateAnchor;
                    float            size             = GridSettings.instance.coordinateSize;
                    Handles.BeginGUI();
                    if (coordinateAnchor == CoordinateAnchor.AttachToSelection)
                    {
                        style.alignment = TextAnchor.UpperLeft;
                        style.padding   = new RectOffset(5, 0, 5, 0);
                        style.margin    = new RectOffset(5, 0, 5, 0);
                        Handles.Label(Selection.activeTransform.position, label, style);
                    }
                    else
                    {
                        style.alignment = TextAnchor.MiddleCenter;

                        int numCharacters = (gridPoint.x.ToString().Length + gridPoint.y.ToString().Length + gridPoint.z.ToString().Length);

                        // arbitrary multipliers that look good
                        float width         = size * 6f + (numCharacters - 3) * size * 0.75f;
                        float height        = size * 1.8f;
                        Rect  rect          = new Rect(0f, 0f, width, height);
                        float padding       = 10f;
                        float paddingCenter = (sceneView.position.width - width) * 0.5f;
                        float paddingMiddle = (sceneView.position.height - height) * 0.5f;
                        float paddingRight  = sceneView.position.width - padding - width;
                        float paddingLower  = sceneView.position.height - padding - height - 14f;

                        switch (coordinateAnchor)
                        {
                        case CoordinateAnchor.UpperLeft:
                            rect.x = padding;
                            rect.y = padding;
                            break;

                        case CoordinateAnchor.MiddleLeft:
                            rect.x = padding;
                            rect.y = paddingMiddle;
                            break;

                        case CoordinateAnchor.LowerLeft:
                            rect.x = padding;
                            rect.y = paddingLower;
                            break;

                        case CoordinateAnchor.UpperCenter:
                            rect.x = paddingCenter;
                            rect.y = padding;
                            break;

                        case CoordinateAnchor.LowerCenter:
                            rect.x = paddingCenter;
                            rect.y = paddingLower;
                            break;

                        case CoordinateAnchor.UpperRight:
                            rect.x = paddingRight;
                            rect.y = padding;
                            break;

                        case CoordinateAnchor.MiddleRight:
                            rect.x = paddingRight;
                            rect.y = paddingMiddle;
                            break;

                        case CoordinateAnchor.LowerRight:
                            rect.x = paddingRight;
                            rect.y = paddingLower;
                            break;

                        default:
                            Debug.LogError(string.Format("Grids MX -- Unsupported Coordinate Anchor: " + coordinateAnchor));
                            break;
                        }

                        GUI.Label(rect, label, style);
                    }
                    Handles.EndGUI();
                }
            }