using UnityEngine; using UnityEngine.AI; using UMA; using UMA.CharacterSystem; using System.Collections.Generic; using UnityEngine.UI; using static UnityEngine.Rendering.DebugUI; public class CharacterDescriptor : MonoBehaviour { public CharacterSex Sex { get; private set; } private NavMeshAgent _navMeshAgent; [SerializeField] private DynamicCharacterAvatar _avatar; private Dictionary _dna; [SerializeField] private Slider _height; [SerializeField] private Slider _belly; [SerializeField] private List _hair; private void Start() { _navMeshAgent = GetComponentInParent(); } private void OnAnimatorMove() { if (_navMeshAgent != null) { transform.parent.position = _navMeshAgent.nextPosition; } } private void OnEnable() { _avatar.CharacterUpdated.AddListener(Updated); _height.onValueChanged.AddListener(HeightChange); _belly.onValueChanged.AddListener(BellyChange); } private void OnDisable() { _avatar.CharacterUpdated.RemoveListener(Updated); _height.onValueChanged.RemoveListener(HeightChange); _belly.onValueChanged.RemoveListener(BellyChange); } public void ChangeSex(bool isMale) { if (isMale) { Sex = CharacterSex.Male; _avatar.ChangeRace("HumanMale"); } else { Sex = CharacterSex.Female; _avatar.ChangeRace("HumanFemale"); } } private void Updated(UMAData data) { _dna = _avatar.GetDNA(); _height.value = _dna["height"].Get(); _belly.value = _dna["belly"].Get(); } private void HeightChange(float value) { _dna["height"].Set(value); _avatar.BuildCharacter(); } private void BellyChange(float value) { _dna["belly"].Set(value); _avatar.BuildCharacter(); } public void ChangeSkinColor(Color color) { _avatar.SetColor("Skin",color); _avatar.UpdateColors(true); } }