コード例 #1
0
ファイル: UMACrowd.cs プロジェクト: grendelbiter/UMA
    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());
    }
コード例 #2
0
ファイル: UMACrowd.cs プロジェクト: hafewa/UMA-1
    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);
    }
コード例 #3
0
ファイル: UMACrowd.cs プロジェクト: hafewa/UMA-1
    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);
        }
    }
コード例 #4
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();
        }
    }
コード例 #5
0
    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);
    }
コード例 #6
0
ファイル: UMACrowd.cs プロジェクト: grendelbiter/UMA
    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);
    }