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; }
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; }
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(); }