Custom UMACustomization.cs

Hello,

I am trying to make a simple version of the UMACustomization.cs to use in the inspector rather than a gui. I think my problem is with the Update UMA Shape.

Thanks

public class UMA_custom : MonoBehaviour {
	

	public UMAData umaData;
	public UMADynamicAvatar umaDynamicAvatar;
	public CameraTrack cameraTrack;
	private UMADnaHumanoid umaDna;
	public SlotLibrary mySlotLibrary;
    public OverlayLibrary myOverlayLibrary;

	public bool editing = false;
	
	public float height = 1.0f;
	//........etc




	void Update () {
		Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
		RaycastHit hit;
		
		if(Input.GetMouseButtonDown(1)){
			if (Physics.Raycast(ray, out hit, 100)){
				
				umaData = hit.collider.transform.parent.parent.GetComponent<UMAData>();
				if(umaData){
					AvatarSetup();
				}
			}
		}

				if (editing.Equals(true))
				{
					UpdateUMAShape();          ////////////////////////
		}
	}

	public void AvatarSetup(){
		umaDynamicAvatar = umaData.gameObject.GetComponent<UMADynamicAvatar>();
		
		if(cameraTrack){
			cameraTrack.target = umaData.umaRoot.transform;
		}
		
		umaDna = umaData.umaRecipe.umaDna[typeof(UMADnaHumanoid)] as UMADnaHumanoid;
		ReceiveValues();
	}
	
	

	public void UpdateUMAAtlas(){                         ///////////
		umaData.isTextureDirty = true;
		umaData.Dirty();	
	}
	
	public void UpdateUMAShape(){                        ////////////////
		umaData.isShapeDirty = true;
		umaData.Dirty();
	}
	
	public void ReceiveValues(){
		if(umaDna != null){

			height = umaDna.height;
			//........etc
		}
	}
	
	
	public void TransferValuess(){

		if(umaDna != null){

			umaDna.height = height;
			//........etc
		}
	}
}

My goal was to have some variables I could use with Playmaker. For now I am going to use this as a solution. The UMACustomization2.cs makes one slider that can update the changes made in the inspector. You change the way the Avatar is selected and then run the AvatarSetup(). I am sure anyone with some knowledge of C# could come up with a better solution, but here it is.

using UnityEngine;
using System.Collections;
using UMA;

public class UMACustomization2 : MonoBehaviour {
	
	public Transform sliderPrefab;
	
	public UMAData umaData;
	public UMADynamicAvatar umaDynamicAvatar;
	public CameraTrack cameraTrack;
	private UMADnaHumanoid umaDna;
	
	public SliderControl[] sliderControlList;
	
	public SlotLibrary mySlotLibrary;
    public OverlayLibrary myOverlayLibrary;

	public bool editing = false;

	public float height = 1.0f;
	public float headSize = 1.0f;
	public float headWidth = 1.0f;
	public float foreheadSize = 1.0f;
	public float foreheadPosition = 1.0f;
	public float earsSize = 1.0f;
	public float earsPosition = 1.0f;
	public float earsRotation = 1.0f;
	public float cheekSize = 1.0f;
	public float cheekPosition = 1.0f;
	public float lowCheekPronounced = 1.0f;
	public float lowCheekPosition = 1.0f;
	public float noseSize = 1.0f;
	public float noseCurve = 1.0f;
	public float noseWidth = 1.0f;
	public float noseInclination = 1.0f;
	public float nosePosition = 1.0f;
	public float nosePronounced = 1.0f;
	public float noseFlatten = 1.0f;
	public float eyeSize = 1.0f;
	public float eyeRotation = 1.0f;
	public float lipsSize = 1.0f;
	public float mouthSize = 1.0f;
	public float mandibleSize = 1.0f;
	public float jawsSize = 1.0f;
	public float jawsPosition = 1.0f;
	public float neckThickness = 1.0f;
	public float chinSize = 1.0f;
	public float chinPronounced = 1.0f;
	public float chinPosition = 1.0f;
	public float upperMuscle = 1.0f;
	public float upperWeight = 1.0f;
	public float lowerMuscle = 1.0f;
	public float lowerWeight = 1.0f;
	public float armLength = 1.0f;
	public float armWidth = 1.0f;
	public float forearmLength = 1.0f;
	public float forearmWidth = 1.0f;
	public float handsSize = 1.0f;
	public float feetSize = 1.0f;
	public float legSeparation = 1.0f;
	public float legsSize = 1.0f;
	public float gluteusSize = 1.0f;
	public float breastSize = 1.0f;
	public float belly = 1.0f;
	public float waist = 1.0f;

