示例#1
0
 public void DetectAll()
 {
     if (_DK_UMACrowd == null)
     {
         UMACrowdObj = GameObject.Find("DKUMACrowd");
         if (UMACrowdObj == null)
         {
             UMACrowdObj      = (GameObject)Instantiate(Resources.Load("DKUMACrowd"), Vector3.zero, Quaternion.identity);
             UMACrowdObj.name = "DKUMACrowd";
                             #if UNITY_EDITOR
             PrefabUtility.ReconnectToLastPrefab(UMACrowdObj);
                             #endif
         }
         _DK_UMACrowd = UMACrowdObj.GetComponent <DK_UMACrowd>();
     }
     if (!DKumaGenerator)
     {
         DKumaGenerator = GameObject.Find("DKUMAGenerator").GetComponent("DKUMAGenerator") as DKUMAGenerator;
     }
     if (!slotLibrary)
     {
         slotLibrary = _DK_UMACrowd.slotLibrary;
     }
     if (!raceLibrary)
     {
         raceLibrary = _DK_UMACrowd.raceLibrary;
     }
     if (!overlayLibrary)
     {
         overlayLibrary = _DK_UMACrowd.overlayLibrary;
     }
 }
示例#2
0
    /*
     * public void OnEnable () {
     *      DK_UMACrowdObj = GameObject.Find("UMACrowd");
     *      _DK_UMACrowd = DK_UMACrowdObj.gameObject.GetComponent<  DK_UMACrowd >();
     *      _DK_UMACrowd.generateUMA = false;
     *              _DK_UMACrowd.generateLotsUMA = false;
     *              _DK_UMACrowd.UMAGenerated = true;
     *              umaDirtyList.Clear();
     * }
     */
    public void Awake()
    {
        _DKUMAGenerator = GameObject.Find("DKUMAGenerator").GetComponent <DKUMAGenerator>();
        DK_UMACrowdObj  = GameObject.Find("DKUMACrowd");
        if (DK_UMACrowdObj)
        {
            _DK_UMACrowd = DK_UMACrowdObj.gameObject.GetComponent <DK_UMACrowd>();
        }

                #if UNITY_EDITOR
        if (_DKUMAGenerator.usePRO && !UnityEditorInternal.InternalEditorUtility.HasPro())
        {
            //	Debug.LogWarning("You might need to disable usePRO option in the Setup tab of DK UMA Editor window.");
            _DKUMAGenerator.usePRO = false;
        }
        else
        {
            _DKUMAGenerator.usePRO = true;
        }
                #endif
        List <string> tmplist = new List <string>();
        tmplist.Add("_MainTex");
        tmplist.Add("_BumpTex");
        textureNameList = tmplist.ToArray();

        //		_DK_UMACrowd.generateUMA = false;
        //		_DK_UMACrowd.generateLotsUMA = false;
        //		_DK_UMACrowd.UMAGenerated = true;
        //		umaDirtyList.Clear();

        _DKUMAGenerator.maxMeshUpdates = 1;
        if (_DKUMAGenerator.atlasResolution == 0)
        {
            _DKUMAGenerator.atlasResolution = 256;
        }
        umaGeneratorCoroutine = new DK_RPG_SelfGeneratorCoroutine();

        //	if(!textureMerge){
        //	textureMerge = GameObject.Find ("TextureMerge").GetComponent("DKTextureMerge") as DKTextureMerge;
        if (!textureMerge)
        {
            Transform tempTextureMerger = Instantiate(_DKUMAGenerator.textureMergePrefab, Vector3.zero, Quaternion.identity) as Transform;
            tempTextureMerger.name        = "TextureMerge";
            textureMerge                  = tempTextureMerger.GetComponent("DKTextureMerge") as DKTextureMerge;
            textureMerge.transform.parent = transform;
            textureMerge.gameObject.SetActive(false);
        }
        //	}

        //Garbage Collection hack
        var mb = (System.GC.GetTotalMemory(false) / (1024 * 1024));
        if (mb < 10)
        {
            byte[] data = new byte[10 * 1024 * 1024];
            data[0] = 0;
            data[10 * 1024 * 1024 - 1] = 0;
        }
    }
示例#3
0
    void SearchUMASlots()
    {
        UMASlotsList.Clear();
        GameObject  UMACrowdObj  = GameObject.Find("DKUMACrowd");
        DK_UMACrowd _DK_UMACrowd = UMACrowdObj.GetComponent <DK_UMACrowd>();

        System.Type type = _DK_UMACrowd.Default.ResearchDefault._SlotData.GetType();
        GetAssetsOfType(type, ".asset");
    }
