void GenerateUMA()
    {
        // Create a new game object and add UMA components to it
        GameObject GO = new GameObject("MyUMA");
        umaDynamicAvatar = GO.AddComponent<UMADynamicAvatar>();

        // Initialise Avatar and grab a reference to it's data component
        umaDynamicAvatar.Initialize();
        umaData = umaDynamicAvatar.umaData;

        // Attach our generator
        umaDynamicAvatar.umaGenerator = generator;
        umaData.umaGenerator = generator;

        // Set up slot Array
        umaData.umaRecipe.slotDataList = new SlotData[numberOfSlots];

        // Set up our Morph reference
        umaDna = new UMADnaHumanoid();
        umaTutorialDNA = new UMADnaTutorial();
        umaData.umaRecipe.AddDna(umaDna);
        umaData.umaRecipe.AddDna(umaTutorialDNA);

        // Grab a reference to our recipe
        // var umaRecipe = umaDynamicAvatar.umaData.umaRecipe; //moved to subroutine MakeMale

        // >>> This is whee the fun will happen according to Secret Anorak <<<<
        CreateMale();

        // Generate Our UMA
        umaDynamicAvatar.UpdateNewRace();
    }
    void GenerateUMA()
    {
        GameObject myUMA = new GameObject("MyUMA");
        avatar = myUMA.AddComponent<UMADynamicAvatar>();

        avatar.Initialize();
        umaData = avatar.umaData;
        avatar.umaGenerator = generator;
        umaData.umaGenerator = generator;
        umaData.umaRecipe = new UMAData.UMARecipe();
        umaData.umaRecipe.slotDataList = new SlotData[NUM_SLOTS];

        umaDna = new UMADnaHumanoid();
        umaTutorialDna = new UMADnaTutorial();
        
        umaData.umaRecipe.AddDna(umaDna);
        umaData.umaRecipe.AddDna(umaTutorialDna);

        

        CreateMale();

        avatar.animationController = animController;

        avatar.UpdateNewRace();

        myUMA.transform.parent = this.gameObject.transform;
        myUMA.transform.localPosition = Vector3.zero;
        myUMA.transform.localRotation = Quaternion.identity;
    }
Example #3
0
    public void Initialize(UMADiAvatar.Factory avatarGOFactory,
		UMADnaHumanoid dna, UMADnaTutorial tutorial)
    {
        this.avatarGOFactory = avatarGOFactory;
        this.umaDna = dna;
        this.umaTutorialDna = tutorial;
        GenerateUMA();
    }
Example #4
0
    void myColliderUpdateMethod(UMA.UMAData umaData)
    {
        CapsuleCollider tempCollider = umaData.umaRoot.gameObject.GetComponent("CapsuleCollider") as CapsuleCollider;

        if (tempCollider)
        {
            UMA.UMADnaHumanoid umaDna = umaData.umaRecipe.GetDna <UMA.UMADnaHumanoid>();
            tempCollider.height = (umaDna.height + 0.5f) * 2 + 0.1f;
            tempCollider.center = new Vector3(0, tempCollider.height * 0.5f - 0.04f, 0);
        }
    }
    public void AvatarSetup()
    {
        umaDynamicAvatar = umaData.gameObject.GetComponent<UMADynamicAvatar>();

        if(cameraTrack)
        {
            cameraTrack.target = umaData.umaRoot.transform;
        }

        umaDna = umaData.umaRecipe.umaDna[typeof(UMADnaHumanoid)] as UMADnaHumanoid;
        ReceiveValues();
    }
    void GenerateUMA()
    {
        // Create a new game object and add UMA components to it
        GameObject GO = new GameObject("MyUMA");
        umaDynamicAvatar = GO.AddComponent<UMADynamicAvatar>();

        // Initialise Avatar and grab a reference to it's data component
        umaDynamicAvatar.Initialize();
        umaData = umaDynamicAvatar.umaData;

        //practical guide to uma part 15 uma events https://youtu.be/_k-SZRCvgIk?t=8m20s
        umaData.OnCharacterCreated += CharacterCreatedCallback;

        // Attach our generator
        umaDynamicAvatar.umaGenerator = generator;
        umaData.umaGenerator = generator;

        // Set up slot Array
        umaData.umaRecipe.slotDataList = new SlotData[numberOfSlots];

        // Set up our Morph reference
        umaDna = new UMADnaHumanoid();
        umaTutorialDNA = new UMADnaTutorial();
        umaData.umaRecipe.AddDna(umaDna);
        umaData.umaRecipe.AddDna(umaTutorialDNA);

        // Grab a reference to our recipe
        // var umaRecipe = umaDynamicAvatar.umaData.umaRecipe; //moved to subroutine MakeMale

        // >>> This is where the fun will happen according to Secret Anorak <<<<
        CreateFemale();

        // dynamic animation controller
        umaDynamicAvatar.animationController = animController;

        // Generate Our UMA
        umaDynamicAvatar.UpdateNewRace();
    }
