public int GetValue() { if (!ChildNodes.Any()) { return(Metadata.DefaultIfEmpty().Sum()); } else { return((from m in Metadata where m > 0 let i = m - 1 where i < ChildNodes.Count let n = ChildNodes.ElementAt(i) select n.GetValue()) .DefaultIfEmpty() .Sum()); } }
public Node NextNode() { return(ChildNodes.ElementAt(Random.Range(0, ChildNodes.Length - 1))); }