示例#4
0
    public void CleanLibraries()
    {
        List <DKSlotData>    tmpList     = new List <DKSlotData>();
        List <DKSlotData>    RemoveList  = new List <DKSlotData>();
        List <DKOverlayData> tmpList2    = new List <DKOverlayData>();
        List <DKOverlayData> removeList2 = new List <DKOverlayData>();

        if (_DK_UMACrowd == null)
        {
            try{
                _DK_UMACrowd = GameObject.Find("DKUMACrowd").GetComponent <DK_UMACrowd>();
            }catch (NullReferenceException) { Debug.LogError("DK UMA is not installed in your scene, please install DK UMA."); }
        }

        tmpList = _DK_UMACrowd.slotLibrary.slotElementList.ToList();
        for (int i = 0; i < tmpList.Count; i++)
        {
            if (tmpList[i] == null)
            {
                RemoveList.Add(tmpList[i]);
            }
        }

        tmpList2 = _DK_UMACrowd.overlayLibrary.overlayElementList.ToList();
        for (int i = 0; i < tmpList2.Count; i++)
        {
            if (tmpList2[i] == null)
            {
                removeList2.Add(tmpList2[i]);
            }
        }
        foreach (DKSlotData slot in RemoveList)
        {
            if (tmpList.Contains(slot))
            {
                tmpList.Remove(slot);
            }
        }
        foreach (DKOverlayData overlay in removeList2)
        {
            if (tmpList2.Contains(overlay))
            {
                tmpList2.Remove(overlay);
            }
        }

        _DK_UMACrowd.slotLibrary.slotElementList       = tmpList.ToArray();
        _DK_UMACrowd.overlayLibrary.overlayElementList = tmpList2.ToArray();

        //	Debug.Log ("All libraries cleaned of missing references.");
    }
示例#5
0
    void SearchDKOverlays()
    {
        DKOverlaysList.Clear();
        DKOverlaysNamesList.Clear();
        OvPreviewsList.Clear();

        GameObject  UMACrowdObj  = GameObject.Find("DKUMACrowd");
        DK_UMACrowd _DK_UMACrowd = UMACrowdObj.GetComponent <DK_UMACrowd>();

        System.Type typeDK = _DK_UMACrowd.Default.ResearchDefault._DKOverlayData.GetType();
        GetAssetsOfType(typeDK, ".asset");

        //	DK_RPG_UMA_Generator _DK_RPG_UMA_Generator = DK_UMA.GetComponent<DK_RPG_UMA_Generator>();
        //	_DK_RPG_UMA_Generator.PopulateAllLists();
    }
示例#6
0
    public void Launch(DKUMAData UMAData)
    {
        umaData     = UMAData;
        _DK_RPG_UMA = this.gameObject.GetComponent <DK_RPG_UMA>();
        Crowd       = GameObject.Find("DKUMACrowd").GetComponent <DK_UMACrowd>();
        _DK_RPG_UMA._Avatar.HeadIndex = HeadIndex;
        TorsoIndex = _DK_RPG_UMA._Avatar.TorsoIndex;
        TmpSlotDataList.Clear();
        AssignedSlotsList.Clear();
        AssignedOverlayList.Clear();
        TmpTorsoOverLayList.Clear();
        Crowd.Wears.HideUnderwear = false;

        RebuildFace();
    }
