Exemple #1
0
        public static void DRAW_PANEL()
        {
            bool GUI_TEMP  = GUI.enabled;
            int  CART_temp = KP.MAT_CART_INDEX;
            int  FAM_temp  = KP.MAT_FAM_INDEX;
            int  TYP_temp  = KP.MAT_TYPE_INDEX;

            if (ME_LIST == null)
            {
                ME_LIST = new List <MaterialEditor>(4);
                Material       m = new Material(Shader.Find("Diffuse"));
                MaterialEditor me;
                for (int i = 0, n = 5; i < n; i++)
                {
                    me = Editor.CreateEditor(m) as MaterialEditor;

                    me.SetTexture("_mainTexture", kLibary.LoadBitmap("create", 25, 25));
                    ME_LIST.Add(me);
                }
            }
            //GUI.enabled = (_selection != null);
            // GUILayoutOption glo = {  };
            EditorGUILayout.BeginVertical(); //----------------------------------------------------------> Begin Vertical
            EditorGUI.BeginChangeCheck();
            GUILayout.Space(2);
            // Material operation and selection slots
            KP.FOLD_mSele = EditorGUILayout.Foldout(KP.FOLD_mSele, "Material Operation ");
            if (KP.FOLD_mSele)
            {
                KP.MAT_SELE_INDEX = GUILayout.Toolbar(KP.MAT_SELE_INDEX, new string[] { "Get", "Set", "2file", "2data" });
                //KP.MAT_SELE_INDEX = GUILayout.Toolbar(KP.MAT_SELE_INDEX, new string[] { "MAT I", "MAT II", "MAT III" });
                EditorGUILayout.BeginHorizontal();

                for (int i = 0, n = 4; i < n; i++)
                {
                    GUILayout.BeginVertical();
                    GUILayout.Box(new GUIContent("Slot " + i), GUILayout.ExpandWidth(true), GUILayout.Height(22));
                    // Debug.Log(ME_LIST[i]);
                    MaterialEditor med = ME_LIST[i];

                    if (med && Event.current.type == EventType.layout)
                    {
                        med.OnPreviewGUI(GUILayoutUtility.GetRect(45, 45), EditorStyles.whiteLabel);
                    }
                    GUILayout.EndVertical();
                    GUILayout.Space(2);
                }

                EditorGUILayout.EndHorizontal();
            }
            KP.FOLD_object = EditorGUILayout.Foldout(KP.FOLD_object, "Shader Family ");
            if (KP.FOLD_object)
            {
                // Material category
                KP.MAT_CART_INDEX = EditorGUILayout.Popup(KP.MAT_CART_INDEX, kShaderLab.CATEGORY);
                GUILayout.Space(2);
                // Material family
                KP.MAT_FAM_INDEX = GUILayout.SelectionGrid(KP.MAT_FAM_INDEX, kShaderLab.FAMILY, 2, KP_Style.grid(), GUILayout.MinWidth(100));
            }
            // Material type
            KP.FOLD_type = EditorGUILayout.Foldout(KP.FOLD_type, "Shader Type ");
            if (KP.FOLD_type)
            {
                //sc1 = EditorGUILayout.BeginScrollView(sc1, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true), GUILayout.MaxHeight(250), GUILayout.MinHeight(20));
                KP.MAT_TYPE_INDEX = GUILayout.SelectionGrid(KP.MAT_TYPE_INDEX, kShaderLab.GetShaderList(KP.MAT_FAM_INDEX), 1, KP_Style.grid());
                //EditorGUILayout.EndScrollView();
            }
            // Material NAME
            KP.FOLD_name = EditorGUILayout.Foldout(KP.FOLD_name, "Material Name");
            if (KP.FOLD_name)
            {
                KP._meshName = EditorGUILayout.TextField(KP._meshName, KP_Style.tf_input_center());
            }
            // Material shader properties
            KP.FOLD_para = EditorGUILayout.Foldout(KP.FOLD_para, "Material Parameters");
            if (KP.FOLD_para)
            {
                Shader s = (KP._sMaterial != null) ? kShaderLab.GetShader(KP.MAT_CART_INDEX, KP.MAT_FAM_INDEX, KP.MAT_TYPE_INDEX) : null;
                if (s != null)
                {
                    //Debug.Log(s.name);
                    //EditorGUILayout.LabelField("sName : " + s.name);
                    int n = ShaderUtil.GetPropertyCount(s);
                    for (int i = 0; i < n; i++)
                    {
                        // foreach property in current selected

                        string label        = ShaderUtil.GetPropertyDescription(s, i);
                        string propertyName = ShaderUtil.GetPropertyName(s, i);

                        //Debug.Log(ShaderUtil.GetPropertyType(s, i));
                        switch (ShaderUtil.GetPropertyType(s, i))
                        {
                        case ShaderUtil.ShaderPropertyType.Range:     // float ranges
                        {
                            //GUILayout.BeginHorizontal();
                            float v2 = ShaderUtil.GetRangeLimits(s, i, 1);
                            float v3 = ShaderUtil.GetRangeLimits(s, i, 2);

                            RangeProperty(propertyName, label, v2, v3);

                            //GUILayout.EndHorizontal();
                            break;
                        }

                        case ShaderUtil.ShaderPropertyType.Float:     // floats
                            Debug.Log(label);
                            FloatProperty(propertyName, label);
                            break;

                        case ShaderUtil.ShaderPropertyType.Color:     // colors
                        {
                            ColorProperty(propertyName, label);
                            break;
                        }

                        case ShaderUtil.ShaderPropertyType.TexEnv:     // textures
                        {
                            ShaderUtil.ShaderPropertyTexDim desiredTexdim = ShaderUtil.GetTexDim(s, i);
                            TextureProperty(propertyName, label, desiredTexdim);
                            //GUILayout.Space(6);
                            break;
                        }

                        case ShaderUtil.ShaderPropertyType.Vector:     // vectors
                        {
                            Debug.Log(label);
                            //VectorProperty(propertyName, label);
                            break;
                        }

                        default:
                        {
                            GUILayout.Label("ARGH" + label + " : " + ShaderUtil.GetPropertyType(s, i));
                            break;
                        }
                        }
                    }
                }
            }
            if (EditorGUI.EndChangeCheck())
            {
                Debug.Log("REPAINT GUI");
                if (CART_temp != KP.MAT_CART_INDEX ||
                    FAM_temp != KP.MAT_FAM_INDEX ||
                    TYP_temp != KP.MAT_TYPE_INDEX)
                {
                    if (KP.MAT_SELE_INDEX != -1)
                    {
                        KP.Reset_material();
                    }
                }
                if (KP.MAT_SELE_INDEX != -1)
                {
                    switch (KP.MAT_SELE_INDEX)
                    {
                    case 0: KP._sMaterial = kSelect.MATERIAL; break;

                    case 1: kSelect.MATERIAL = KP._sMaterial; break;

                    case 2: break;

                    case 3: break;
                    }
                    KP.MAT_SELE_INDEX = -1;
                }
                kPoly2Tool.instance.Repaint();
            }
            EditorGUILayout.EndVertical(); //------------------------------------------------------------> End Vertical
            //GUILayout.Space(10);
            //GUILayout.EndHorizontal();
            GUI.enabled = GUI_TEMP;
        }
Exemple #2
0
        public static void DRAW_PANEL()
        {
            bool GUI_TEMP = GUI.enabled;

            EditorGUILayout.BeginVertical();
            GUILayout.Space(2);

            // OBJECT CART
            KP.MESH_CART_INDEX = EditorGUILayout.Popup(KP.MESH_CART_INDEX, KP.MESH_CART);
            // OBJECT TYPE
            KP.FOLD_object = EditorGUILayout.Foldout(KP.FOLD_object, "Object Types");
            if (KP.FOLD_object)
            {
                int objectTemp = KP.MESH_TYPE_INDEX;
                GUILayout.BeginHorizontal();
                GUILayout.Space(10);
                KP.MESH_TYPE_INDEX = GUILayout.SelectionGrid(KP.MESH_TYPE_INDEX, (KP.MESH_CART_INDEX == 0 ? KP.MESH_TYPE_a : KP.MESH_TYPE_b), 2);
                GUILayout.Space(10);
                GUILayout.EndHorizontal();

                if (objectTemp != KP.MESH_TYPE_INDEX)
                {
                    KP.Reset_create();
                }
            }
            // OBJECT NAME
            KP.FOLD_name = EditorGUILayout.Foldout(KP.FOLD_name, "Object Name");
            if (KP.FOLD_name)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Space(10);
                GUI.enabled  = KP.MESH_TYPE_INDEX != -1;
                KP._meshName = EditorGUILayout.TextField(KP._meshName, KP_Style.tf_input_center());
                GUI.enabled  = GUI_TEMP;
                if (GUILayout.Button("ID", GUILayout.Width(24)))
                {
                    KP._meshName = "kPoly " + UnityEngine.Random.Range(1, 99);
                }
                GUILayout.Space(10);
                GUILayout.EndHorizontal();
            }
            // OBJECT PARAMETERS
            KP.FOLD_para = EditorGUILayout.Foldout(KP.FOLD_para, "Parameters");
            if (KP.FOLD_para)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Space(10);
                GUI.enabled = KP.MESH_TYPE_INDEX != -1;
                if (KP.MESH_CART_INDEX == 0)
                {
                    switch (KP.MESH_TYPE_INDEX)
                    {
                    case 0:
                        CREATE_cube();
                        break;

                    case 1:
                        CREATE_plane();
                        break;

                    case 2:
                        CREATE_cone();
                        break;
                    }
                }
                else
                {
                    EditorGUILayout.LabelField("No editabled properties.", EditorStyles.boldLabel);
                }
                GUILayout.Space(10);
                GUILayout.EndHorizontal();
            }
            // OBJECT CREATION TYPE
            KP.FOLD_create = EditorGUILayout.Foldout(KP.FOLD_create, "Creation Types");//, folderSkin());
            if (KP.FOLD_create)
            {
                // Editor Button for start mesh creation
                if (GUILayout.Button(new GUIContent("GameObject [ Scene ]")))
                {
                    MeshCreator_gameObject();
                }
                GUILayout.Button(new GUIContent("Mesh Asset [ DataBase ]"));
                GUILayout.BeginHorizontal();
                GUILayout.Button(new GUIContent("Export File [ Folder ]"));
                GUILayout.Button(new GUIContent(".."), GUILayout.Width(18));
                GUILayout.EndHorizontal();
            }

            EditorGUILayout.EndVertical();
            GUI.enabled = GUI_TEMP;
        }
