public void AutoSave() { DKUMASaveTool umaSaveTool = this; GameObject gameObject = (GameObject)umaSaveTool.gameObject; DKUMAData umaData = gameObject.GetComponent("DKUMAData") as DKUMAData; if (umaData) { umaData.SaveToMemoryStream(); var path = avatarName + ".txt"; if (path.Length != 0) { // System.IO.File.WriteAllText(path, umaData.streamedUMA); } } }
void ApplyDNA(DKUMAData _DKUMAData, string streamedUMA, GameObject CreatedModel) { // dk uma DNA // Debug.Log ("Instantiating My model"); DKUMASaveTool _UMASaveTool = _DKUMAData.transform.GetComponent <DKUMASaveTool>(); if (_DKUMAData && _UMASaveTool) { if (!_DKUMAData.DKumaGenerator) { _DKUMAData.DKumaGenerator = GameObject.Find("DKUMAGenerator").GetComponent("DKUMAGenerator") as DKUMAGenerator; } _UMASaveTool.streamedUMA = streamedUMA; LoadFromString(_DKUMAData, streamedUMA); Debug.Log("apply DNA to My model"); } }
// Use this for initialization public static void SaveAvatar() { // GameObject DKUMAGeneratorObj = GameObject.Find("DKUMAGenerator"); if (EditorVariables.DKUMAGeneratorObj != null) { EditorVariables._DKUMAGenerator = EditorVariables.DKUMAGeneratorObj.GetComponent <DKUMAGenerator>(); } EditorVariables._DKUMAGenerator.umaDirtyList.Clear(); DKUMAData umaData = Selection.activeGameObject.transform.GetComponentInChildren <DKUMAData>() as DKUMAData; if (umaData && umaData.transform.parent != null) { // DK_Model _DK_Model = umaData.transform.parent.gameObject.GetComponent< DK_Model >(); umaData.SaveToMemoryStream(); umaData.Loading = true; DKUMASaveTool umaSaveTool = umaData.transform.GetComponent <DKUMASaveTool>(); umaSaveTool.AutoLoad(); } // EditorUtility.SetDirty(Selection.activeGameObject.transform.parent); // AssetDatabase.SaveAssets(); }
public override void OnInspectorGUI() { serializedObject.Update(); GUILayout.Label("Avatar Name", EditorStyles.boldLabel); avatarName.stringValue = EditorGUILayout.TextArea(avatarName.stringValue); GUILayout.Space(20); GUILayout.BeginHorizontal(); if (GUILayout.Button("Save Avatar")) { DKUMASaveTool umaSaveTool = (DKUMASaveTool)target; GameObject gameObject = (GameObject)umaSaveTool.gameObject; DKUMAData umaData = gameObject.GetComponent("DKUMAData") as DKUMAData; if (umaData) { umaData.SaveToMemoryStream(); var path = EditorUtility.SaveFilePanel("Save serialized Avatar", "", avatarName.stringValue + ".txt", "txt"); if (path.Length != 0) { System.IO.File.WriteAllText(path, umaData.streamedUMA); } } } if (GUILayout.Button("Load Avatar")) { LoadFromWin(); } GUILayout.EndHorizontal(); GUILayout.Space(20); // serializedObject.ApplyModifiedProperties(); }
public void LoadFromWin() { DKUMASaveTool umaSaveTool = (DKUMASaveTool)target; GameObject gameObject = (GameObject)umaSaveTool.gameObject; DKUMAData umaData = gameObject.GetComponent("DKUMAData") as DKUMAData; umaData.Loading = true; if (umaData) { var path = EditorUtility.OpenFilePanel("Load serialized Avatar", "", "txt"); if (path.Length != 0) { DKUMAData.UMARecipe umaRecipe = new DKUMAData.UMARecipe(); DKUMAData.UMAPackRecipe umaPackRecipe = new DKUMAData.UMAPackRecipe(); streamedUMA = System.IO.File.ReadAllText(path); umaPackRecipe = JsonMapper.ToObject <DKUMAData.UMAPackRecipe>(streamedUMA); foreach (DKRaceData _Race in umaData.raceLibrary.raceElementList) { if (_Race.raceName == umaPackRecipe.race) { umaRecipe.raceData = _Race; } } // New Transform tempUMA = (Instantiate(umaRecipe.raceData.racePrefab, umaData.transform.position, umaData.transform.rotation) as GameObject).transform; Debug.Log("Creating ... " + tempUMA); DKUMAData newUMA = tempUMA.gameObject.GetComponentInChildren <DKUMAData>(); newUMA.umaRecipe = umaRecipe; newUMA.streamedUMA = streamedUMA; DKUMADnaHumanoid _UMADnaHumanoid = new DKUMADnaHumanoid(); Dictionary <Type, DKUMADna> umaDna = new Dictionary <Type, DKUMADna>(); newUMA.umaPackRecipe = umaPackRecipe; // DNA // load DK_UMAdnaHumanoid newUMA.umaRecipe.umaDna.Clear(); for (int dna = 0; dna < newUMA.umaPackRecipe.packedDna.Count; dna++) { Type dnaType = DKUMADna.GetType(newUMA.umaPackRecipe.packedDna[dna].dnaType); newUMA.umaRecipe.umaDna.Add(dnaType, DKUMADna.LoadInstance(dnaType, umaPackRecipe.packedDna[dna].packedDna)); umaDna = newUMA.umaRecipe.umaDna; } // 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)) { Debug.Log("success : " + umaDna[_UMADnaHumanoid.GetType()].Values.GetValue(i).ToString()); // there it is, apply the value to the modifyer DNAValue = float.Parse(umaDna[_UMADnaHumanoid.GetType()].Values.GetValue(i).ToString()); } _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.Awaking(); newUMA.atlasResolutionScale = umaData.atlasResolutionScale; newUMA.Dirty(true, true, true); newUMA.transform.parent.gameObject.name = avatarName.stringValue; newUMA.transform.parent = umaData.transform.parent; serializedObject.ApplyModifiedProperties(); // Finshing by destroying the previous model #if UNITY_EDITOR DestroyImmediate(umaData.transform.gameObject); #endif if (Application.isPlaying) { Destroy(umaData.transform.gameObject); } } } }