gm3 / boom-tools

This is a unity dev tool that can randomize layers, and output VRMs, and erc1155 metadata.
Creative Commons Zero v1.0 Universal
29 stars 8 forks source link

add zeroChange check, for "empty" trait chance #59

Closed gm3 closed 1 year ago

gm3 commented 1 year ago
string GetRandomValue(List<WeightedValue> weightedValueList, float zeroChance)
{
    string output = null;

    //Getting a random weight value
    var totalWeight = 0;
    foreach (var entry in weightedValueList)
    {
        // Check if the entry should have a weight of zero
        if (Random.Range(0, 100) < zeroChance)
        {
            entry.weight = 0;
        }
        totalWeight += entry.weight;
    }
    var rndWeightValue = Random.Range(1, totalWeight + 1);

    //Checking where random weight value falls
    var processedWeight = 0;
    foreach (var entry in weightedValueList)
    {
        processedWeight += entry.weight;
        if(rndWeightValue <= processedWeight)
        {
            output = entry.value;
            currentEntryValue = entry.value;
            break;
        }
    }

    return output;
}