	void Start () {
		sliderControlList = new SliderControl[1];	
		//Changed slider order
		
		sliderControlList[0] = InstantiateSlider("height",0,0);
//		sliderControlList[1] = InstantiateSlider("headSize",1,0);
//		sliderControlList[43] = InstantiateSlider("headWidth",2,0);
//		sliderControlList[32] = InstantiateSlider("forehead size",3,0);
//		sliderControlList[33] = InstantiateSlider("forehead position",4,0);
//		
//		sliderControlList[12] = InstantiateSlider("ears size",0,1);
//		sliderControlList[13] = InstantiateSlider("ears position",1,1);
//		sliderControlList[14] = InstantiateSlider("ears rotation",2,1);
//		
//		sliderControlList[28] = InstantiateSlider("cheek size",0,2);
//		sliderControlList[29] = InstantiateSlider("cheek position",1,2);
//		sliderControlList[30] = InstantiateSlider("lowCheek pronounced",2,2);
//		sliderControlList[31] = InstantiateSlider("lowCheek position",3,2);
//		
//		sliderControlList[15] = InstantiateSlider("nose size",0,3);
//		sliderControlList[16] = InstantiateSlider("nose curve",1,3);
//		sliderControlList[17] = InstantiateSlider("nose width",2,3);
//		
//		sliderControlList[18] = InstantiateSlider("nose inclination",0,4);
//		sliderControlList[19] = InstantiateSlider("nose position",1,4);
//		sliderControlList[20] = InstantiateSlider("nose pronounced",2,4);
//		sliderControlList[21] = InstantiateSlider("nose flatten",3,4);
//		
//		sliderControlList[44] = InstantiateSlider("eye Size",0,5);
//		sliderControlList[45] = InstantiateSlider("eye Rotation",1,5);
//		sliderControlList[34] = InstantiateSlider("lips size",2,5);
//		sliderControlList[35] = InstantiateSlider("mouth size",3,5);
//		sliderControlList[25] = InstantiateSlider("mandible size",4,5);
//		
//		sliderControlList[26] = InstantiateSlider("jaw Size",0,6);
//		sliderControlList[27] = InstantiateSlider("jaw Position",1,6);
//		sliderControlList[2] = InstantiateSlider("neck",2,6);
//		
//		sliderControlList[22] = InstantiateSlider("chinSize",0,7);
//		sliderControlList[23] = InstantiateSlider("chinPronounced",1,7);
//		sliderControlList[24] = InstantiateSlider("chinPosition",2,7);
//		
//		sliderControlList[7] = InstantiateSlider("upper muscle",0,8);
//		sliderControlList[8] = InstantiateSlider("lower muscle",1,8);
//		sliderControlList[9] = InstantiateSlider("upper weight",2,8);
//		sliderControlList[10] = InstantiateSlider("lower weight",3,8);	
//		
//		sliderControlList[3] = InstantiateSlider("arm Length",0,9);
//		sliderControlList[38] = InstantiateSlider("arm Width",1,9);
//		sliderControlList[39] = InstantiateSlider("forearm Length",2,9);
//		sliderControlList[40] = InstantiateSlider("forearm Width",3,9);
//		sliderControlList[4] = InstantiateSlider("hands Size",4,9);
//		
//		sliderControlList[5] = InstantiateSlider("feet Size",0,10);
//		sliderControlList[6] = InstantiateSlider("leg Separation",1,10);
//		sliderControlList[11] = InstantiateSlider("legsSize",2,10);
//		sliderControlList[37] = InstantiateSlider("Gluteus Size",3,10);
//		
//		sliderControlList[36] = InstantiateSlider("breatsSize",0,11);
//		sliderControlList[41] = InstantiateSlider("belly",1,11);
//		sliderControlList[42] = InstantiateSlider("waist",2,11);

		////////////////////////////New/////////////////////////////////

		height = umaDna.height;
		headSize = umaDna.headSize;
		headWidth  = umaDna.headWidth;
		
		neckThickness = umaDna.neckThickness;
		
		armLength = umaDna.armLength;
		handsSize = umaDna.handsSize;
		feetSize = umaDna.feetSize;
		legSeparation = umaDna.legSeparation;
		
		
		upperMuscle = umaDna.upperMuscle;
		lowerMuscle = umaDna.lowerMuscle;
		upperWeight = umaDna.upperWeight;
		lowerWeight = umaDna.lowerWeight;
		
		legsSize = umaDna.legsSize;
		
		earsSize = umaDna.earsSize;
		earsPosition = umaDna.earsPosition;
		earsRotation = umaDna.earsRotation;
		
		noseSize = umaDna.noseSize;
		
		noseCurve = umaDna.noseCurve;
		noseWidth = umaDna.noseWidth;
		noseInclination = umaDna.noseInclination;
		nosePosition = umaDna.nosePosition;
		nosePronounced = umaDna.nosePronounced;
		noseFlatten = umaDna.noseFlatten;
		
		chinSize = umaDna.chinSize;
		chinPronounced = umaDna.chinPronounced;
		chinPosition = umaDna.chinPosition;
		
		mandibleSize = umaDna.mandibleSize;
		jawsSize = umaDna.jawsSize;
		jawsPosition = umaDna.jawsPosition;
		
		cheekSize = umaDna.cheekSize;
		cheekPosition = umaDna.cheekPosition;
		lowCheekPronounced = umaDna.lowCheekPronounced;
		lowCheekPosition = umaDna.lowCheekPosition;
		
		foreheadSize = umaDna.foreheadSize;
		foreheadPosition = umaDna.foreheadPosition;
		
		eyeSize = umaDna.eyeSize;
		eyeRotation = umaDna.eyeRotation;
		lipsSize = umaDna.lipsSize;
		mouthSize = umaDna.mouthSize;
		breastSize = umaDna.breastSize;	
		gluteusSize = umaDna.gluteusSize;	
		
		armWidth = umaDna.armWidth;
		forearmLength = umaDna.forearmLength;
		forearmWidth = umaDna.forearmWidth;
		
		belly = umaDna.belly;
		waist = umaDna.waist;

		/////////////////////////////////////////////////////////////

	}
	