Example #7
0
	public void GenerateUMA() {
		if(this.slotLibrary==null) {
			findUMAStuff();
		}
		GameObject GO = new GameObject("MyUMA");
		umaDynamicAvatar = GO.AddComponent<UMADynamicAvatar>();
	
		this.umaDynamicAvatar.Initialize();
		umaData = this.umaDynamicAvatar.umaData;

		umaDynamicAvatar.umaGenerator = generator;
		umaData.umaGenerator = generator;

		umaData.umaRecipe.slotDataList = new SlotData[numberOfSlots];

		umaDna = new UMADnaHumanoid();
		umaData.umaRecipe.AddDna(umaDna);
		

		CreateMale();

		umaDynamicAvatar.animationController = this.animController;
		umaDynamicAvatar.UpdateNewRace();
	 
		GO.transform.parent = this.gameObject.transform;
		GO.transform.localPosition = Vector3.zero;
		GO.transform.localRotation = Quaternion.identity;
	} 
	public void Update() {
		if (umaData == null) {
			umaData = this.GetComponent<UMADynamicAvatar> ().umaData;
			umaDNA = umaData.GetDna<UMADnaHumanoid> ();		
		}
	}
Example #9
0
    void Update()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if(Input.GetMouseButtonDown(1)){
            if (Physics.Raycast(ray, out hit, 100)){

                UMAData tempUMA = hit.collider.GetComponent("UMAData") as UMAData;
                umaDynamicAvatar = tempUMA.gameObject.GetComponent("UMADynamicAvatar") as UMADynamicAvatar;

                if(tempUMA){
                    //Clear saved data of old UMA
                    if(umaDynamicAvatar){
                        umaDynamicAvatar.streamedUMA = null;
                    }

                    umaData = tempUMA;
                    if(cameraTrack){
                        cameraTrack.target = umaData.transform;
                    }

                    umaDna = umaData.umaRecipe.umaDna[typeof(UMADnaHumanoid)] as UMADnaHumanoid;
                    ReceiveValues();

                    //Save functionality
                    umaDynamicAvatar.SaveToMemoryStream();
                }
            }
        }

        if(umaData){
            TransferValues();

            for(int i = 0; i < sliderControlList.Length; i++){
                if(sliderControlList[i].pressed == true){
                    UpdateUMAShape();
                }
            }
        }

        //Load functionality
        if( Input.GetKeyDown(KeyCode.Z) ){
            if(umaData && umaDynamicAvatar){
                //SPOT
                umaDynamicAvatar.LoadFromMemoryStream();
                umaData.isShapeDirty = true;
                umaData.Dirty();

                umaDna = umaData.umaRecipe.umaDna[typeof(UMADnaHumanoid)] as UMADnaHumanoid;
                ReceiveValues();
                //SPOT
                umaDynamicAvatar.SaveToMemoryStream();
            }
        }
    }
