示例#1
0
    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);
    }
示例#2
0
    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());
    }
示例#3
0
    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;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
示例#4
0
    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();
        }
    }
示例#5
0
 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();
 }