private void OnProbUpdate() { if (Event.current.type == EventType.Repaint) { Loot.Rarity[] probTypes = Enum.GetValues(typeof(Loot.Rarity)) as Loot.Rarity[]; if (probabilities.Count != probTypes.Length) { GenerateProbabilities(probTypes); } } //sum all elements float sum = 0; int probCount = probabilities.Count; int i = 0; for (i = 0; i < probCount; i++) { sum += probabilities[i].probability; } ProbabilityDef def = null; //divide elements by sum for (i = 0; i < probCount; i++) { def = probabilities[i]; def.probability = def.probability / sum; } }
private void GenerateProbabilities(Loot.Rarity[] probTypes) { probabilities = new List <ProbabilityDef>(); int index = 0; foreach (Loot.Rarity type in probTypes) { float prob = index == 0 ? 1 : 0; ProbabilityDef def = new ProbabilityDef(type, prob); probabilities.Add(def); index++; } }