StateLink GetRandomLink() { float totalWeight = GetTotalWeight(); if (totalWeight == 0.0f) { return(null); } float r = Random.Range(0, totalWeight); totalWeight = 0.0f; int index = 0; int linkCount = _Links.Count; for (int linkIndex = 0; linkIndex < linkCount; linkIndex++) { LinkWeight link = _Links[linkIndex]; if (totalWeight <= r && r < totalWeight + link.weight) { index = linkIndex; break; } totalWeight += link.weight; } return(_Links[index].link); }
public float GetTotalWeight() { if (_Links.Count == 0) { return(0); } float totalWeight = 0.0f; int linkCount = _Links.Count; for (int linkIndex = 0; linkIndex < linkCount; linkIndex++) { LinkWeight link = _Links[linkIndex]; totalWeight += link.weight; } return(totalWeight); }