public static ExpressionLibrary initExpressions() { string data = ""; System.IO.StreamReader inFile = new System.IO.StreamReader(@"Assets\GameData\DialogueData\DialogueExpressions.json"); while (!inFile.EndOfStream) { data += inFile.ReadLine(); } ExpressionLibrary el = ExpressionLibrary.CreateFromJSON(data); return(el); }
public static UnityEngine.Object[] GetAssetsOfType(System.Type type, string fileExtension) { List <UnityEngine.Object> tempObjects = new List <UnityEngine.Object>(); DirectoryInfo directory = new DirectoryInfo(Application.dataPath); FileInfo[] goFileInfo = directory.GetFiles("*" + fileExtension, SearchOption.AllDirectories); int i = 0; int goFileInfoLength = goFileInfo.Length; FileInfo tempGoFileInfo; string tempFilePath; UnityEngine.Object tempGO; for (; i < goFileInfoLength; i++) { tempGoFileInfo = goFileInfo[i]; if (tempGoFileInfo == null) { continue; } tempFilePath = tempGoFileInfo.FullName; tempFilePath = tempFilePath.Replace(@"\", "/").Replace(Application.dataPath, "Assets"); try{ tempGO = AssetDatabase.LoadAssetAtPath(tempFilePath, typeof(UnityEngine.Object)) as UnityEngine.Object; if (tempGO == null) { // Debug.LogWarning("Skipping Null"); continue; } else if (tempGO.GetType() != type) { // Debug.LogWarning("Skipping " + tempGO.GetType().ToString()); continue; } // finishing if (tempGO.name.Contains("DefaultDK") == false && tempGO.name.Contains("DefaultUMA") == false) { tempObjects.Add(tempGO); // Debug.Log ( "Type : "+type.ToString()+"Item : "+tempGO.name+" / "+tempGO.GetType().ToString()); // Expressions if (tempGO.GetType().ToString() == "DK_ExpressionData") { ExpressionLibrary Library = GameObject.Find("Expressions").GetComponent <ExpressionLibrary>(); if (Library.ExpressionList.Contains(tempGO as DK_ExpressionData) == false) { Library.AddExpression(tempGO as DK_ExpressionData); } } // UMA Slots if (tempGO.GetType().ToString() == "UMA.SlotData") { } // DK Slots if (tempGO.GetType().ToString() == "DKSlotData") { if (DKSlotsList.Contains(tempGO as DKSlotData) == false) { DKSlotsList.Add(tempGO as DKSlotData); } } // UMA Overlays if (tempGO.GetType().ToString() == "UMA.OverlayData") { } // DK Overlays if (tempGO.GetType().ToString() == "DKOverlayData") { if (DKOverlaysList.Contains(tempGO as DKOverlayData) == false) { DKOverlaysList.Add(tempGO as DKOverlayData); } } } }catch (Exception e) { Debug.LogError(e); } } Debug.ClearDeveloperConsole(); return(tempObjects.ToArray()); }
void OnGUI() { this.minSize = new Vector2(435, 500); #region fonts variables var bold = new GUIStyle("label"); var boldFold = new GUIStyle("foldout"); bold.fontStyle = FontStyle.Bold; bold.fontSize = 14; boldFold.fontStyle = FontStyle.Bold; // var someMatched = false; var Slim = new GUIStyle("label"); Slim.fontStyle = FontStyle.Normal; Slim.fontSize = 10; var style = new GUIStyle("label"); style.wordWrap = true; #endregion fonts variables DK_UMA = GameObject.Find("DK_UMA"); _DK_UMACrowd = GameObject.Find("DKUMACrowd").GetComponent <DK_UMACrowd>(); SlotExpressions = GameObject.Find("Expressions"); if (DK_UMA == null) { var goDK_UMA = new GameObject(); goDK_UMA.name = "DK_UMA"; } if (SlotExpressions == null) { SlotExpressions = (GameObject)Instantiate(Resources.LoadAssetAtPath("Assets/DK Editors/DK_UMA_Editor/Prefabs/Resources/DKExpressions.prefab", typeof(GameObject))); SlotExpressions.name = "Expressions"; SlotExpressions.transform.parent = DK_UMA.transform; PrefabUtility.ReconnectToLastPrefab(SlotExpressions); Library = SlotExpressions.GetComponent <ExpressionLibrary>(); } using (new Horizontal()) { GUI.color = Color.white; GUILayout.Label("Expressions window", "toolbarbutton", GUILayout.ExpandWidth(true)); if (Helper) { GUI.color = Green; } else { GUI.color = Color.yellow; } if (GUILayout.Button("?", "toolbarbutton", GUILayout.ExpandWidth(false))) { if (Helper) { Helper = false; } else { Helper = true; } } } GUI.color = Color.white; if (Helper) { GUILayout.TextField("The Expressions are used during the Auto Detect process to populate your libraries. You can add words to the Expressions, with an Anatomy link.", 256, style, GUILayout.ExpandWidth(true), GUILayout.ExpandWidth(true)); } GUI.color = Color.yellow; if (Helper) { GUILayout.TextField("Write the Expression for the research engine to find during the Auto Detect process.", 256, style, GUILayout.ExpandWidth(true), GUILayout.ExpandWidth(true)); } if (Selection.activeObject && Selection.activeObject.GetType().ToString() == "DK_ExpressionData") { SelectedExpression = Selection.activeObject as DK_ExpressionData; } if (SelectedExpression) { using (new Horizontal()) { GUI.color = Color.white; GUILayout.Label("Expression :", GUILayout.ExpandWidth(false)); if (NewExpressionName != "") { GUI.color = Green; } else { GUI.color = Red; } NewExpressionName = GUILayout.TextField(NewExpressionName, 50, GUILayout.ExpandWidth(true)); if (GUILayout.Button("Change", GUILayout.ExpandWidth(false))) { Debug.Log("Expression " + SelectedExpression.name + " changed to " + NewExpressionName + "."); SelectedExpression.Name = NewExpressionName; string _path = ("Assets/DK Editors/DK_UMA_Editor/Prefabs/Expressions/" + SelectedExpression.name + ".asset"); AssetDatabase.RenameAsset(_path, NewExpressionName); EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } } } GUI.color = Color.yellow; if (Helper && SelectedExpression) { GUILayout.TextField("The Anatomy Part is really important, it is the place where the detected Slot Element will be generated. In most of the cases, a full Model counts only one Anatomy part of each type (Eyes, head...).", 256, style, GUILayout.ExpandWidth(true), GUILayout.ExpandWidth(true)); } if (!ShowSelectAnatomy && SelectedExpression) { using (new Horizontal()) { GUI.color = Color.white; GUILayout.Label("Anatomy Part :", GUILayout.ExpandWidth(false)); if (Place != "") { GUI.color = Green; } else { GUI.color = Red; } if (SelectedExpression == null) { Place = "Select an Anatomy Part"; } else if (SelectedExpression.Place == null) { Place = "Select an Anatomy Part"; } else { Place = SelectedExpression.Place.name; } GUILayout.Label(Place, GUILayout.ExpandWidth(true)); GUI.color = Color.white; if (GUILayout.Button("Select", GUILayout.ExpandWidth(false))) { ShowSelectAnatomy = true; } } } // Overlay Type GUI.color = Color.yellow; if (Helper) { GUILayout.TextField("The Overlay Type is used by the Generator during the Model's creation. " + "All the 'Naked body parts' must be of the 'Flesh' Type, the Head slot must be of the 'Face' type.", 256, style, GUILayout.ExpandWidth(true), GUILayout.ExpandWidth(true)); } if (SelectedExpression) { using (new Horizontal()) { GUI.color = Color.white; GUILayout.Label("Body :", GUILayout.ExpandWidth(false)); if (SelectedExpression.OverlayType == "Flesh") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Flesh", GUILayout.ExpandWidth(true))) { OverlayType = "Flesh"; SelectedExpression.OverlayType = OverlayType; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.OverlayType == "Face") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Face", GUILayout.ExpandWidth(true))) { OverlayType = "Face"; SelectedExpression.OverlayType = OverlayType; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.OverlayType == "Eyes") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Eyes", GUILayout.ExpandWidth(true))) { OverlayType = "Eyes"; SelectedExpression.OverlayType = OverlayType; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.OverlayType == "Hair") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Hair", GUILayout.ExpandWidth(true))) { OverlayType = "Hair"; SelectedExpression.OverlayType = OverlayType; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.Elem == true) { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("+Elem", GUILayout.ExpandWidth(true))) { if (SelectedExpression.Elem == true) { SelectedExpression.Elem = false; } else { SelectedExpression.Elem = true; } EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } } } if (SelectedExpression) { using (new Horizontal()) { if (SelectedExpression.OverlayType == "Eyebrow") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Eyebrow", GUILayout.ExpandWidth(true))) { OverlayType = "Eyebrow"; SelectedExpression.OverlayType = OverlayType; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.OverlayType == "Lips") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Lips", GUILayout.ExpandWidth(true))) { OverlayType = "Lips"; SelectedExpression.OverlayType = OverlayType; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.OverlayType == "Makeup") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Makeup", GUILayout.ExpandWidth(true))) { OverlayType = "Makeup"; SelectedExpression.OverlayType = OverlayType; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.OverlayType == "Tatoo") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Tatoo", GUILayout.ExpandWidth(true))) { OverlayType = "Tatoo"; SelectedExpression.OverlayType = OverlayType; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.OverlayType == "Beard") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Beard", GUILayout.ExpandWidth(true))) { OverlayType = "Beard"; SelectedExpression.OverlayType = OverlayType; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } } } if (SelectedExpression) { using (new Horizontal()) { GUI.color = Color.white; GUILayout.Label("Wears :", GUILayout.ExpandWidth(false)); if (SelectedExpression.OverlayType == "TorsoWear") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Torso", GUILayout.ExpandWidth(true))) { OverlayType = "TorsoWear"; SelectedExpression.OverlayType = OverlayType; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.OverlayType == "ShoulderWear") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Shoulder", GUILayout.ExpandWidth(true))) { OverlayType = "ShoulderWear"; SelectedExpression.OverlayType = OverlayType; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.OverlayType == "LegsWear") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Leg", GUILayout.ExpandWidth(true))) { OverlayType = "LegsWear"; SelectedExpression.OverlayType = OverlayType; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.OverlayType == "FeetWear") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Feet", GUILayout.ExpandWidth(true))) { OverlayType = "FeetWear"; SelectedExpression.OverlayType = OverlayType; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.OverlayType == "HandsWear") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Hand", GUILayout.ExpandWidth(true))) { OverlayType = "HandsWear"; SelectedExpression.OverlayType = OverlayType; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.OverlayType == "HeadWear") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Head", GUILayout.ExpandWidth(true))) { OverlayType = "HeadWear"; SelectedExpression.OverlayType = OverlayType; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } } } if (SelectedExpression) { using (new Horizontal()) { if (SelectedExpression.OverlayType == "Underwear") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Underwear", GUILayout.ExpandWidth(true))) { OverlayType = "Underwear"; SelectedExpression.OverlayType = OverlayType; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.OverlayType == "") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("None", GUILayout.ExpandWidth(true))) { OverlayType = ""; SelectedExpression.OverlayType = OverlayType; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } } } if (SelectedExpression && SelectedExpression.OverlayType.Contains("Wear") == true) { using (new Horizontal()) { if (SelectedExpression && SelectedExpression.Replace == true) { GUI.color = Green; } else { GUI.color = Color.gray; } if (SelectedExpression && GUILayout.Button("Replace", GUILayout.ExpandWidth(true))) { if (SelectedExpression.Replace == false) { SelectedExpression.Replace = true; } else { SelectedExpression.Replace = false; } EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } } } if (SelectedExpression && SelectedExpression.OverlayType == "HeadWear") { using (new Horizontal()) { if (SelectedExpression && SelectedExpression.HideHair) { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Hide Hair", GUILayout.ExpandWidth(true))) { if (SelectedExpression && SelectedExpression.HideHair == true) { SelectedExpression.HideHair = false; } else { SelectedExpression.HideHair = true; } EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression && SelectedExpression.HideHairModule) { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Hide Hair Module", GUILayout.ExpandWidth(true))) { if (SelectedExpression && SelectedExpression.HideHairModule == true) { SelectedExpression.HideHairModule = false; } else { SelectedExpression.HideHairModule = true; } EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression && SelectedExpression.HideMouth) { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Hide Mouth", GUILayout.ExpandWidth(true))) { if (SelectedExpression && SelectedExpression.HideMouth == true) { SelectedExpression.HideMouth = false; } else { SelectedExpression.HideMouth = true; } EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression && SelectedExpression.HideEars) { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Hide Ears", GUILayout.ExpandWidth(true))) { if (SelectedExpression && SelectedExpression.HideEars == true) { SelectedExpression.HideEars = false; } else { SelectedExpression.HideEars = true; } EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } } } if (SelectedExpression && OverlayType != null && OverlayType.Contains("Wear") == true && OverlayType != "Underwear") { using (new Horizontal()) { GUI.color = Color.white; GUILayout.Label("Weight :", GUILayout.ExpandWidth(false)); if (SelectedExpression.WearWeight == "Light") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Light", GUILayout.ExpandWidth(true))) { SelectedExpression.WearWeight = "Light"; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.WearWeight == "Medium") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Medium", GUILayout.ExpandWidth(true))) { SelectedExpression.WearWeight = "Medium"; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.WearWeight == "High") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("High", GUILayout.ExpandWidth(true))) { SelectedExpression.WearWeight = "High"; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.WearWeight == "Heavy") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Heavy", GUILayout.ExpandWidth(true))) { SelectedExpression.WearWeight = "Heavy"; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } if (SelectedExpression.WearWeight == "") { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("None", GUILayout.ExpandWidth(true))) { SelectedExpression.WearWeight = ""; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } } } // List menu if (!ShowSelectAnatomy) { using (new Horizontal()) { GUI.color = Color.white; if (GUILayout.Button("Add New", GUILayout.ExpandWidth(true))) { // Create DK_ExpressionData newExpression = new DK_ExpressionData(); newExpression.name = "New Expression"; System.IO.Directory.CreateDirectory("Assets/DK Editors/DK_UMA_Editor/Prefabs/Expressions/"); string _path = ("Assets/DK Editors/DK_UMA_Editor/Prefabs/Expressions/" + newExpression.name + ".asset"); AssetDatabase.CreateAsset(newExpression, _path); AssetDatabase.Refresh(); Selection.activeObject = newExpression; NewExpressionName = SelectedExpression.name; // store in library SlotExpressions = GameObject.Find("Expressions"); Library = SlotExpressions.GetComponent <ExpressionLibrary>(); if (SlotExpressions != null && Library) { Library.AddExpression(newExpression); Debug.Log("New Expression created and selected."); } } if (GUILayout.Button("Copy Selected", GUILayout.ExpandWidth(true))) { if (SelectedExpression != null) { // Copy System.IO.Directory.CreateDirectory("Assets/DK Editors/DK_UMA_Editor/Prefabs/Expressions/"); string _path1 = ("Assets/DK Editors/DK_UMA_Editor/Prefabs/Expressions/" + SelectedExpression.name + ".asset"); string _path2 = ("Assets/DK Editors/DK_UMA_Editor/Prefabs/Expressions/" + SelectedExpression.name + " (Copy).asset"); AssetDatabase.CopyAsset(_path1, _path2); AssetDatabase.Refresh(); DK_ExpressionData newExpression = AssetDatabase.LoadAssetAtPath("Assets/DK Editors/DK_UMA_Editor/Prefabs/Expressions/" + SelectedExpression.name + " (Copy).asset", _DK_UMACrowd.Default.ResearchDefault.DK_ExpressionData.GetType()) as DK_ExpressionData; Selection.activeObject = newExpression; NewExpressionName = SelectedExpression.name; // store in library if (SlotExpressions != null && Library) { Library.AddExpression(newExpression); Debug.Log("New Expression created and selected."); } Debug.Log(SelectedExpression.name + " has been copied to " + Library.name + "."); } else { Debug.Log("You have to select an Expression from the list to be able to copy it."); } } if (GUILayout.Button("Select All", GUILayout.ExpandWidth(true))) { for (int i = 0; i < Library.ExpressionList.Length; i++) { Library.ExpressionList[i].Selected = true; } } } } // Lists GUILayout.Space(5); // Choose Anatomy Part List if (ShowSelectAnatomy) { using (new Horizontal()) { GUI.color = Color.white; GUILayout.Label("Choose Anatomy Part", "toolbarbutton", GUILayout.ExpandWidth(true)); GUI.color = Red; if (GUILayout.Button("X", "toolbarbutton", GUILayout.ExpandWidth(false))) { ShowSelectAnatomy = false; } } GUILayout.Space(5); GUI.color = Color.white; using (new Horizontal()) { GUILayout.Label("Selected Part :", GUILayout.ExpandWidth(false)); GUI.color = Color.yellow; if (SelectedAnaPart != null) { GUILayout.Label(SelectedAnaPart.name, GUILayout.ExpandWidth(true)); } } GUILayout.Space(5); GUI.color = Color.white; if (GUILayout.Button("Assign to Expression", GUILayout.ExpandWidth(true))) { Debug.Log("Anatomy Part " + SelectedAnaPart.name + " assigned to " + SelectedExpression.name + "."); GameObject _Prefab = PrefabUtility.GetPrefabParent(SelectedAnaPart.gameObject) as GameObject; if (_Prefab) { SelectedExpression.Place = _Prefab; } else { SelectedExpression.Place = SelectedAnaPart.gameObject; } ShowSelectAnatomy = false; EditorUtility.SetDirty(SelectedExpression); AssetDatabase.SaveAssets(); } GUILayout.Space(5); #region Search using (new Horizontal()) { GUI.color = Color.white; GUILayout.Label("Search for :", GUILayout.ExpandWidth(false)); SearchString = GUILayout.TextField(SearchString, 100, GUILayout.ExpandWidth(true)); } #endregion Search DK_SlotsAnatomyLibrary _SlotsAnatomyLibrary = GameObject.Find("DK_SlotsAnatomyLibrary").GetComponent <DK_SlotsAnatomyLibrary>(); GUILayout.Space(5); using (new Horizontal()) { GUI.color = Color.cyan; GUILayout.Label("Anatomy Part", "toolbarbutton", GUILayout.Width(200)); GUILayout.Label("Race", "toolbarbutton", GUILayout.Width(50)); GUILayout.Label("Gender", "toolbarbutton", GUILayout.Width(50)); GUILayout.Label("Type", "toolbarbutton", GUILayout.Width(80)); GUILayout.Label("", "toolbarbutton", GUILayout.ExpandWidth(true)); } using (new ScrollView(ref scroll)) { for (int i = 0; i < _SlotsAnatomyLibrary.dk_SlotsAnatomyElementList.Length; i++) { if (SearchString == "" || _SlotsAnatomyLibrary.dk_SlotsAnatomyElementList[i].name.ToLower().Contains(SearchString.ToLower())) { using (new Horizontal(GUILayout.Width(80))) { // Element if (SelectedAnaPart == _SlotsAnatomyLibrary.dk_SlotsAnatomyElementList[i].gameObject) { GUI.color = Color.yellow; } else { GUI.color = Color.white; } if (GUILayout.Button(_SlotsAnatomyLibrary.dk_SlotsAnatomyElementList[i].dk_SlotsAnatomyElement.dk_SlotsAnatomyName, "toolbarbutton", GUILayout.Width(200))) { SelectedAnaPart = _SlotsAnatomyLibrary.dk_SlotsAnatomyElementList[i].gameObject; } // Race if (_SlotsAnatomyLibrary.dk_SlotsAnatomyElementList[i].gameObject.GetComponent <DK_Race>() as DK_Race == null) { _SlotsAnatomyLibrary.dk_SlotsAnatomyElementList[i].gameObject.AddComponent <DK_Race>(); } DK_Race DK_Race; DK_Race = _SlotsAnatomyLibrary.dk_SlotsAnatomyElementList[i].GetComponent("DK_Race") as DK_Race; if (DK_Race.Race.Count == 0) { GUI.color = Red; } if (DK_Race.Race.Count == 0 && GUILayout.Button("No Race", "toolbarbutton", GUILayout.Width(50))) { } GUI.color = Green; if (DK_Race.Race.Count == 1 && GUILayout.Button(DK_Race.Race[0], "toolbarbutton", GUILayout.Width(50))) { } if (DK_Race.Race.Count > 1 && GUILayout.Button("Multi", "toolbarbutton", GUILayout.Width(50))) { } // Gender if (DK_Race.Gender == "") { GUI.color = Red; } if (DK_Race.Gender == "") { GUILayout.Label("N", "Button"); } GUI.color = Green; if (DK_Race.Gender != "" && DK_Race.Gender == "Female") { GUILayout.Label("Female", "toolbarbutton", GUILayout.Width(50)); } if (DK_Race.Gender != "" && DK_Race.Gender == "Male") { GUILayout.Label("Male", "toolbarbutton", GUILayout.Width(50)); } if (DK_Race.Gender != "" && DK_Race.Gender == "Both") { GUILayout.Label("Both", "toolbarbutton", GUILayout.Width(50)); } // OverlayType if (_SlotsAnatomyLibrary.dk_SlotsAnatomyElementList[i].gameObject.GetComponent <DK_Race>() as DK_Race == null) { _SlotsAnatomyLibrary.dk_SlotsAnatomyElementList[i].gameObject.AddComponent <DK_Race>(); } DK_Race = _SlotsAnatomyLibrary.dk_SlotsAnatomyElementList[i].GetComponent("DK_Race") as DK_Race; if (DK_Race.OverlayType == "") { GUI.color = Color.gray; } if (DK_Race.OverlayType == "" && GUILayout.Button("/", "toolbarbutton", GUILayout.Width(80))) { } GUI.color = Green; if (DK_Race.OverlayType != "" && GUILayout.Button(DK_Race.OverlayType, "toolbarbutton", GUILayout.Width(80))) { } } } } } } else if (!ShowSelectAnatomy) { #region Search using (new Horizontal()) { GUI.color = Color.white; GUILayout.Label("Search for :", GUILayout.ExpandWidth(false)); SearchString = GUILayout.TextField(SearchString, 100, GUILayout.ExpandWidth(true)); } #endregion Search // Expressions List using (new Horizontal()) { GUI.color = Color.cyan; GUILayout.Label("X", "toolbarbutton", GUILayout.Width(17)); GUILayout.Label("Expression", "toolbarbutton", GUILayout.Width(145)); GUILayout.Label("Place", "toolbarbutton", GUILayout.Width(70)); GUILayout.Label("Type", "toolbarbutton", GUILayout.Width(70)); GUILayout.Label("Weight", "toolbarbutton", GUILayout.Width(50)); GUILayout.Label("", "toolbarbutton", GUILayout.ExpandWidth(true)); } Library = SlotExpressions.GetComponent <ExpressionLibrary>(); using (new ScrollView(ref scroll)) { for (int i = 0; i < Library.ExpressionList.Length; i++) { { DK_ExpressionData Expression = Library.ExpressionList[i]; if (Expression && Expression.name.Contains("DefaultExpression") == false) { using (new Horizontal()) { GUI.color = Red; if (Expression && GUILayout.Button("X", "toolbarbutton", GUILayout.ExpandWidth(false))) { DestroyImmediate(Expression); } if (SearchString == "" || Library.ExpressionList[i].name.ToLower().Contains(SearchString.ToLower())) { if (Expression && SelectedExpression && Expression == SelectedExpression) { GUI.color = Color.yellow; } else { GUI.color = Color.white; } if (Expression && GUILayout.Button(Expression.name, "toolbarbutton", GUILayout.Width(145))) { if (Expression.Place != null) { Place = Expression.Place.name; } else { Place = "Select an Anatomy part"; } SelectedExpression = Expression; Selection.activeObject = SelectedExpression; NewExpressionName = Expression.name; OverlayType = Expression.OverlayType; } // Anatomy part if (Expression.Place != null) { GUILayout.Label(Expression.Place.name, "toolbarbutton", GUILayout.Width(70)); } else { GUI.color = Red; GUILayout.Label("Select an Anatomy part for the Expression to be linked.", "toolbarbutton", GUILayout.Width(120)); } // Overlay Type if (Expression.OverlayType != "") { GUILayout.Label(Expression.OverlayType, "toolbarbutton", GUILayout.Width(70)); } else { GUI.color = Color.gray; GUILayout.Label("No Type.", "toolbarbutton", GUILayout.Width(70)); } // WearWeight if (Expression.WearWeight == "") { GUI.color = Color.gray; } if (Expression.WearWeight == "" && GUILayout.Button("No Weight", "toolbarbutton", GUILayout.Width(50))) { } GUI.color = Green; if (Expression.WearWeight != "" && GUILayout.Button(Expression.WearWeight, "toolbarbutton", GUILayout.Width(50))) { } // Select if (Expression && Expression.Selected == true) { GUI.color = Green; } else { GUI.color = Color.gray; } if (GUILayout.Button("Selected", "toolbarbutton", GUILayout.Width(65))) { if (Expression && Expression.Selected == true) { Expression.Selected = false; } else { Expression.Selected = true; } } } } } } } } } }
public static void DetectionAll() { // slots if (EditorVariables.DetSlots) { DKSlotsList = _DKUMA_Variables.DKSlotsList; for (int i0 = 0; i0 < DKSlotsList.Count; i0++) { if ((EditorVariables.SearchResultsOnly && DKSlotsList[i0].name.ToLower().Contains(DK_UMA_Editor.SearchString.ToLower())) || !EditorVariables.SearchResultsOnly) { Element = DKSlotsList[i0] as DKSlotData; if (Element.GetType().ToString() == "DKSlotData") { EditorVariables.TmpName = Element.name; DKSlotData _Data = Element as DKSlotData; // Debug.Log ( "detect gender" ); #region Gender if (EditorVariables.DetGender) { if (Element.name.Contains("Female")) { _Data.Gender = "Female"; EditorVariables.TmpName = EditorVariables.TmpName.Replace("Female", ""); } else if (Element.name.Contains("female")) { _Data.Gender = "Female"; EditorVariables.TmpName = EditorVariables.TmpName.Replace("female", ""); } else if (Element.name.Contains("Male")) { _Data.Gender = "Male"; EditorVariables.TmpName = EditorVariables.TmpName.Replace("Male", ""); } else if (Element.name.Contains("male")) { _Data.Gender = "Male"; EditorVariables.TmpName = EditorVariables.TmpName.Replace("male", ""); } } #endregion Gender #region races // Add races if (EditorVariables.DetRace) { for (int i = 0; i < EditorVariables.RaceToApplyList.Count; i++) { if (_Data.Race.Contains(EditorVariables.RaceToApplyList[i]) == false) { _Data.Race.Add(EditorVariables.RaceToApplyList[i]); } } } #endregion races #region Link Detection if (EditorVariables.DetLink) { for (int i2 = 0; i2 < DKOverlaysList.Count; i2++) { // Debug.Log ( i0+" / "+(DKSlotsList.Count)+" "+DKSlotsList[i0]+" & "+i2 +" / "+DKOverlaysList.Count+" "+DKOverlaysList[i2]); if (DKOverlaysList[i2].name == DKSlotsList[i0].name) { if (DKOverlaysList[i2].LinkedToSlot.Contains(DKSlotsList[i0]) == false) { DKOverlaysList[i2].LinkedToSlot.Add(DKSlotsList[i0]); } if (DKSlotsList[i0].overlayList.Contains(DKOverlaysList[i2]) == false) { DKSlotsList[i0].overlayList.Add(DKOverlaysList[i2]); } EditorUtility.SetDirty(DKSlotsList[i0]); EditorUtility.SetDirty(DKOverlaysList[i2]); } } } #endregion Link Detection #region Expressions ExpressionLibrary Library = GameObject.Find("Expressions").GetComponent <ExpressionLibrary>(); for (int i = 0; i < Library.ExpressionList.Length; i++) { if (EditorVariables.TmpName.Contains(Library.ExpressionList[i].name)) { if (EditorVariables.DetOvType) { _Data.Elem = Library.ExpressionList[i].Elem; } if (EditorVariables.DetOvType) { _Data.OverlayType = Library.ExpressionList[i].OverlayType; } if (EditorVariables.DetPlace) { _Data.Place = Library.ExpressionList[i].Place.GetComponent <DK_SlotsAnatomyElement>(); } if (EditorVariables.DetWWeight) { _Data.WearWeight = Library.ExpressionList[i].WearWeight; } if (EditorVariables.DetOvType) { _Data.Replace = Library.ExpressionList[i].Replace; _Data._HideData.HideMouth = Library.ExpressionList[i].HideMouth; _Data._HideData.HideEars = Library.ExpressionList[i].HideEars; _Data._HideData.HideBeard = Library.ExpressionList[i].HideBeard; _Data._HideData.HideHair = Library.ExpressionList[i].HideHair; _Data._HideData.HideHairModule = Library.ExpressionList[i].HideHairModule; } } #endregion Expressions } // finishing EditorUtility.SetDirty(Element); } } } AssetDatabase.SaveAssets(); } if (EditorVariables.DetOverlay) { DKOverlaysList = _DKUMA_Variables.DKOverlaysList; for (int i0 = 0; i0 < DKOverlaysList.Count; i0++) { if ((EditorVariables.SearchResultsOnly && DKOverlaysList[i0].name.ToLower().Contains(DK_UMA_Editor.SearchString.ToLower())) || !EditorVariables.SearchResultsOnly) { Element = DKOverlaysList[i0] as DKOverlayData; if (Element.GetType().ToString() == "DKOverlayData") { EditorVariables.TmpName = Element.name; DKOverlayData _Data = Element as DKOverlayData; // Debug.Log ( "detect gender" ); #region Gender if (EditorVariables.DetGender) { if (Element.name.Contains("Female")) { _Data.Gender = "Female"; EditorVariables.TmpName = EditorVariables.TmpName.Replace("Female", ""); } else if (Element.name.Contains("female")) { _Data.Gender = "Female"; EditorVariables.TmpName = EditorVariables.TmpName.Replace("female", ""); } else if (Element.name.Contains("Male")) { _Data.Gender = "Male"; EditorVariables.TmpName = EditorVariables.TmpName.Replace("Male", ""); } else if (Element.name.Contains("male")) { _Data.Gender = "Male"; EditorVariables.TmpName = EditorVariables.TmpName.Replace("male", ""); } else { _Data.Gender = "Both"; } } #endregion Gender #region races // Add races if (EditorVariables.DetRace) { for (int i = 0; i < EditorVariables.RaceToApplyList.Count; i++) { if (_Data.Race.Contains(EditorVariables.RaceToApplyList[i]) == false) { _Data.Race.Add(EditorVariables.RaceToApplyList[i]); } } } #endregion races #region Expressions ExpressionLibrary Library = GameObject.Find("Expressions").GetComponent <ExpressionLibrary>(); for (int i = 0; i < Library.ExpressionList.Length; i++) { if (EditorVariables.TmpName.Contains(Library.ExpressionList[i].name)) { if (EditorVariables.DetOvType) { _Data.Elem = Library.ExpressionList[i].Elem; } if (EditorVariables.DetOvType) { _Data.OverlayType = Library.ExpressionList[i].OverlayType; } if (EditorVariables.DetPlace) { _Data.Place = Library.ExpressionList[i].Place.GetComponent <DK_SlotsAnatomyElement>(); } if (EditorVariables.DetWWeight) { _Data.WearWeight = Library.ExpressionList[i].WearWeight; } } } #endregion Expressions // finishing EditorUtility.SetDirty(Element); } } } AssetDatabase.SaveAssets(); } }
public Conversation() { ll = FileManager.initLines(); //this will be creating a new instance for each character if conversation class isn't a universal class el = FileManager.initExpressions(); }