public string BodyPartConfigToJson(CharacterConstants.BodyPart bodyPart)
        {
            string element = "";
            string material = "";
            switch (bodyPart)
            {
                case CharacterConstants.BodyPart.Body:
                    element = this.body;
                    material = this.bodyMaterial;
                    break;
                case CharacterConstants.BodyPart.Hair:
                    element = this.hair;
                    material = this.hairMaterial;
                    break;
                case CharacterConstants.BodyPart.Hand:
                    element = this.hand;
                    material = this.handMaterial;
                    break;
                case CharacterConstants.BodyPart.Hat:
                    element = this.hat;
                    material = this.hatMaterial;
                    break;
                case CharacterConstants.BodyPart.Pants:
                    element = this.pants;
                    material = this.pantsMaterial;
                    break;
                case CharacterConstants.BodyPart.Shoes:
                    element = this.shoes;
                    material = this.shoesMaterial;
                    break;
            }
            string json = "{'tipe':'"+ bodyPart.ToString() +"','element':'"+ element +"','material':'"+ material +"'}";

            return json;
        }
 public string FacePartConfigToJson(CharacterConstants.FacePart facePart)
 {
     string material = "";
     switch (facePart)
     {
         case CharacterConstants.FacePart.Eye_Brows:
             material = this.eyeBrows;
             break;
         case CharacterConstants.FacePart.Eyes:
             material = this.eyes;
             break;
         case CharacterConstants.FacePart.Lip:
             material = this.lip;
             break;
     }
     string json = "{'tipe':'"+ facePart.ToString() +"','element':'"+ material +"'}";
     return json;
 }
        /// <summary>
        /// Change Face Part
        /// </summary>
        /// <param name="facePart">face part enum type</param>
        /// <param name="partName">part bundle name</param>
        public void ChangeFacePart(CharacterConstants.FacePart facePart, string partName)
        {
            if (_elements.ContainsKey(CharacterConstants.BodyPart.Face) != false)
            {
                CharacterFaceElement element = _elements[CharacterConstants.BodyPart.Face] as CharacterFaceElement;

                element.ChangeFacePart(facePart, partName);

                if (OnBodyPartChanging != null)
                {
                    OnBodyPartChanging(BodyPartChangeType.Top);
                }

                switch (facePart)
                {
                    case CharacterConstants.FacePart.Eye_Brows:
                        currentCharacterConfig.eyeBrows = partName;
                        break;
                    case CharacterConstants.FacePart.Eyes:
                        currentCharacterConfig.eyes = partName;
                        break;
                    case CharacterConstants.FacePart.Lip:
                        currentCharacterConfig.lip = partName;
                        break;
                }

                //Debug.LogWarning(currentCharacterConfig.CharacterConfigToJson(SkinColorIndex, IsUseHat));
            }
        }
        /// <summary>
        /// Set the character element and material
        /// </summary>
        /// <param name="bodyPart">The body part</param>
        /// <param name="element">The body element</param>
        /// <param name="material">The body element's material</param>
        protected void SetElement(CharacterConstants.BodyPart bodyPart, string element, string material)
        {
            if (element == null || element.ToLower().Length == 0)
            {
                if (_elements.ContainsKey(bodyPart))
                {
                    _elements.Remove(bodyPart);
                }
                return;
            }

            if (_elements.ContainsKey(bodyPart))
            {
                _elements[bodyPart].ElementName = element;
                _elements[bodyPart].MaterialName = material;
            }
            else
            {
                _elements.Add(bodyPart, new CharacterElement(this, element, material));
            }

            string hatElement = GetElementName(CharacterConstants.BodyPart.Hat);

            IsUseHat = hatElement != null;

            if (OnBodyPartChanging != null)
            {
                BodyPartChangeType part = BodyPartChangeType.Middle;
                switch (bodyPart)
                {
                    case CharacterConstants.BodyPart.Face:
                    case CharacterConstants.BodyPart.Hair:
                    case CharacterConstants.BodyPart.HairBottom:
                    case CharacterConstants.BodyPart.Hat:
                        part = BodyPartChangeType.Top;
                        break;

                    case CharacterConstants.BodyPart.Pants:
                    case CharacterConstants.BodyPart.Shoes:
                        part = BodyPartChangeType.Bottom;
                        break;
                }

                OnBodyPartChanging(part);
            }

            /// Save to the character config
            switch (bodyPart)
            {
                case CharacterConstants.BodyPart.Body:
                    currentCharacterConfig.body = element;
                    currentCharacterConfig.bodyMaterial = material;
                    break;
                case CharacterConstants.BodyPart.Face:
                    currentCharacterConfig.face = element;
                    currentCharacterConfig.faceMaterial = material;
                    break;
                case CharacterConstants.BodyPart.Hair:
                    currentCharacterConfig.hair = element;
                    currentCharacterConfig.hairMaterial = material;
                    break;
                case CharacterConstants.BodyPart.HairBottom:
                    currentCharacterConfig.hairBottom = element;
                    currentCharacterConfig.hairBottomMaterial = material;
                    break;
                case CharacterConstants.BodyPart.Hat:
                    currentCharacterConfig.hat = element;
                    currentCharacterConfig.hatMaterial = material;
                    break;
                case CharacterConstants.BodyPart.Pants:
                    currentCharacterConfig.pants = element;
                    currentCharacterConfig.pantsMaterial = material;
                    break;
                case CharacterConstants.BodyPart.Shoes:
                    currentCharacterConfig.shoes = element;
                    currentCharacterConfig.shoesMaterial = material;
                    break;
            }

            //Debug.LogWarning(currentCharacterConfig.CharacterConfigToJson(SkinColorIndex, IsUseHat));

        }
        protected string GetElementName(CharacterConstants.BodyPart bodyPart)
        {
            if (_elements.ContainsKey(bodyPart))
            {
                return _elements[bodyPart].ElementName;
            }

            return null;
        }
 /// <summary>
 /// Change Element 
 /// </summary>
 /// <param name="bodyPart">Element Part we want to change</param>
 /// <param name="elementName">The Element Bundle Name</param>
 /// <param name="materialName">The Material Bundle Name</param>
 public void ChangeElement(CharacterConstants.BodyPart bodyPart, string elementName, string materialName)
 {
     SetElement(bodyPart, elementName, materialName);
 }