static public void Init()
    {
        MegaLoftLightMapWindow window = ScriptableObject.CreateInstance <MegaLoftLightMapWindow>();

        window.position = new Rect(Screen.width / 2, Screen.height / 2, 250, 150);
        window.ShowUtility();
    }
    public override void OnInspectorGUI()
    {
        MegaShapeLoft loft = (MegaShapeLoft)target;

        layers = GetLayers(loft);

#if !UNITY_5
        EditorGUIUtility.LookLikeControls();
#endif

        // Common params
        //if ( GUILayout.Button("Build Loft") )
        //{
        //	loft.rebuild = true;
        //}
        loft.rebuild  = EditorGUILayout.Toggle("Rebuild", loft.rebuild);
        loft.realtime = EditorGUILayout.Toggle("Realtime", loft.realtime);

        loft.up      = EditorGUILayout.Vector3Field("Up", loft.up);
        loft.tangent = EditorGUILayout.FloatField("Tangent", loft.tangent * 100.0f) * 0.01f;

        loft.Tangents = EditorGUILayout.Toggle("Tangents", loft.Tangents);
        //loft.Optimize = EditorGUILayout.Toggle("Optimize", loft.Optimize);
#if UNITY_5_5 || UNITY_5_6 || UNITY_6
#else
        loft.Optimize = EditorGUILayout.Toggle("Optimize", loft.Optimize);
#endif
        loft.DoBounds   = EditorGUILayout.Toggle("Bounds", loft.DoBounds);
        loft.DoCollider = EditorGUILayout.Toggle("Collider", loft.DoCollider);

        loft.useColors = EditorGUILayout.Toggle("Use Colors", loft.useColors);
        //loft.defaultColor = EditorGUILayout.ColorField("Color", loft.defaultColor);
        //EditorGUILayout.EndToggleGroup();

        loft.conformAmount = EditorGUILayout.Slider("Conform Amount", loft.conformAmount, 0.0f, 1.0f);
        loft.undo          = EditorGUILayout.Toggle("Undo", loft.undo);

#if UNITY_5_5 || UNITY_5_6 || UNITY_6
#else
        bool hidewire1 = EditorGUILayout.Toggle("Hide Wire", hidewire);

        if (hidewire != hidewire1)
        {
            hidewire = hidewire1;
            EditorUtility.SetSelectedWireframeHidden(loft.GetComponent <Renderer>(), hidewire);
        }
#endif
        //loft.genLightMap = EditorGUILayout.BeginToggleGroup("Gen LightMap", loft.genLightMap);
        //loft.angleError = EditorGUILayout.Slider("Angle Error",loft.angleError, 0.0f, 1.0f);
        //loft.areaError = EditorGUILayout.Slider("Area Error",loft.areaError, 0.0f, 1.0f);
        //loft.hardAngle = EditorGUILayout.FloatField("Hard Angle", loft.hardAngle);
        //loft.packMargin = EditorGUILayout.FloatField("Pack Margin", loft.packMargin);
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("Build LightMap"))
        {
            MegaLoftLightMapWindow.Init();
        }
        if (GUILayout.Button("Copy"))
        {
            loft.Clone();
        }

        EditorGUILayout.EndHorizontal();

        //EditorGUILayout.EndToggleGroup();

        showlimits = EditorGUILayout.Foldout(showlimits, "Limits");

        if (showlimits)
        {
            EditorGUILayout.BeginVertical("Box");
            loft.startLow     = EditorGUILayout.FloatField("Start Low", loft.startLow);
            loft.startHigh    = EditorGUILayout.FloatField("Start High", loft.startHigh);
            loft.lenLow       = EditorGUILayout.FloatField("Len Low", loft.lenLow);
            loft.lenHigh      = EditorGUILayout.FloatField("Len High", loft.lenHigh);
            loft.crossLow     = EditorGUILayout.FloatField("Cross Start Low", loft.crossLow);
            loft.crossHigh    = EditorGUILayout.FloatField("Cross Start High", loft.crossHigh);
            loft.crossLenLow  = EditorGUILayout.FloatField("Cross Len Low", loft.crossLenLow);
            loft.crossLenHigh = EditorGUILayout.FloatField("Cross Len High", loft.crossLenHigh);

            loft.distlow   = EditorGUILayout.FloatField("Dist Low", loft.distlow);
            loft.disthigh  = EditorGUILayout.FloatField("Dist High", loft.disthigh);
            loft.cdistlow  = EditorGUILayout.FloatField("CDist Low", loft.cdistlow);
            loft.cdisthigh = EditorGUILayout.FloatField("CDist High", loft.cdisthigh);
            EditorGUILayout.EndVertical();

            CheckVal(ref loft.startLow, ref loft.startHigh);
            CheckVal(ref loft.lenLow, ref loft.lenHigh);
            CheckVal(ref loft.crossLow, ref loft.crossHigh);
            CheckVal(ref loft.crossLenLow, ref loft.crossLenHigh);

            if (loft.lenLow < 0.001f)
            {
                loft.lenLow = 0.001f;
            }

            if (loft.crossLenLow < 0.001f)
            {
                loft.crossLenLow = 0.001f;
            }
        }

        EditorGUILayout.LabelField("Stats", "Verts: " + loft.vertcount.ToString() + " Tris: " + (loft.polycount / 3).ToString());

        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("Add Layer"))
        {
            MegaCreateLayerPopupEx.Init();
            EditorUtility.SetDirty(loft);
        }

        EditorGUILayout.EndHorizontal();

        if (GUI.changed)
        {
            loft.rebuild = true;
            EditorUtility.SetDirty(loft);
        }
    }