static public void DrawSurface(VmodMonkeMapLoader.Behaviours.SurfaceClimbSettings surface, bool single = false)
    {
        Handles.color = surface.Unclimbable ? Color.white : (Color.cyan + Color.white) / 2.0f;
        foreach (var collider in surface.gameObject.GetComponents <Collider>())
        {
            if (collider is MeshCollider)
            {
                Vector3[]      verts     = (collider as MeshCollider).sharedMesh.vertices;
                List <Vector3> positions = new List <Vector3>();
                foreach (var vert in verts)
                {
                    if (!positions.Contains(vert))
                    {
                        positions.Add(vert);
                    }
                }

                foreach (var vert in positions)
                {
                    Vector3 temp = new Vector3(vert.x * collider.transform.lossyScale.x, vert.y * collider.transform.lossyScale.y, vert.z * collider.transform.lossyScale.z) + collider.transform.position;
                    if (single)
                    {
                        Handles.SphereHandleCap(0, temp, Quaternion.identity, .5f, EventType.Repaint);
                    }
                    else if (Handles.Button(temp, Quaternion.identity, .5f, .5f, Handles.SphereHandleCap))
                    {
                        MapDescriptorEditor.moveTo(collider.transform);
                    }
                }
            }
            else if (collider is SphereCollider)
            {
                float   size = (collider as SphereCollider).radius * collider.transform.lossyScale.magnitude;
                Vector3 pos  = collider.transform.position;

                if (single)
                {
                    Handles.SphereHandleCap(0, pos, Quaternion.identity, size, EventType.Repaint);
                }
                else if (Handles.Button(pos, Quaternion.identity, size, size, Handles.SphereHandleCap))
                {
                    MapDescriptorEditor.moveTo(collider.transform);
                }
            }
            else
            {
                if (single)
                {
                    Handles.CubeHandleCap(0, collider.transform.position, Quaternion.identity, 0.5f, EventType.Repaint);
                }
                else if (Handles.Button(collider.transform.position, Quaternion.identity, 0.5f, 0.5f, Handles.CubeHandleCap))
                {
                    MapDescriptorEditor.moveTo(collider.transform);
                }
            }
        }

        if (single)
        {
            Handles.BeginGUI();
            GUILayout.BeginVertical(MapDescriptorConfig.textStyle, GUILayout.Width(MapDescriptorConfig.guiWidth));

            GUILayout.Label(surface.gameObject.name, EditorStyles.boldLabel);

            surface.Unclimbable = EditorGUILayout.ToggleLeft("Unclimbable", surface.Unclimbable);
            if (!surface.Unclimbable)
            {
                surface.slipPercentage = EditorGUILayout.FloatField("Slip Percentage", surface.slipPercentage);
            }

            GUILayout.EndVertical();
            Handles.EndGUI();
        }
    }
    public void OnSceneGUI()
    {
        VmodMonkeMapLoader.Behaviours.SurfaceClimbSettings targetSurface = (VmodMonkeMapLoader.Behaviours.SurfaceClimbSettings)target;

        DrawSurface(targetSurface, true);
    }