Exemple #3
0
        public static void DRAW_PANEL()
        {
            EditorGUILayout.BeginHorizontal();
            GUILayout.Space(10);
            EditorGUILayout.BeginVertical();
            GUILayout.Space(5);

            Color editorGUIback = new Color(.76f, .76f, .76f);

            if (KP_Style.selection_Style == null)
            {
                KP_Style.Selection_Style();
            }
            // if (selection == null) selection = kSelect.OBJECT;
            //Mesh _selectMesh = kSelect.MESH;
            //MODE modeTemp = _editorMode;
            GUI.enabled = (selection != null);
            //-------------------------------------------------------------------
            //  SELECTION
            float bw = 50,
                  bh = 30;

            _F_selection = EditorGUILayout.Foldout(_F_selection, "Selection " + E_MODE.ToString());// + ((_selection != null) ? "[ " + _selection.name + " ]" : ""));
            if (_F_selection)
            {
                bool pressed = false;
                EditorGUILayout.BeginVertical();
                GUILayout.Space(2);
                GUILayout.BeginHorizontal();
                GUI.color = (E_MODE == MODE.Point) ? Color.yellow : editorGUIback;
                if (GUILayout.Button(new GUIContent(kLibary.LoadBitmap("points", 25, 25)), KP_Style.selection_Style, GUILayout.Width(bw), GUILayout.Height(bh)))
                {
                    E_MODE  = (E_MODE == MODE.Point) ? MODE.None : MODE.Point;
                    pressed = true;
                }
                GUI.color = Color.white;
                GUI.color = (E_MODE == MODE.Edge) ? Color.yellow : editorGUIback;
                if (GUILayout.Button(new GUIContent(kLibary.LoadBitmap("edge", 25, 25)), KP_Style.selection_Style, GUILayout.Width(bw), GUILayout.Height(bh)))
                {
                    E_MODE  = (E_MODE == MODE.Edge) ? MODE.None : MODE.Edge;
                    pressed = true;
                }
                GUI.color = Color.white;
                GUI.color = (E_MODE == MODE.Triangle) ? Color.yellow : editorGUIback;
                if (GUILayout.Button(new GUIContent(kLibary.LoadBitmap("tri", 25, 25)), KP_Style.selection_Style, GUILayout.Width(bw), GUILayout.Height(bh)))
                {
                    E_MODE  = (E_MODE == MODE.Triangle) ? MODE.None : MODE.Triangle;
                    pressed = true;
                }
                GUI.color = Color.white;
                GUI.color = (E_MODE == MODE.Quad) ? Color.yellow : editorGUIback;
                if (GUILayout.Button(new GUIContent(kLibary.LoadBitmap("quad", 25, 25)), KP_Style.selection_Style, GUILayout.Width(bw), GUILayout.Height(bh)))
                {
                    E_MODE  = (E_MODE == MODE.Quad) ? MODE.None : MODE.Quad;
                    pressed = true;
                }
                GUI.color = Color.white;
                GUI.color = (E_MODE == MODE.All) ? Color.yellow : editorGUIback;
                if (GUILayout.Button(new GUIContent(kLibary.LoadBitmap("sub", 25, 25)), KP_Style.selection_Style, GUILayout.Width(bw), GUILayout.Height(bh)))
                {
                    E_MODE  = (E_MODE == MODE.All) ? MODE.None : MODE.All;
                    pressed = true;
                }
                GUI.color = Color.white;
                GUILayout.EndHorizontal();
                EditorGUILayout.EndVertical();
                if (pressed)
                {
                    // if (_selection != null )
                    // {
                    selection = kSelect.OBJECT;
                    FREEZE    = (E_MODE != MODE.None && selection != null) ? true : false;

                    if (E_MODE != MODE.None)
                    {
                        selection.hideFlags |= HideFlags.NotEditable;
                        kPoly2Tool.SceneEvent(true);
                        _selectMesh = kSelect.MESH;
                    }
                    else
                    {
                        selection.hideFlags = 0;
                        kPoly2Tool.SceneEvent(false);
                        _selectMesh = null;
                    }
                    curPointIndex.Clear();
                    TOOL_INDEX = -1;
                    // if (toolVerts.Count > 0)
                    //       toolVerts.Clear();
                    //  }
                    SceneView.currentDrawingSceneView.Repaint();
                }

                //EditorGUILayout.BeginHorizontal();
                //EditorGUILayout.PrefixLabel("" + _editorMode.ToString());
                // EditorGUILayout.LabelField(" " + (_editorMode != MODE.None && curPointIndex.Count > 0 ? curPointIndex[0] + " " : ""), GUILayout.ExpandWidth(true));
                //EditorGUILayout.EndHorizontal();
            }
            GUI.enabled = (E_MODE != MODE.None);
            //-------------------------------------------------------------------
            //  VERTS
            _F_vertices = EditorGUILayout.Foldout(_F_vertices, "Edit Vertices");
            if (_F_vertices)
            {
                GUILayout.BeginHorizontal();
                if (GUILayout.Button(new GUIContent("Remove"), EditorStyles.toolbarButton))
                {
                    VerticesRemover();
                }
                if (GUILayout.Button(new GUIContent("Break"), EditorStyles.toolbarButton))
                {
                    kPoly.VerticesBreak(_selectMesh, curPointIndex.ToArray());
                }
                if (GUILayout.Button(new GUIContent("Turn"), EditorStyles.toolbarButton))
                {
                    kPoly.TriangleTurn(_selectMesh, curPointIndex);
                }
                //GUILayout.Space(10);
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                GUILayout.Button(new GUIContent("Extrude"), EditorStyles.toolbarButton);
                GUILayout.Button(new GUIContent("P"), EditorStyles.toolbarButton, GUILayout.Width(25));
                GUILayout.Space(5);
                if (GUILayout.Button(new GUIContent("Weld"), EditorStyles.toolbarButton))
                {
                    TOOL_INDEX = 1;

                    ModifiVerticies_points(true);

                    TOOL_INDEX = -1;
                }
                GUI.color = (TOOL_INDEX == 1) ? new Color(0, .5f, 1, .7f) : Color.white;
                if (GUILayout.Button(new GUIContent("P"), EditorStyles.toolbarButton, GUILayout.Width(25)))
                {
                    if (TOOL_INDEX == -1)
                    {
                        TOOL_INDEX = 1;
                    }
                    else
                    {
                        TOOL_INDEX = -1;
                    }

                    SceneView.currentDrawingSceneView.Repaint();
                }
                GUI.color = Color.white;
                if (E_MODE == MODE.Edge)
                {
                    if (GUILayout.Button(new GUIContent("Connect"), EditorStyles.toolbarButton))
                    {
                        kPoly.EdgeConnect_Preview(_selectMesh, curPointIndex, edges, SGUIelements._connex, SGUIelements._conPad, true);
                        //_selectMesh, curPointIndex, edges, SGUIelements._connex, SGUIelements._conPad, true);
                        // ModifiVerticies_edgeConnect();
                    }
                    GUI.color = (TOOL_INDEX == 2) ? new Color(0, .5f, 1, .7f) : Color.white;
                    if (GUILayout.Button(new GUIContent("P"), EditorStyles.toolbarButton, GUILayout.Width(25)))
                    {
                        if (TOOL_INDEX == -1)
                        {
                            TOOL_INDEX = 2;
                        }
                        else
                        {
                            TOOL_INDEX = -1;
                        }

                        SceneView.currentDrawingSceneView.Repaint();
                    }
                    GUI.color = Color.white;
                }
                // GUILayout.Space(10);
                GUILayout.EndHorizontal();
            }
            //-------------------------------------------------------------------
            //  GEOMETRY
            _F_geometry = EditorGUILayout.Foldout(_F_geometry, "Edit Geometry");
            if (_F_geometry)
            {
                //EditorGUILayout.Toggle(false, "Preserve UVs");
                GUILayout.BeginHorizontal();

                if (GUILayout.Button(new GUIContent("Make Planar"), EditorStyles.toolbarButton))
                {
                    if (selection != null && _selectMesh != null)
                    {
                        kPoly.VerticesFlatten(_selectMesh, curPointIndex, E_MODE, P_HELPER, edges, faces);
                        curPointIndex.Clear();
                    }
                }
                GUILayout.Space(5);
                GUI.color = Color.white;
                GUI.color = (P_HELPER.x_Axis) ? Color.grey : Color.white;
                if (GUILayout.Button(new GUIContent("X"), EditorStyles.toolbarButton))
                {
                    P_HELPER.x_Axis = !P_HELPER.x_Axis;
                }
                GUI.color = Color.white;
                GUI.color = (P_HELPER.y_Axis) ? Color.grey : Color.white;
                if (GUILayout.Button(new GUIContent("Y"), EditorStyles.toolbarButton))
                {
                    P_HELPER.y_Axis = !P_HELPER.y_Axis;
                }
                GUI.color = Color.white;
                GUI.color = (P_HELPER.z_Axis) ? Color.grey : Color.white;
                if (GUILayout.Button(new GUIContent("Z"), EditorStyles.toolbarButton))
                {
                    P_HELPER.z_Axis = !P_HELPER.z_Axis;
                }
                GUI.color = Color.white;

                GUILayout.EndHorizontal();
            }
            //   EditorGUILayout.LabelField("Active Object : " + _selection.name + " Mesh : " + _selectMesh.name);

            GUILayout.BeginHorizontal();
            if (GUILayout.Button(new GUIContent("Clear Verts"), EditorStyles.toolbarButton))
            {
                _verts = null;
            }
            //      if (GUILayout.Button(new GUIContent("Clear Tris"), EditorStyles.toolbarButton)) tris = null;
            if (GUILayout.Button(new GUIContent("Clear Edges"), EditorStyles.toolbarButton))
            {
                edges = null;
            }
            if (GUILayout.Button(new GUIContent("Clear Faces"), EditorStyles.toolbarButton))
            {
                faces = null;
            }
            GUILayout.EndHorizontal();
            EditorGUILayout.EndVertical();
            GUILayout.Space(10);
            EditorGUILayout.EndHorizontal();
        }