Example #10
0
    // Set the camera target and viewport
    private void SetCamera(bool show)
    {
//        Camera cam = cameraTrack.GetComponent<Camera>();
        if(show)
        {
            Camera.main.rect = ViewPortReduced;
            DnaPanel.SetActive(true);
            DnaHide.gameObject.SetActive(true);
#if UNITY_5 && !UNITY_5_1 && !UNITY_5_0
			// really Unity? Yes we change the value and set it back to trigger a ui recalculation... 
			// because setting the damn game object active doesn't do that!
			var rt = DnaPanel.GetComponent<RectTransform>();
			var pos = rt.offsetMin;
			rt.offsetMin = new Vector2(pos.x + 1, pos.y);
			rt.offsetMin = pos;
#endif
		}
        else
        {
            cameraTrack.target = baseTarget;
            Camera.main.rect = ViewPortFull;
            DnaPanel.SetActive(false);
			DnaHide.gameObject.SetActive(false);
			umaData = null;
			umaDna = null;
			umaTutorialDna = null;
		}
    }
Example #11
0
    // An avatar has been selected, setup the camera, sliders, retarget the camera, and adjust the viewport
    // to account for the DNA slider scroll panel
	public void AvatarSetup()
	{
		umaDynamicAvatar = umaData.gameObject.GetComponent<UMADynamicAvatar>();
		
		if(cameraTrack){
			cameraTrack.target = umaData.umaRoot.transform;
		}
		
		umaDna = umaData.GetDna<UMADnaHumanoid>();
		umaTutorialDna = umaData.GetDna<UMADnaTutorial>();

        SetSliders();
        SetCamera(true);
	}
    void GenerateUMA()
    {
        //Create a new game object and add UMA components to it
        GameObject GO = new GameObject ("MyUMA");
        umaDynamicAvatar = GO.AddComponent<UMADynamicAvatar>();

        //Initialise Avatar and grab a refrence to its data component
        umaDynamicAvatar.Initialize();
        umaData = umaDynamicAvatar.umaData;

        //Attach our generator
        umaDynamicAvatar.umaGenerator = generator;
        umaData.umaGenerator = generator;

        //Setup slot array
        umaData.umaRecipe.slotDataList = new SlotData[numberOfSlots];

        //Set up our morph refrence
        umaDNA = new UMADnaHumanoid();
        umaTutorialDNA = new UMADnaTutorial();
        umaData.umaRecipe.AddDna (umaDNA);
        umaData.umaRecipe.AddDna (umaTutorialDNA);

        //----------UMA Generation Section-----------------
        CreateMale();

        umaDynamicAvatar.animationController = animController;

        //Generate our UMA
        umaDynamicAvatar.UpdateNewRace();

        GO.transform.parent = this.gameObject.transform;
        GO.transform.localPosition = Vector3.zero;
        GO.transform.localRotation = Quaternion.identity;
    }
Example #13
0
    void Update()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if(Input.GetMouseButtonDown(1)){
            if (Physics.Raycast(ray, out hit, 100)){

                UMAData tempUMA = hit.collider.transform.parent.parent.GetComponent<UMAData>();
                umaDynamicAvatar = tempUMA.gameObject.GetComponent<UMADynamicAvatar>();

                if(tempUMA){
                    umaData = tempUMA;
                    if(cameraTrack){
                        cameraTrack.target = umaData.umaRoot.transform;
                    }

                    umaDna = umaData.umaRecipe.umaDna[typeof(UMADnaHumanoid)] as UMADnaHumanoid;
                    ReceiveValues();
                }
            }
        }

        if(umaData){
            TransferValues();

            for(int i = 0; i < sliderControlList.Length; i++){
                if(sliderControlList[i].pressed == true){
                    UpdateUMAShape();
                }
            }
        }
    }
    void GenerateUMA()
    {
        //UMA naming
        // Check a list of UMA objects.

        int umaCount = GameObject.FindGameObjectsWithTag("UMA").Length;
        UMAName = "UMA_" + umaCount.ToString();

        // Create a new game object and add UMA components to it
        GameObject GO = new GameObject("myUMA");
        GO.tag = "UMA";
        umaDynamicAvatar = GO.AddComponent<UMADynamicAvatar>();

        // Initialise Avatar and grab a reference to it's data component
        umaDynamicAvatar.Initialize();
        umaData = umaDynamicAvatar.umaData;

        //practical guide to uma part 15 uma events https://youtu.be/_k-SZRCvgIk?t=8m20s
        umaData.OnCharacterCreated += CharacterCreatedCallback;

        // Attach our generator
        umaDynamicAvatar.umaGenerator = generator;
        umaData.umaGenerator = generator;

        // Set up slot Array
        umaData.umaRecipe.slotDataList = new SlotData[numberOfSlots];

        // Set up our Morph reference
        umaDna = new UMADnaHumanoid();
        umaTutorialDNA = new UMADnaTutorial();
        umaData.umaRecipe.AddDna(umaDna);
        umaData.umaRecipe.AddDna(umaTutorialDNA);

        // Grab a reference to our recipe
        // var umaRecipe = umaDynamicAvatar.umaData.umaRecipe; //moved to subroutine MakeMale

        // >>> This is whee the fun will happen according to Secret Anorak <<<<
        CreateMale();

        // dynamic animation controller
        umaDynamicAvatar.animationController = animController;

        // Generate Our UMA
        umaDynamicAvatar.UpdateNewRace();

        // parent the new uma into the host game object
        GO.transform.parent = this.gameObject.transform;
        GO.transform.localPosition = Vector3.zero;
        GO.transform.localRotation = Quaternion.identity;
    }