	void Update () {
		Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
		RaycastHit hit;
		
		if(Input.GetMouseButtonDown(1)){
			if (Physics.Raycast(ray, out hit, 100)){
				
				umaData = hit.collider.transform.parent.parent.GetComponent<UMAData>();
				if(umaData){
					AvatarSetup();
				}
			}
		}
		
		if(umaData){
			TransferValues();
			editing = false;
			for(int i = 0; i < sliderControlList.Length; i++){
				if(sliderControlList*.pressed == true){*
  •  			editing = true;*
    
  •  			UpdateUMAShape();*
    
  •  		}*
    
  •  	}*
    
  •  }*
    
  • }*

  • public void AvatarSetup(){*

  •  umaDynamicAvatar = umaData.gameObject.GetComponent<UMADynamicAvatar>();*
    
  •  if(cameraTrack){*
    
  •  	cameraTrack.target = umaData.umaRoot.transform;*
    
  •  }*
    
  •  umaDna = umaData.umaRecipe.umaDna[typeof(UMADnaHumanoid)] as UMADnaHumanoid;*
    
  •  ReceiveValues();*
    
  • }*

  • public SliderControl InstantiateSlider(string name, int X, int Y){*

  •  Transform TempSlider;*
    
  •  TempSlider = Instantiate(sliderPrefab,Vector3.zero, Quaternion.identity) as Transform;*
    
  •  TempSlider.parent = transform;*
    
  •  TempSlider.gameObject.name = name;*
    
  •  SliderControl tempSlider = TempSlider.GetComponent("SliderControl") as SliderControl;*
    
  •  tempSlider.actualValue = 0.5f;*
    
  •  tempSlider.descriptionText.text = name;*
    

_ tempSlider.sliderOffset.x = 20 + X100;_
_ tempSlider.sliderOffset.y = -20 - Y
60;_

  •  return tempSlider;*
    
  • }*

