SecretAnorak

UMA 101 - Completed Character Creator Script from Episode 12

Mar 1st, 2018
1,824
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.94 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UMA;
  5. using UMA.CharacterSystem;
  6. using UnityEngine.UI;
  7. using System.IO;
  8.  
  9. public class CharacterCreator : MonoBehaviour
  10. {
  11.     public DynamicCharacterAvatar avatar;
  12.     public Slider heightSlider;
  13.     public Slider bellySlider;
  14.    
  15.     private Dictionary<string, DnaSetter> dna;
  16.    
  17.     public List<string> hairModelsMale = new List<string>();
  18.     private int currentHairMale;
  19.    
  20.     public List<string> hairModelsFemale = new List<string>();
  21.     private int currentHairFemale;
  22.    
  23.     public string myRecipe;
  24.    
  25.     void OnEnable()
  26.     {
  27.         avatar.CharacterUpdated.AddListener(Updated);
  28.         heightSlider.onValueChanged.AddListener(HeightChange);
  29.         bellySlider.onValueChanged.AddListener(BellyChange);
  30.     }
  31.    
  32.     void OnDisable()
  33.     {
  34.         avatar.CharacterUpdated.RemoveListener(Updated);
  35.         heightSlider.onValueChanged.RemoveListener(HeightChange);
  36.         bellySlider.onValueChanged.RemoveListener(BellyChange);
  37.     }
  38.    
  39.     public void SwitchGender(bool male)
  40.     {
  41.         if(male && avatar.activeRace.name != "HumanMaleDCS")
  42.             avatar.ChangeRace("HumanMaleDCS");
  43.            
  44.         if(!male && avatar.activeRace.name != "HumanFemaleDCS")
  45.             avatar.ChangeRace("HumanFemaleDCS");   
  46.     }
  47.    
  48.     void Updated(UMAData data)
  49.     {
  50.         dna = avatar.GetDNA();
  51.         heightSlider.value = dna["height"].Get();
  52.         bellySlider.value = dna["belly"].Get();
  53.     }
  54.    
  55.     public void HeightChange(float val)
  56.     {
  57.         dna["height"].Set(val);
  58.         avatar.BuildCharacter();
  59.     }
  60.    
  61.     public void BellyChange(float val)
  62.     {
  63.         dna["belly"].Set(val);
  64.         avatar.BuildCharacter();
  65.     }
  66.    
  67.     public void ChangeSkinColor(Color col)
  68.     {
  69.         avatar.SetColor("Skin", col);
  70.         avatar.UpdateColors(true);
  71.        
  72.         //Debug.Log(avatar.GetColor("Skin").color);
  73.     }
  74.    
  75.     public void ChangeHair(bool plus)
  76.     {
  77.         if(avatar.activeRace.name == "HumanMaleDCS")       
  78.         {
  79.             if(plus)
  80.                 currentHairMale ++;
  81.             else
  82.                 currentHairMale --;
  83.                
  84.             currentHairMale = Mathf.Clamp(currentHairMale, 0, hairModelsMale.Count -1);
  85.            
  86.             if(hairModelsMale[currentHairMale] == "None")
  87.                 avatar.ClearSlot("Hair");
  88.             else
  89.                 avatar.SetSlot("Hair", hairModelsMale[currentHairMale]);   
  90.         }
  91.        
  92.         if(avatar.activeRace.name == "HumanFemaleDCS")     
  93.         {
  94.             if(plus)
  95.                 currentHairFemale ++;
  96.             else
  97.                 currentHairFemale --;
  98.                
  99.             currentHairFemale = Mathf.Clamp(currentHairFemale, 0, hairModelsFemale.Count -1);
  100.            
  101.             if(hairModelsFemale[currentHairFemale] == "None")
  102.                 avatar.ClearSlot("Hair");
  103.             else
  104.                 avatar.SetSlot("Hair", hairModelsFemale[currentHairFemale]);   
  105.         }
  106.            
  107.         avatar.BuildCharacter();
  108.        
  109.         //Debug.Log(avatar.GetWardrobeItemName("Hair"));
  110.  
  111.     }
  112.    
  113.     public void SaveRecipe()
  114.     {
  115.         myRecipe = avatar.GetCurrentRecipe();
  116.         File.WriteAllText(Application.persistentDataPath + "/dude.txt", myRecipe);
  117.     }
  118.    
  119.     public void LoadRecipe()
  120.     {
  121.         myRecipe = File.ReadAllText(Application.persistentDataPath + "/dude.txt");
  122.         avatar.ClearSlots();
  123.         avatar.LoadFromRecipeString(myRecipe);
  124.     }
  125.    
  126. }
Advertisement
Add Comment
Please, Sign In to add comment