Example #15
0
    // Set the camera target and viewport
    private void SetCamera(bool show)
    {
        //        Camera cam = cameraTrack.GetComponent<Camera>();
        if(show)
        {
            Camera.main.rect = ViewPortReduced;
            DnaPanel.SetActive(true);
            DnaHide.gameObject.SetActive(true);
        }

        else
        {
            cameraTrack.target = baseTarget;
            Camera.main.rect = ViewPortFull;
            DnaPanel.SetActive(false);
            DnaHide.gameObject.SetActive(false);
            umaData = null;
            umaDna = null;
            umaTutorialDna = null;
        }
    }
 private void GetUMAData(GameObject myUma)
 {
     UMAData tempUMA = myUma.GetComponent<UMAData>();
     if(tempUMA)
     {
         umaData = tempUMA;
         umaDna = umaData.umaRecipe.GetDna<UMADnaHumanoid>();
         ReceiveValues();
     }
 }
Example #17
0
    GameObject GenerateUMA(string name)
    {
        // Create a new game object and add UMA components to it

        GameObject GO = new GameObject(name);
        GO.transform.position = this.transform.position;
        //parentAtPosition(GO);

        umaDynamicAvatar = GO.AddComponent<UMADynamicAvatar>();
        umaDynamicAvatar.animationController = animationController;
        GO.AddComponent<RagdollCreatorTest>();
        if (name.Contains ("Zombie")) {

            ZombieBehavior zbh = GO.AddComponent<ZombieBehavior> ();
            zbh.speedMultiplier = Random.Range (0.5f, 2.5f);
            GO.tag = "Zombie";
            GameObject[] zombies = GameObject.FindGameObjectsWithTag("Zombie");
            GO.name = "Zombie" + zombies.Length;

        } else {
            HumanBehavior hb = GO.AddComponent<HumanBehavior> ();
            hb.zombieAnimationController = secondaryAnimationController;
            GO.tag = "Human";
          //  GameObject[] humans = GameObject.FindGameObjectsWithTag("Human");
            //GO.name = "Human" + humans.Length;

        }

        GO.AddComponent<NavMeshAgent> ();
        GO.AddComponent<HealthComponent> ();

        // Initialize Avatar and grab a reference to its data component
        umaDynamicAvatar.Initialize();
        umaData = umaDynamicAvatar.umaData;

        // Attach our generator
        umaDynamicAvatar.umaGenerator = generator;
        umaData.umaGenerator = generator;

        // Set up slot Array
        umaData.umaRecipe.slotDataList = new SlotData[numberOfSlots];

        // Set up our Morph references
        umaDna = new UMADnaHumanoid();
        umaTutorialDNA = new UMADnaTutorial();
        umaData.umaRecipe.AddDna(umaDna);
        umaData.umaRecipe.AddDna(umaTutorialDNA);

        if (name.Contains ("Female")) {
            CreateFemale ();
        } else {
            CreateMale ();

        }

        // Generate our UMA
        setupDna (umaDna);
        umaDynamicAvatar.UpdateNewRace();

        if (name.Contains("Human"))
        {
            if (name.Contains("Female"))
            {
                GO.name = createName("Female");
            }
            else
            {
              GO.name = createName("Male");
            }
        }

        return GO;
    }
    private void Update()
    {
        if (!_IsInitialized)
        {
            if (!UMACharacterCreator.IsGeneratingCharacter())
            {
                _CharacterDna = UMACharacterCreator.GetCharacterDna();
                _SkinToneValue = UMACharacterCreator.GetCharacterSkinTone();

                _IsInitialized = true;
            }
        }
        else
        {
            if (!_IsValueAssigned && !UMACharacterCreator.IsGeneratingCharacter())
            {
                _CharacterDna = UMACharacterCreator.GetCharacterDna();
                _SkinToneValue = UMACharacterCreator.GetCharacterSkinTone();

                _IsValueAssigned = true;
            }
        }
    }
    // Update is called once per frame
    private void Update()
    {
        if (!_IsInitialized)
        {
            if (!UMACharacterCreator.IsGeneratingCharacter())
            {
                _CharacterDna = UMACharacterCreator.GetCharacterDna();

                _IsInitialized = true;
            }
        }
    }
    private void GenerateUMAShapes()
    {
        UMADnaHumanoid umaDna = new UMADnaHumanoid();
        _CharacterData.umaRecipe.umaDna.Add(umaDna.GetType(),umaDna);

        if(_RandomDna)
        {
            umaDna.height = Random.Range(0.3f,0.5f);
            umaDna.headSize = Random.Range(0.485f,0.515f);
            umaDna.headWidth = Random.Range(0.4f,0.6f);

            umaDna.neckThickness = Random.Range(0.495f,0.51f);

            if (_CharacterData.umaRecipe.raceData.raceName == "HumanMale")
            {
                umaDna.handsSize = Random.Range(0.485f,0.515f);
                umaDna.feetSize = Random.Range(0.485f,0.515f);
                umaDna.legSeparation = Random.Range(0.4f,0.6f);
                umaDna.waist = 0.5f;
            }
            else
            {
                umaDna.handsSize = Random.Range(0.485f,0.515f);
                umaDna.feetSize = Random.Range(0.485f,0.515f);
                umaDna.legSeparation = Random.Range(0.485f,0.515f);
                umaDna.waist = Random.Range(0.3f,0.8f);
            }

            umaDna.armLength = Random.Range(0.485f,0.515f);
            umaDna.forearmLength = Random.Range(0.485f,0.515f);
            umaDna.armWidth = Random.Range(0.3f,0.8f);
            umaDna.forearmWidth = Random.Range(0.3f,0.8f);

            umaDna.upperMuscle = Random.Range(0.0f,1.0f);
            umaDna.upperWeight = Random.Range(-0.2f,0.2f) + umaDna.upperMuscle;
            if(umaDna.upperWeight > 1.0){ umaDna.upperWeight = 1.0f;}
            if(umaDna.upperWeight < 0.0){ umaDna.upperWeight = 0.0f;}

            umaDna.lowerMuscle = Random.Range(-0.2f,0.2f) + umaDna.upperMuscle;
            if(umaDna.lowerMuscle > 1.0){ umaDna.lowerMuscle = 1.0f;}
            if(umaDna.lowerMuscle < 0.0){ umaDna.lowerMuscle = 0.0f;}

            umaDna.lowerWeight = Random.Range(-0.1f,0.1f) + umaDna.upperWeight;
            if(umaDna.lowerWeight > 1.0){ umaDna.lowerWeight = 1.0f;}
            if(umaDna.lowerWeight < 0.0){ umaDna.lowerWeight = 0.0f;}

            umaDna.belly = umaDna.upperWeight;
            umaDna.legsSize = Random.Range(0.4f,0.6f);
            umaDna.gluteusSize = Random.Range(0.4f,0.6f);

            umaDna.earsSize = Random.Range(0.3f,0.8f);
            umaDna.earsPosition = Random.Range(0.3f,0.8f);
            umaDna.earsRotation = Random.Range(0.3f,0.8f);

            umaDna.noseSize = Random.Range(0.3f,0.8f);

            umaDna.noseCurve = Random.Range(0.3f,0.8f);
            umaDna.noseWidth = Random.Range(0.3f,0.8f);
            umaDna.noseInclination = Random.Range(0.3f,0.8f);
            umaDna.nosePosition = Random.Range(0.3f,0.8f);
            umaDna.nosePronounced = Random.Range(0.3f,0.8f);
            umaDna.noseFlatten = Random.Range(0.3f,0.8f);

            umaDna.chinSize = Random.Range(0.3f,0.8f);
            umaDna.chinPronounced = Random.Range(0.3f,0.8f);
            umaDna.chinPosition = Random.Range(0.3f,0.8f);

            umaDna.mandibleSize = Random.Range(0.45f,0.52f);
            umaDna.jawsSize = Random.Range(0.3f,0.8f);
            umaDna.jawsPosition = Random.Range(0.3f,0.8f);

            umaDna.cheekSize = Random.Range(0.3f,0.8f);
            umaDna.cheekPosition = Random.Range(0.3f,0.8f);
            umaDna.lowCheekPronounced = Random.Range(0.3f,0.8f);
            umaDna.lowCheekPosition = Random.Range(0.3f,0.8f);

            umaDna.foreheadSize = Random.Range(0.3f,0.8f);
            umaDna.foreheadPosition = Random.Range(0.15f,0.65f);

            umaDna.lipsSize = Random.Range(0.3f,0.8f);
            umaDna.mouthSize = Random.Range(0.3f,0.8f);
            umaDna.eyeRotation = Random.Range(0.3f,0.8f);
            umaDna.eyeSize = Random.Range(0.3f,0.8f);
            umaDna.breastSize = Random.Range(0.3f,0.8f);
        }
    }