  • public SliderControl InstantiateStepSlider(string name, int X, int Y){*

  •  SliderControl tempSlider = InstantiateSlider(name,X,Y);*
    
  •  tempSlider.stepSlider = true;*
    
  •  return tempSlider;*
    
  • }*

  • public void UpdateUMAAtlas(){*

  •  umaData.isTextureDirty = true;*
    
  •  umaData.Dirty();	*
    
  • }*

  • public void UpdateUMAShape(){*

  •  umaData.isShapeDirty = true;*
    
  •  umaData.Dirty();*
    
  • }*

  • public void ReceiveValues(){*

  •  if(umaDna != null){*
    
  •  	sliderControlList[0].actualValue = umaDna.height;*
    

// sliderControlList[1].actualValue = umaDna.headSize ;
// sliderControlList[43].actualValue = umaDna.headWidth ;
*// *
// sliderControlList[2].actualValue = umaDna.neckThickness;
*// *
// sliderControlList[3].actualValue = umaDna.armLength;
// sliderControlList[4].actualValue = umaDna.handsSize;
// sliderControlList[5].actualValue = umaDna.feetSize;
// sliderControlList[6].actualValue = umaDna.legSeparation;
*// *
*// *
// sliderControlList[7].actualValue = umaDna.upperMuscle;
// sliderControlList[8].actualValue = umaDna.lowerMuscle;
// sliderControlList[9].actualValue = umaDna.upperWeight;
// sliderControlList[10].actualValue = umaDna.lowerWeight;
*// *
// sliderControlList[11].actualValue = umaDna.legsSize;
*// *
// sliderControlList[12].actualValue = umaDna.earsSize;
// sliderControlList[13].actualValue = umaDna.earsPosition;
// sliderControlList[14].actualValue = umaDna.earsRotation;
*// *
// sliderControlList[15].actualValue = umaDna.noseSize;
*// *
// sliderControlList[16].actualValue = umaDna.noseCurve;
// sliderControlList[17].actualValue = umaDna.noseWidth;
// sliderControlList[18].actualValue = umaDna.noseInclination;
// sliderControlList[19].actualValue = umaDna.nosePosition;
// sliderControlList[20].actualValue = umaDna.nosePronounced;
// sliderControlList[21].actualValue = umaDna.noseFlatten;
*// *
// sliderControlList[22].actualValue = umaDna.chinSize;
// sliderControlList[23].actualValue = umaDna.chinPronounced;
// sliderControlList[24].actualValue = umaDna.chinPosition;
*// *
// sliderControlList[25].actualValue = umaDna.mandibleSize;
// sliderControlList[26].actualValue = umaDna.jawsSize;
// sliderControlList[27].actualValue = umaDna.jawsPosition;
*// *
// sliderControlList[28].actualValue = umaDna.cheekSize;
// sliderControlList[29].actualValue = umaDna.cheekPosition;
// sliderControlList[30].actualValue = umaDna.lowCheekPronounced;
// sliderControlList[31].actualValue = umaDna.lowCheekPosition;
*// *
// sliderControlList[32].actualValue = umaDna.foreheadSize;
// sliderControlList[33].actualValue = umaDna.foreheadPosition;
*// *
// sliderControlList[44].actualValue = umaDna.eyeSize;
// sliderControlList[45].actualValue = umaDna.eyeRotation;
// sliderControlList[34].actualValue = umaDna.lipsSize;
// sliderControlList[35].actualValue = umaDna.mouthSize;
*// sliderControlList[36].actualValue = umaDna.breastSize; *
*// sliderControlList[37].actualValue = umaDna.gluteusSize; *
*// *
// sliderControlList[38].actualValue = umaDna.armWidth;
// sliderControlList[39].actualValue = umaDna.forearmLength;
// sliderControlList[40].actualValue = umaDna.forearmWidth;
*// *
// sliderControlList[41].actualValue = umaDna.belly;
// sliderControlList[42].actualValue = umaDna.waist;

  •  	////////////////////////////New/////////////////////////////////*
    
  •  	height = umaDna.height;*
    
  •  	headSize = umaDna.headSize;*
    
  •  	headWidth  = umaDna.headWidth;*
    
  •  	neckThickness = umaDna.neckThickness;*
    
  •  	armLength = umaDna.armLength;*
    
  •  	handsSize = umaDna.handsSize;*
    
  •  	feetSize = umaDna.feetSize;*
    
  •  	legSeparation = umaDna.legSeparation;*
    
  •  	upperMuscle = umaDna.upperMuscle;*
    
  •  	lowerMuscle = umaDna.lowerMuscle;*
    
  •  	upperWeight = umaDna.upperWeight;*
    
  •  	lowerWeight = umaDna.lowerWeight;*
    
  •  	legsSize = umaDna.legsSize;*
    
  •  	earsSize = umaDna.earsSize;*
    
  •  	earsPosition = umaDna.earsPosition;*
    
  •  	earsRotation = umaDna.earsRotation;*
    
  •  	noseSize = umaDna.noseSize;*
    
  •  	noseCurve = umaDna.noseCurve;*
    
  •  	noseWidth = umaDna.noseWidth;*
    
  •  	noseInclination = umaDna.noseInclination;*
    
  •  	nosePosition = umaDna.nosePosition;*
    
  •  	nosePronounced = umaDna.nosePronounced;*
    
  •  	noseFlatten = umaDna.noseFlatten;*
    
  •  	chinSize = umaDna.chinSize;*
    
  •  	chinPronounced = umaDna.chinPronounced;*
    
  •  	chinPosition = umaDna.chinPosition;*
    
  •  	mandibleSize = umaDna.mandibleSize;*
    
  •  	jawsSize = umaDna.jawsSize;*
    
  •  	jawsPosition = umaDna.jawsPosition;*
    
  •  	cheekSize = umaDna.cheekSize;*
    
  •  	cheekPosition = umaDna.cheekPosition;*
    
  •  	lowCheekPronounced = umaDna.lowCheekPronounced;*
    
  •  	lowCheekPosition = umaDna.lowCheekPosition;*
    
  •  	foreheadSize = umaDna.foreheadSize;*
    
  •  	foreheadPosition = umaDna.foreheadPosition;*
    
  •  	eyeSize = umaDna.eyeSize;*
    
  •  	eyeRotation = umaDna.eyeRotation;*
    
  •  	lipsSize = umaDna.lipsSize;*
    
  •  	mouthSize = umaDna.mouthSize;*
    
  •  	breastSize = umaDna.breastSize;	*
    
  •  	gluteusSize = umaDna.gluteusSize;	*
    
  •  	armWidth = umaDna.armWidth;*
    
  •  	forearmLength = umaDna.forearmLength;*
    
  •  	forearmWidth = umaDna.forearmWidth;*
    
  •  	belly = umaDna.belly;*
    
  •  	waist = umaDna.waist;*
    
  •  	/////////////////////////////////////////////////////////////*
    
  •  	///* 
    

// for(int i = 0; i < sliderControlList.Length; i++){
// sliderControlList*.ForceUpdate();*
// }
* }*
* }*

* public void TransferValues(){*
* if(umaDna != null){*
// umaDna.height = sliderControlList[0].actualValue;
// umaDna.headSize = sliderControlList[1].actualValue;
// umaDna.headWidth = sliderControlList[43].actualValue;
*// *
// umaDna.neckThickness = sliderControlList[2].actualValue;
*// *
// umaDna.armLength = sliderControlList[3].actualValue;
// umaDna.handsSize = sliderControlList[4].actualValue;
// umaDna.feetSize = sliderControlList[5].actualValue;
// umaDna.legSeparation = sliderControlList[6].actualValue;
*// *
*// *
// umaDna.upperMuscle = sliderControlList[7].actualValue;
// umaDna.lowerMuscle = sliderControlList[8].actualValue;
// umaDna.upperWeight = sliderControlList[9].actualValue;
// umaDna.lowerWeight = sliderControlList[10].actualValue;
*// *
// umaDna.legsSize = sliderControlList[11].actualValue;
*// *
// umaDna.earsSize = sliderControlList[12].actualValue;
// umaDna.earsPosition = sliderControlList[13].actualValue;
// umaDna.earsRotation = sliderControlList[14].actualValue;
*// *
// umaDna.noseSize = sliderControlList[15].actualValue;
*// *
// umaDna.noseCurve = sliderControlList[16].actualValue;
// umaDna.noseWidth = sliderControlList[17].actualValue;
// umaDna.noseInclination = sliderControlList[18].actualValue;
// umaDna.nosePosition = sliderControlList[19].actualValue;
// umaDna.nosePronounced = sliderControlList[20].actualValue;
// umaDna.noseFlatten = sliderControlList[21].actualValue;
*// *
// umaDna.chinSize = sliderControlList[22].actualValue;
// umaDna.chinPronounced = sliderControlList[23].actualValue;
// umaDna.chinPosition = sliderControlList[24].actualValue;
*// *
// umaDna.mandibleSize = sliderControlList[25].actualValue;
// umaDna.jawsSize = sliderControlList[26].actualValue;
// umaDna.jawsPosition = sliderControlList[27].actualValue;
*// *
// umaDna.cheekSize = sliderControlList[28].actualValue;
// umaDna.cheekPosition = sliderControlList[29].actualValue;
// umaDna.lowCheekPronounced = sliderControlList[30].actualValue;
// umaDna.lowCheekPosition = sliderControlList[31].actualValue;
*// *
// umaDna.foreheadSize = sliderControlList[32].actualValue;
// umaDna.foreheadPosition = sliderControlList[33].actualValue;
*// *
// umaDna.eyeSize = sliderControlList[44].actualValue;
// umaDna.eyeRotation = sliderControlList[45].actualValue;
// umaDna.lipsSize = sliderControlList[34].actualValue;
// umaDna.mouthSize = sliderControlList[35].actualValue;
*// umaDna.breastSize = sliderControlList[36].actualValue; *
// umaDna.gluteusSize = sliderControlList[37].actualValue;
*// *
// umaDna.armWidth = sliderControlList[38].actualValue;
// umaDna.forearmLength = sliderControlList[39].actualValue;
// umaDna.forearmWidth = sliderControlList[40].actualValue;
*// *
// umaDna.belly = sliderControlList[41].actualValue;
// umaDna.waist = sliderControlList[42].actualValue;

* ////////////////////////////New/////////////////////////////////*

* umaDna.height = height;*
* umaDna.headSize = headSize;*
* umaDna.headWidth = headWidth;*

* umaDna.neckThickness = neckThickness;*

* umaDna.armLength = armLength;*
* umaDna.handsSize = handsSize;*
* umaDna.feetSize = feetSize;*
* umaDna.legSeparation = legSeparation;*

* umaDna.upperMuscle = upperMuscle;*
* umaDna.lowerMuscle = lowerMuscle;*
* umaDna.upperWeight = umaDna.upperWeight;*
* umaDna.lowerWeight = umaDna.lowerWeight;*

* umaDna.legsSize = legsSize;*

* umaDna.earsSize = earsSize;*
* umaDna.earsPosition = earsPosition;*
* umaDna.earsRotation = earsRotation;*

* umaDna.noseSize = noseSize;*

* umaDna.noseCurve = noseCurve;*
* umaDna.noseWidth = noseWidth;*
* umaDna.noseInclination = noseInclination;*
* umaDna.nosePosition = nosePosition;*
* umaDna.nosePronounced = nosePronounced;*
* umaDna.noseFlatten = noseFlatten;*

* umaDna.chinSize = chinSize;*
* umaDna.chinPronounced = chinPronounced;*
* umaDna.chinPosition = chinPosition;*

* umaDna.mandibleSize = mandibleSize;*
* umaDna.jawsSize = jawsSize;*
* umaDna.jawsPosition = jawsPosition;*

* umaDna.cheekSize = cheekSize;*
* umaDna.cheekPosition = cheekPosition;*
* umaDna.lowCheekPronounced = lowCheekPronounced;*
* umaDna.lowCheekPosition = lowCheekPosition;*

* umaDna.foreheadSize = foreheadSize;*
* umaDna.foreheadPosition = foreheadPosition;*

* umaDna.eyeSize = eyeSize;*
* umaDna.eyeRotation = eyeRotation;*
* umaDna.lipsSize = lipsSize;*
* umaDna.mouthSize = mouthSize;*
* umaDna.breastSize = breastSize; *
* umaDna.gluteusSize = gluteusSize;*

* umaDna.armWidth = armWidth;*
* umaDna.forearmLength = forearmLength;*
* umaDna.forearmWidth = forearmWidth;*

* umaDna.belly = belly;*
* umaDna.waist = waist;*

* /////////////////////////////////////////////////////////////*
* }*
* }*
}