private void DefineSlots(UMACrowdRandomSet.CrowdRaceData race) { Color skinColor; Color HairColor; Color Shine = Color.black; if (SkinColors != null) { OverlayColorData ocd = SkinColors.colors[Random.Range(0, SkinColors.colors.Length)]; skinColor = ocd.color; Shine = ocd.channelAdditiveMask[2]; } else { float skinTone = Random.Range(0.1f, 0.6f); skinColor = new Color(skinTone + Random.Range(0.35f, 0.4f), skinTone + Random.Range(0.25f, 0.4f), skinTone + Random.Range(0.35f, 0.4f), 1); } if (HairColors != null) { HairColor = HairColors.colors[Random.Range(0, HairColors.colors.Length)].color; } else { HairColor = new Color(Random.Range(0.1f, 0.9f), Random.Range(0.1f, 0.9f), Random.Range(0.1f, 0.9f), 1.0f); } var keywordsLookup = new HashSet <string>(keywords); UMACrowdRandomSet.Apply(umaData, race, skinColor, HairColor, Shine, keywordsLookup, GetSlotLibrary(), GetOverlayLibrary()); }
private void DefineSlots(UMACrowdRandomSet.CrowdRaceData race) { float skinTone = Random.Range(0.1f, 0.6f); Color skinColor = new Color(skinTone + Random.Range(0.35f, 0.4f), skinTone + Random.Range(0.25f, 0.4f), skinTone + Random.Range(0.35f, 0.4f), 1); Color HairColor = new Color(Random.Range(0.1f, 0.9f), Random.Range(0.1f, 0.9f), Random.Range(0.1f, 0.9f), Random.Range(0.1f, 0.5f)); var keywordsLookup = new HashSet <string>(keywords); UMACrowdRandomSet.Apply(umaData, race, skinColor, HairColor, keywordsLookup, slotLibrary, overlayLibrary); }
void GenerateOneUMA() { var newGO = new GameObject("Generated Character"); newGO.transform.parent = transform; var umaDynamicAvatar = newGO.AddComponent <UMADynamicAvatar>(); umaDynamicAvatar.Initialize(); umaData = umaDynamicAvatar.umaData; umaData.CharacterCreated = CharacterCreated; umaData.CharacterDestroyed = CharacterDestroyed; umaData.CharacterUpdated = CharacterUpdated; umaDynamicAvatar.umaGenerator = generator; umaData.umaGenerator = generator; var umaRecipe = umaDynamicAvatar.umaData.umaRecipe; UMACrowdRandomSet.CrowdRaceData race = null; if (randomPool != null && randomPool.Length > 0) { int randomResult = Random.Range(0, randomPool.Length); race = randomPool[randomResult].data; umaRecipe.SetRace(raceLibrary.GetRace(race.raceID)); } else { int randomResult = Random.Range(0, 2); if (randomResult == 0) { umaRecipe.SetRace(raceLibrary.GetRace("HumanMale")); } else { umaRecipe.SetRace(raceLibrary.GetRace("HumanFemale")); } } SetUMAData(); if (race != null && race.slotElements.Length > 0) { DefineSlots(race); } else { DefineSlots(); } GenerateUMAShapes(); if (animationController != null) { umaDynamicAvatar.animationController = animationController; } umaDynamicAvatar.UpdateNewRace(); umaDynamicAvatar.umaData.myRenderer.enabled = false; tempUMA = newGO.transform; if (zeroPoint) { tempUMA.position = new Vector3(zeroPoint.position.x, zeroPoint.position.y, zeroPoint.position.z); } else { tempUMA.position = new Vector3(0, 0, 0); } }
public void RandomizeAll() { if (generateUMA || generateLotsUMA) { Debug.LogWarning("Can't randomize while spawning."); return; } int childCount = gameObject.transform.childCount; for (int i = 0; i < childCount; i++) { Transform child = gameObject.transform.GetChild(i); UMADynamicAvatar umaDynamicAvatar = child.gameObject.GetComponent <UMADynamicAvatar>(); if (umaDynamicAvatar == null) { Debug.Log("Couldn't find dynamic avatar on child: " + child.gameObject.name); continue; } umaData = umaDynamicAvatar.umaData; var umaRecipe = umaDynamicAvatar.umaData.umaRecipe; UMACrowdRandomSet.CrowdRaceData race = null; if (randomPool != null && randomPool.Length > 0) { int randomResult = Random.Range(0, randomPool.Length); race = randomPool[randomResult].data; umaRecipe.SetRace(GetRaceLibrary().GetRace(race.raceID)); } else { if (Random.value < 0.5f) { umaRecipe.SetRace(GetRaceLibrary().GetRace("HumanMale")); } else { umaRecipe.SetRace(GetRaceLibrary().GetRace("HumanFemale")); } } // SetUMAData(); if (race != null && race.slotElements.Length > 0) { DefineSlots(race); } else { DefineSlots(); } AddAdditionalSlots(); GenerateUMAShapes(); if (animationController != null) { umaDynamicAvatar.animationController = animationController; } umaDynamicAvatar.Show(); } }
public GameObject GenerateOneUMA(int sex) { Vector3 zeroPos = Vector3.zero; if (zeroPoint != null) { zeroPos = zeroPoint.position; } Vector3 newPos = zeroPos + new Vector3((spawnX - umaCrowdSize.x / 2f + 0.5f) * space, 0f, (spawnY - umaCrowdSize.y / 2f + 0.5f) * space); if (spawnY < umaCrowdSize.y) { spawnX++; if (spawnX >= umaCrowdSize.x) { spawnX = 0; spawnY++; } } else { if (hideWhileGeneratingLots) { UMAData[] generatedCrowd = GetComponentsInChildren <UMAData>(); foreach (UMAData generatedData in generatedCrowd) { if (generatedData.animator != null) { generatedData.animator.enabled = true; } if (generatedData.myRenderer != null) { generatedData.myRenderer.enabled = true; } } } generateLotsUMA = false; spawnX = 0; spawnY = 0; return(null); } GameObject newGO = new GameObject("Generated Character"); newGO.transform.parent = transform; newGO.transform.position = newPos; newGO.transform.rotation = zeroPoint != null ? zeroPoint.rotation : transform.rotation; UMADynamicAvatar umaDynamicAvatar = newGO.AddComponent <UMADynamicAvatar>(); umaDynamicAvatar.Initialize(); umaData = umaDynamicAvatar.umaData; umaData.CharacterCreated = new UMADataEvent(CharacterCreated); umaData.CharacterDestroyed = new UMADataEvent(CharacterDestroyed); umaData.CharacterUpdated = new UMADataEvent(CharacterUpdated); umaDynamicAvatar.umaGenerator = generator; umaData.umaGenerator = generator; var umaRecipe = umaDynamicAvatar.umaData.umaRecipe; UMACrowdRandomSet.CrowdRaceData race = null; if (randomPool != null && randomPool.Length > 0) { int randomResult = Random.Range(0, randomPool.Length); race = randomPool[randomResult].data; umaRecipe.SetRace(GetRaceLibrary().GetRace(race.raceID)); } else { if (sex == 0) { umaRecipe.SetRace(GetRaceLibrary().GetRace("HumanMale")); } else { umaRecipe.SetRace(GetRaceLibrary().GetRace("HumanFemale")); } } SetUMAData(); if (race != null && race.slotElements.Length > 0) { DefineSlots(race); } else { DefineSlots(); } AddAdditionalSlots(); GenerateUMAShapes(); if (animationController != null) { umaDynamicAvatar.animationController = animationController; } umaDynamicAvatar.Show(); return(newGO); }
public GameObject GenerateUMA(int sex, Vector3 position) { GameObject newGO = new GameObject("Generated Character"); newGO.transform.parent = transform; newGO.transform.position = position; newGO.transform.rotation = zeroPoint != null ? zeroPoint.rotation : transform.rotation; UMADynamicAvatar umaDynamicAvatar = newGO.AddComponent <UMADynamicAvatar>(); umaDynamicAvatar.Initialize(); umaData = umaDynamicAvatar.umaData; umaData.CharacterCreated = new UMADataEvent(CharacterCreated); umaData.CharacterDestroyed = new UMADataEvent(CharacterDestroyed); umaData.CharacterUpdated = new UMADataEvent(CharacterUpdated); umaDynamicAvatar.umaGenerator = generator; umaData.umaGenerator = generator; var umaRecipe = umaDynamicAvatar.umaData.umaRecipe; UMACrowdRandomSet.CrowdRaceData race = null; if (randomPool != null && randomPool.Length > 0) { int randomResult = Random.Range(0, randomPool.Length); race = randomPool[randomResult].data; umaRecipe.SetRace(GetRaceLibrary().GetRace(race.raceID)); } else { if (sex == 0) { umaRecipe.SetRace(GetRaceLibrary().GetRace("HumanMale")); } else { umaRecipe.SetRace(GetRaceLibrary().GetRace("HumanFemale")); } } SetUMAData(); if (race != null && race.slotElements.Length > 0) { DefineSlots(race); } else { DefineSlots(); } AddAdditionalSlots(); GenerateUMAShapes(); if (animationController != null) { umaDynamicAvatar.animationController = animationController; } umaDynamicAvatar.Show(); return(newGO); }