Example #21
0
    void GenerateUMA()
    {
        // Create a new game object and add UMA components to it
        GameObject GO = new GameObject("MyUMA");
        // parent the new uma into the host game object
        GO.transform.parent = this.gameObject.transform;
        GO.transform.localPosition = Vector3.zero;
        GO.transform.localRotation = Quaternion.identity;

        GO.AddComponent(typeof(NavMeshAgent));
        GO.AddComponent(typeof(CapsuleCollider));
        var goCol = GO.GetComponent<CapsuleCollider>();
        goCol.center = new Vector3(0f, 0.78f, 0f);
        goCol.height = 1.7f;
        goCol.radius = 0.33f;
        umaDynamicAvatar = GO.AddComponent<UMADynamicAvatar>();

        // Initialise Avatar and grab a reference to it's data component
        umaDynamicAvatar.Initialize();
        umaData = umaDynamicAvatar.umaData;

        //practical guide to uma part 15 uma events https://youtu.be/_k-SZRCvgIk?t=8m20s
        umaData.OnCharacterCreated += CharacterCreatedCallback;

        // Attach our generator
        umaDynamicAvatar.umaGenerator = generator;
        umaData.umaGenerator = generator;

        // Set up slot Array
        umaData.umaRecipe.slotDataList = new SlotData[numberOfSlots];

        // Set up our Morph reference
        umaDna = new UMADnaHumanoid();
        umaTutorialDNA = new UMADnaTutorial();
        umaData.umaRecipe.AddDna(umaDna);
        umaData.umaRecipe.AddDna(umaTutorialDNA);

        // Grab a reference to our recipe
        // var umaRecipe = umaDynamicAvatar.umaData.umaRecipe; //moved to subroutine MakeMale

        // >>> This is whee the fun will happen according to Secret Anorak <<<<
        CreateMale();

        // dynamic animation controller
        umaDynamicAvatar.animationController = animController;

        // Generate Our UMA
        umaDynamicAvatar.UpdateNewRace();
    }