示例#7
0
    public void AssigningOverlay(DK_UMACrowd Crowd, int index, DKOverlayData Overlay, string type, bool OverlayOnly, Color color)
    {
        Color ColorToApply = color;

        overlay = Overlay;

        // Assign the Overlay
        try {
            if (type.Contains("Wear"))
            {
                TmpSlotDataList[index].overlayList.Clear();
            }
        }catch (System.NullReferenceException e) { Debug.Log(e); }
        if (!overlay)
        {
            Debug.LogError("Overlay is missing, skipping it.");
        }
        if (!TmpSlotDataList[index]) /*Debug.LogError ( this.transform.parent.name+" Slot is missing, skipping it." );*/ } {
示例#8
0
    public void Launch(DK_RPG_UMA DKRPGUMA, DK_UMACrowd DKUMACrowd, string streamed)
    {
        // assign scripts
        _DK_UMACrowd = DKUMACrowd;
        _DK_RPG_UMA  = DKRPGUMA;
        Gender       = DKRPGUMA.Gender;
        //	_DK_UMACrowd = GameObject.Find ("DKUMACrowd").GetComponent<DK_UMACrowd>();

        // get libraries
        try {
            raceLibrary    = GameObject.Find("RaceLibrary").GetComponent <RaceLibrary>();
            slotLibrary    = GameObject.Find("SlotLibrary").GetComponent <SlotLibrary>();
            overlayLibrary = GameObject.Find("OverlayLibrary").GetComponent <OverlayLibrary>();
        }catch (NullReferenceException) {
            Debug.LogError("UMA is missing from your scene. UMA is required to generate a UMA avatar.");
        }
        // assign recipe
        _StreamedUMA = streamed;

        // Start the creation of the avatar
        ConvertStreamedUMA(streamed);
        CreateUMAData();
    }
示例#9
0
    public void LoadFromString(DKUMAData _DKUMAData, string IncStreamedUMA)
    {
//		Debug.Log ("LoadFromString Start ");
        //	streamedUMA = IncStreamedUMA;

        DKUMAData umaData = _DKUMAData;

        umaData.Loading = true;

        if (umaData)
        {
            DKUMAData.UMARecipe     umaRecipe     = new DKUMAData.UMARecipe();
            DKUMAData.UMAPackRecipe umaPackRecipe = new DKUMAData.UMAPackRecipe();
            DK_UMACrowd             _DK_UMACrowd  = GameObject.Find("DKUMACrowd").GetComponent <DK_UMACrowd>();

            umaPackRecipe = JsonMapper.ToObject <DKUMAData.UMAPackRecipe>(IncStreamedUMA);
            foreach (DKRaceData _Race in _DK_UMACrowd.raceLibrary.raceElementList)
            {
                if (_Race.raceName == umaPackRecipe.race)
                {
                    umaRecipe.raceData = _Race;
                    //		Debug.Log ("Race Loaded "+umaPackRecipe.race);
                }
            }

            // New
            DKUMADnaHumanoid            _UMADnaHumanoid = new DKUMADnaHumanoid();
            Dictionary <Type, DKUMADna> umaDna          = new Dictionary <Type, DKUMADna>();

            // DNA
            // load DK_UMAdnaHumanoid
            for (int dna = 0; dna < umaPackRecipe.packedDna.Count; dna++)
            {
                Type dnaType = DKUMADna.GetType(umaPackRecipe.packedDna[dna].dnaType);
                if (dna != 0 && dnaType != null)
                {
                    umaRecipe.umaDna.Add(dnaType, DKUMADna.LoadInstance(dnaType, umaPackRecipe.packedDna[dna].packedDna));
                }
                umaDna = umaRecipe.umaDna;
            }

            Transform tempUMA = (Instantiate(umaRecipe.raceData.racePrefab, umaData.transform.position, umaData.transform.rotation) as GameObject).transform;
            DKUMAData newUMA  = tempUMA.gameObject.GetComponentInChildren <DKUMAData>();
            newUMA.umaRecipe     = umaRecipe;
            newUMA.umaPackRecipe = umaPackRecipe;
            newUMA.streamedUMA   = IncStreamedUMA;

            // Modifyers
            for (int i = 0; i < umaRecipe.raceData.DNAConverterDataList.Count; i++)
            {
                // create new DK DNA
                DKRaceData.DNAConverterData _newDNA = new DKRaceData.DNAConverterData();

                // add to DK_UMAdnaHumanoid
                DKUMADna temp = null;
                if (umaDna.TryGetValue(_UMADnaHumanoid.GetType(), out temp))
                {
                    // there it is, apply the value to the modifyer
                    DNAValue = float.Parse(umaDna[_UMADnaHumanoid.GetType()].Values.GetValue(i).ToString());
                    if (DNAValue == 0)
                    {
                        DNAValue = 0.5f;
                    }
                }

                _newDNA.Name  = umaRecipe.raceData.DNAConverterDataList[i].Name;
                _newDNA.Value = DNAValue;
                _newDNA.Part  = umaRecipe.raceData.DNAConverterDataList[i].Part;
                _newDNA.Part2 = umaRecipe.raceData.DNAConverterDataList[i].Part2;
                newUMA.DNAList2.Add(_newDNA);
            }
            newUMA.LoadFromMemoryStream();
            newUMA.Dirty(true, true, true);
            Transform Parent = umaData.transform.parent;
            newUMA.transform.parent = Parent;
            Transform ZeroPoint = _DK_UMACrowd.zeroPoint;
            if (ZeroPoint != null)
            {
                //	tempUMA.transform.position = _DK_UMACrowd.zeroPoint.transform.position;
                Parent.transform.position = _DK_UMACrowd.zeroPoint.transform.position;
            }
            else
            {
                ZeroPoint = GameObject.Find("ZeroPoint").transform;
                //	tempUMA.transform.position = ZeroPoint.transform.position;
                Parent.transform.position = ZeroPoint.transform.position;
            }
            //	tempUMA.transform.position = Parent.position;
            //	Parent.name = Selection.activeGameObject.GetComponentInParent(UMA.UMAData).transform.parent.name;
            NewAvatarGo = Parent.gameObject;


            // Finishing by destroying the previous model
                        #if UNITY_EDITOR
            //	DestroyImmediate(umaData.transform.parent.gameObject);
            DestroyImmediate(umaData.transform.gameObject);
                        #endif
            //	if (  Application.isPlaying && umaData ) Destroy(umaData.transform.parent.gameObject);
            if (Application.isPlaying && umaData)
            {
                Destroy(umaData.transform.gameObject);
            }
        }
    }
示例#10
0
    public static void Finish(DK_UMACrowd Crowd)
    {
        //	Debug.Log ( "Finishing Define Slots");

        Crowd.umaData.umaRecipe.slotDataList = Crowd.tempSlotList.ToArray();
        Crowd.umaData.atlasResolutionScale   = Crowd.atlasResolutionScale;

        //	if ( Crowd.ToUMA == false ) {
        Crowd.umaData.Dirty(true, true, true);
        Crowd.umaData.OnUpdated += Crowd.MyOnUpdateMethod;

        Crowd.FleshOverlay          = null;
        Crowd.Wears.RanActivateMesh = 0;

        Crowd.umaData.myRenderer.enabled = false;
        if (Crowd.tempUMA.gameObject.GetComponent("DK_Model") as DK_Model == null)
        {
            Crowd.tempUMA.gameObject.AddComponent <DK_Model>();
        }
        Crowd._DK_Model = Crowd.tempUMA.GetComponent <DK_Model>();

        // Copy variables to DK_Model
        Crowd._DK_Model.Gender     = Crowd.RaceAndGender.Gender;
        Crowd._DK_Model.IsUmaModel = true;
        Crowd.umaData.Awaking();
        //	if ( Crowd.zeroPoint == null ) Crowd.zeroPoint = GameObject.Find("ZeroPoint").transform;
        if (Crowd.zeroPoint)
        {
            Crowd.tempUMA.transform.position = new Vector3(Crowd.zeroPoint.position.x, Crowd.zeroPoint.position.y, Crowd.zeroPoint.position.z);
        }
        else
        {
            Crowd.tempUMA.transform.position = new Vector3(0, 0, 0);
        }
//	}
        //	else {

        /*
         *      if ( Crowd.umaDna.N0 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N0 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N0 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N0 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N1 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N1 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N1 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N1 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N2 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N2 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N2 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N2 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N3 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N3 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N3 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N3 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N4 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N4 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N4 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N4 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N5 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N5 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N5 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N5 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N6 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N6 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N6 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N6 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N7 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N7 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N7 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N7 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N8 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N8 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N8 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N8 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N9 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N9 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N9 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N9 = _TransposeDK2UMA.MaxiDNA;
         *
         *      if ( Crowd.umaDna.N10 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N10 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N10 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N10 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N11 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N11 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N11 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N11 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N12 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N12 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N12 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N12 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N13 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N13 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N13 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N13 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N14 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N14 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N14 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N14 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N15 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N15 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N15 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N15 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N16 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N16 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N16 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N16 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N17 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N17 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N17 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N17 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N18 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N18 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N18 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N18 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N19 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N19 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N19 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N19 = _TransposeDK2UMA.MaxiDNA;
         *
         *      if ( Crowd.umaDna.N20 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N20 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N20 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N20 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N21 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N21 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N21 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N21 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N22 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N22 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N22 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N22 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N23 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N23 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N23 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N23 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N24 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N24 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N24 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N24 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N25 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N25 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N25 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N25 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N26 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N26 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N26 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N26 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N27 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N27 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N27 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N27 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N28 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N28 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N28 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N28 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N29 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N29 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N29 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N29 = _TransposeDK2UMA.MaxiDNA;
         *
         *      if ( Crowd.umaDna.N30 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N30 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N30 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N30 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N31 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N31 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N31 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N31 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N32 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N32 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N32 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N32 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N33 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N33 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N33 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N33 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N34 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N34 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N34 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N34 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N35 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N35 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N35 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N35 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N36 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N36 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N36 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N36 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N37 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N37 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N37 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N37 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N38 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N38 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N38 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N38 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N39 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N39 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N39 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N39 = _TransposeDK2UMA.MaxiDNA;
         *
         *      if ( Crowd.umaDna.N40 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N40 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N40 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N40 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N41 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N41 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N41 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N41 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N42 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N42 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N42 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N42 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N43 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N43 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N43 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N43 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N44 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N44 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N44 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N44 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N45 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N45 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N45 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N45 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N46 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N46 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N46 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N46 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N47 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N47 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N47 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N47 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N48 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N48 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N48 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N48 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N49 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N49 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N49 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N49 = _TransposeDK2UMA.MaxiDNA;
         *
         *      if ( Crowd.umaDna.N50 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N50 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N50 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N50 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N51 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N51 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N51 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N51 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N52 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N52 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N52 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N52 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N53 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N53 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N53 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N53 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N54 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N54 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N54 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N54 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N55 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N55 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N55 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N55 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N56 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N56 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N56 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N56 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N57 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N57 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N57 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N57 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N58 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N58 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N58 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N58 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N59 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N59 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N59 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N59 = _TransposeDK2UMA.MaxiDNA;
         *
         *      if ( Crowd.umaDna.N60 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N60 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N60 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N60 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N61 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N61 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N61 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N61 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N62 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N62 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N62 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N62 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N63 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N63 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N63 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N63 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N64 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N64 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N64 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N64 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N65 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N65 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N65 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N65 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N66 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N66 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N66 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N66 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N67 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N67 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N67 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N67 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N68 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N68 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N68 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N68 = _TransposeDK2UMA.MaxiDNA;
         *      if ( Crowd.umaDna.N69 < _TransposeDK2UMA.MiniDNA ) Crowd.umaDna.N69 = _TransposeDK2UMA.MiniDNA;
         *      if ( Crowd.umaDna.N69 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N69 = _TransposeDK2UMA.MaxiDNA;
         *
         *      if ( Crowd.umaDna.N70 > _TransposeDK2UMA.MaxiDNA ) Crowd.umaDna.N70 = _TransposeDK2UMA.MaxiDNA;
         */
        Crowd.umaData.umaRecipe.slotDataList = Crowd.tempSlotList.ToArray();

        Crowd.umaData.SaveToMemoryStream();
        string streamed = Crowd.umaData.streamedUMA;


        if (Crowd.ToUMA)
        {
            TransposeDK2UMA _TransposeDK2UMA = Crowd.umaData.gameObject.AddComponent <TransposeDK2UMA>();
            _TransposeDK2UMA.Launch(Crowd.umaData.gameObject.GetComponent <DK_RPG_UMA>(),
                                    Crowd,
                                    streamed);
        }
    }
示例#11
0
    public void AssigningSlot(DK_UMACrowd Crowd, DKSlotData slot, DKOverlayData Overlay, string type, Color color)
    {
        //	try{
        if (type == "_EyeLids" || type == "_Nose" || type == "_Mouth" || type == "_Ears")
        {
            if (slot.LinkedOverlayList.Count == 0 &&
                Crowd && Crowd.slotLibrary &&
                slot && slot.slotName != null &&
                TmpSlotDataList[HeadIndex])
            {
                TmpSlotDataList.Add(Crowd.slotLibrary.InstantiateSlot(slot.slotName, TmpSlotDataList[HeadIndex].overlayList));
            }
            else
            {
                int _index = TmpSlotDataList.Count;
                TmpSlotDataList.Add(Crowd.slotLibrary.InstantiateSlot(slot.slotName));
                Overlay = slot.LinkedOverlayList[0];
                AssigningOverlay(Crowd, _index, Overlay, type, false, color);
            }
        }
        else if (type == "_Torso" || type == "_Hands" || type == "_Legs" || type == "_Feet")
        {
            TmpSlotDataList.Add(Crowd.slotLibrary.InstantiateSlot(slot.slotName, TmpTorsoOverLayList));
        }
        else
        {
            int _index = TmpSlotDataList.Count;
            TmpSlotDataList.Add(Crowd.slotLibrary.InstantiateSlot(slot.slotName));
            AssigningOverlay(Crowd, _index, Overlay, type, false, color);
        }
        //	}catch ( System.ArgumentOutOfRangeException ){}
        // Copy the values
        CopyValues(Crowd, slot, TmpSlotDataList.Count - 1);

        // Remove the face elements for a head wear
        if (type == "_HeadWear")
        {
            for (int i1 = 0; i1 < TmpSlotDataList.Count; i1++)
            {
                #region if Hide Hair
                if (slot._HideData.HideHair == true)
                {
                    if (TmpSlotDataList[i1].Place && TmpSlotDataList[i1].Place.name == "Hair")
                    {
                        ToRemoveList.Add(TmpSlotDataList[i1]);
                    }
                }
                #endregion if Hide Hair

                #region if Hide Hair Module
                if (slot._HideData.HideHairModule == true)
                {
                    if (TmpSlotDataList[i1].Place && TmpSlotDataList[i1].Place.name == "Hair_Module")
                    {
                        ToRemoveList.Add(TmpSlotDataList[i1]);
                    }
                }
                #endregion if Hide Hair Module

                #region if Hide Mouth
                if (slot._HideData.HideMouth == true)
                {
                    if (TmpSlotDataList[i1].Place && TmpSlotDataList[i1].Place.name == "Mouth")
                    {
                        ToRemoveList.Add(TmpSlotDataList[i1]);
                    }
                }
                #endregion if Hide Mouth

                #region if Hide Beard
                if (slot._HideData.HideBeard == true)
                {
                    if (TmpSlotDataList[i1].OverlayType == "Beard")
                    {
                        ToRemoveList.Add(TmpSlotDataList[i1]);
                    }
                }
                #endregion if Hide Mouth

                #region if Hide Ears
                if (slot._HideData.HideEars == true)
                {
                    if (TmpSlotDataList[i1].Place && TmpSlotDataList[i1].Place.name == "Ears")
                    {
                        ToRemoveList.Add(TmpSlotDataList[i1]);
                    }
                }
                #endregion if Hide Ears
            }
        }
    }
示例#12
0
    public static void AddAll()
    {
        // install UMA
        EditorVariables.DK_UMAObj = GameObject.Find("DK_UMA");
        if (_DK_UMA == null && EditorVariables.DK_UMAObj != null)
        {
            _DK_UMA = EditorVariables.DK_UMAObj;
        }
        if (EditorVariables.DK_UMAObj == null)
        {
            EditorVariables.DK_UMAObj      = new GameObject();
            EditorVariables.DK_UMAObj.name = "DK_UMA";
        }

        if (EditorVariables.UseDkUMA)
        {
            EditorVariables.UMAObj = GameObject.Find("UMA");
            if (EditorVariables.UMAObj == null)
            {
                EditorVariables.UMAObj      = new GameObject();
                EditorVariables.UMAObj.name = "UMA";

                if (EditorVariables.DK_UMACrowd == null)
                {
                    EditorVariables.UMACrowdObj = GameObject.Find("DKUMACrowd");
                    if (EditorVariables.UMACrowdObj == null)
                    {
                        EditorVariables.UMACrowdObj                  = (GameObject)PrefabUtility.InstantiatePrefab(Resources.Load("DKUMACrowd"));
                        EditorVariables.UMACrowdObj.name             = "DKUMACrowd";
                        EditorVariables.UMACrowdObj.transform.parent = EditorVariables.DK_UMAObj.transform;
                        PrefabUtility.ReconnectToLastPrefab(EditorVariables.UMACrowdObj);
                    }
                    EditorVariables.DK_UMACrowd = EditorVariables.UMACrowdObj.GetComponent <DK_UMACrowd>();
                    if (EditorVariables.DK_UMACrowd == null)
                    {
                        EditorVariables.UMACrowdObj.gameObject.AddComponent <DK_UMACrowd>();
                    }
                    EditorVariables.DK_UMACrowd = EditorVariables.UMACrowdObj.GetComponent <DK_UMACrowd>();
                    EditorVariables.UMACrowdObj.transform.parent = EditorVariables.DK_UMAObj.transform;
                    EditorVariables.DK_UMACrowd.UMAGenerated     = true;
                    if (EditorVariables.DK_UMACrowd.Wears != null)
                    {
                        EditorVariables.DK_UMACrowd.Wears.RanWearYesMax = 25;
                    }
                    EditorVariables.DK_UMACrowd.UseLinkedOv = true;

                    if (EditorVariables.DKSlotLibraryObj == null)
                    {
                        EditorVariables.DKSlotLibraryObj = GameObject.Find("DKSlotLibrary");
                    }
                    if (EditorVariables.OverlayLibraryObj == null)
                    {
                        EditorVariables.OverlayLibraryObj = GameObject.Find("DKOverlayLibrary");
                    }
                    if (EditorVariables.RaceLibraryObj == null)
                    {
                        EditorVariables.RaceLibraryObj = GameObject.Find("DKRaceLibrary");
                    }

                    if (EditorVariables.RaceLibraryObj == null)
                    {
                        EditorVariables.RaceLibraryObj                  = (GameObject)PrefabUtility.InstantiatePrefab(Resources.LoadAssetAtPath("Assets/DK Editors/DK_UMA_Editor/Prefabs/Libraries/Race Libraries/DKRaceLibrary.prefab", typeof(GameObject)));
                        EditorVariables.RaceLibraryObj.name             = "DKRaceLibrary";
                        EditorVariables.RaceLibraryObj.transform.parent = EditorVariables.DK_UMAObj.transform;
                        PrefabUtility.ReconnectToLastPrefab(EditorVariables.RaceLibraryObj);
                    }
                    if (EditorVariables.DKSlotLibraryObj == null)
                    {
                        EditorVariables.DKSlotLibraryObj                  = (GameObject)PrefabUtility.InstantiatePrefab(Resources.LoadAssetAtPath("Assets/DK Editors/DK_UMA_Editor/Prefabs/Libraries/Slot Libraries/DKSlotLibrary.prefab", typeof(GameObject)));
                        EditorVariables.DKSlotLibraryObj.name             = "DKSlotLibrary";
                        EditorVariables._DKSlotLibrary                    = EditorVariables.DKSlotLibraryObj.gameObject.GetComponent <DKSlotLibrary>();
                        _DKUMA_Variables.ActiveSlotLibrary                = EditorVariables._DKSlotLibrary;
                        EditorVariables.DKSlotLibraryObj.transform.parent = EditorVariables.DK_UMAObj.transform;
                        PrefabUtility.ReconnectToLastPrefab(EditorVariables.DKSlotLibraryObj);
                    }
                    if (EditorVariables.OverlayLibraryObj == null)
                    {
                        EditorVariables.OverlayLibraryObj                  = (GameObject)PrefabUtility.InstantiatePrefab(Resources.LoadAssetAtPath("Assets/DK Editors/DK_UMA_Editor/Prefabs/Libraries/Overlay Libraries/DKOverlayLibrary.prefab", typeof(GameObject)));
                        EditorVariables.OverlayLibraryObj.name             = "DKOverlayLibrary";
                        EditorVariables._OverlayLibrary                    = EditorVariables.OverlayLibraryObj.gameObject.GetComponent <DKOverlayLibrary>();
                        _DKUMA_Variables.ActiveOverlayLibrary              = EditorVariables._OverlayLibrary;
                        EditorVariables.OverlayLibraryObj.transform.parent = EditorVariables.DK_UMAObj.transform;
                        PrefabUtility.ReconnectToLastPrefab(EditorVariables.OverlayLibraryObj);
                    }

                    // Add the variables from the original script
                    try { try {
                              EditorVariables.DK_UMACrowd.slotLibrary    = EditorVariables.DKSlotLibraryObj.GetComponent <DKSlotLibrary>() as DKSlotLibrary;
                              EditorVariables.DK_UMACrowd.overlayLibrary = EditorVariables.OverlayLibraryObj.GetComponent <DKOverlayLibrary>() as DKOverlayLibrary;
                              EditorVariables.DK_UMACrowd.raceLibrary    = EditorVariables.RaceLibraryObj.GetComponent <DKRaceLibrary>() as DKRaceLibrary;
                          }catch (NullReferenceException) {} }catch (MissingReferenceException) {}
                }

                DK_UMACrowd _DK_UMACrowd = EditorVariables.UMACrowdObj.GetComponent <DK_UMACrowd>();
                if (EditorVariables.DKSlotLibraryObj == null)
                {
                    EditorVariables.DKSlotLibraryObj = GameObject.Find("DKSlotLibrary");
                }
                if (EditorVariables.OverlayLibraryObj == null)
                {
                    EditorVariables.OverlayLibraryObj = GameObject.Find("DKOverlayLibrary");
                }
                if (EditorVariables.RaceLibraryObj == null)
                {
                    EditorVariables.RaceLibraryObj = GameObject.Find("DKRaceLibrary");
                }
                if (_DK_UMACrowd.raceLibrary == null)
                {
                    _DK_UMACrowd.raceLibrary = EditorVariables.RaceLibraryObj.GetComponent <DKRaceLibrary>();
                    if (_DK_UMACrowd.raceLibrary == null)
                    {
                        _DK_UMACrowd.raceLibrary = EditorVariables.RaceLibraryObj.AddComponent <DKRaceLibrary>() as DKRaceLibrary;
                    }
                }
                if (_DK_UMACrowd.overlayLibrary == null)
                {
                    _DK_UMACrowd.overlayLibrary = EditorVariables.OverlayLibraryObj.GetComponent <DKOverlayLibrary>();
                    if (_DK_UMACrowd.overlayLibrary == null)
                    {
                        _DK_UMACrowd.overlayLibrary = EditorVariables.OverlayLibraryObj.AddComponent <DKOverlayLibrary>() as DKOverlayLibrary;
                    }
                }
                if (_DK_UMACrowd.slotLibrary == null)
                {
                    _DK_UMACrowd.slotLibrary = EditorVariables.SlotsAnatomyLibraryObj.GetComponent <DKSlotLibrary>();
                    if (_DK_UMACrowd.slotLibrary == null)
                    {
                        _DK_UMACrowd.slotLibrary = EditorVariables.DKSlotLibraryObj.AddComponent <DKSlotLibrary>() as DKSlotLibrary;
                    }
                }
            }
            if (EditorVariables.DK_DKUMAGenerator == null)
            {
                EditorVariables.DKUMAGeneratorObj = GameObject.Find("DKUMAGenerator");
                if (EditorVariables.DKUMAGeneratorObj == null)
                {
                    EditorVariables.DKUMAGeneratorObj                  = (GameObject)PrefabUtility.InstantiatePrefab(Resources.Load("DKUMAGenerator"));
                    EditorVariables.DKUMAGeneratorObj.name             = "DKUMAGenerator";
                    EditorVariables.DKUMAGeneratorObj.transform.parent = EditorVariables.DK_UMAObj.transform;
                    PrefabUtility.ReconnectToLastPrefab(EditorVariables.DKUMAGeneratorObj);
                }
                EditorVariables.DK_DKUMAGenerator = EditorVariables.DKUMAGeneratorObj.GetComponent <DKUMAGenerator>();
                if (EditorVariables.DK_DKUMAGenerator == null)
                {
                    EditorVariables.DKUMAGeneratorObj.gameObject.AddComponent <DKUMAGenerator>();
                }
                EditorVariables.DK_DKUMAGenerator = EditorVariables.DKUMAGeneratorObj.GetComponent <DKUMAGenerator>();
                EditorVariables._DKUMAGenerator   = EditorVariables.DKUMAGeneratorObj.GetComponent <DKUMAGenerator>();
                EditorVariables.DKUMAGeneratorObj.transform.parent = EditorVariables.DK_UMAObj.transform;
            }
            DetectAll();
        }
    }
示例#13
0
    /*
     * public void OnEnable () {
     *      DK_UMACrowdObj = GameObject.Find("UMACrowd");
     *      _DK_UMACrowd = DK_UMACrowdObj.gameObject.GetComponent<  DK_UMACrowd >();
     *      _DK_UMACrowd.generateUMA = false;
     *              _DK_UMACrowd.generateLotsUMA = false;
     *              _DK_UMACrowd.UMAGenerated = true;
     *              umaDirtyList.Clear();
     * }
     */
    public void Awake()
    {
        /*	try {
         *              Destroy ( textureMerge.gameObject );
         *      }catch (MissingReferenceException){}*/
        DK_UMACrowdObj = GameObject.Find("DKUMACrowd");
        if (DK_UMACrowdObj)
        {
            _DK_UMACrowd = DK_UMACrowdObj.gameObject.GetComponent <DK_UMACrowd>();
        }
                #if UNITY_EDITOR
        if (usePRO && !UnityEditorInternal.InternalEditorUtility.HasPro())
        {
            //	Debug.LogWarning("You might need to disable usePRO option in the Setup tab of DK UMA Editor window.");
            usePRO = false;
        }
        //	else usePRO = true;
                #endif

        //		_DK_UMACrowd.generateUMA = false;
        //		_DK_UMACrowd.generateLotsUMA = false;
        //		_DK_UMACrowd.UMAGenerated = true;
        //		umaDirtyList.Clear();

        maxMeshUpdates = 1;
        if (atlasResolution == 0)
        {
            atlasResolution = 256;
        }
        umaGeneratorCoroutine = new DKUMAGeneratorCoroutine();

        if (!textureMerge && DK_UMACrowd.GeneratorMode == "Preset")
        {
            GameObject obj = GameObject.Find("TextureMerge");
            if (obj)
            {
                textureMerge = obj.GetComponent("DKTextureMerge") as DKTextureMerge;
            }
            if (!textureMerge)
            {
                Transform tempTextureMerger = Instantiate(textureMergePrefab, Vector3.zero, Quaternion.identity) as Transform;
                tempTextureMerger.name        = "TextureMerge";
                textureMerge                  = tempTextureMerger.GetComponent("DKTextureMerge") as DKTextureMerge;
                textureMerge.transform.parent = transform;
                textureMerge.gameObject.SetActive(false);
            }
        }
        else
        {
        }


        //Garbage Collection hack
        var mb = (System.GC.GetTotalMemory(false) / (1024 * 1024));
        if (mb < 10)
        {
            byte[] data = new byte[10 * 1024 * 1024];
            data[0] = 0;
            data[10 * 1024 * 1024 - 1] = 0;
        }
    }
示例#14
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;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }