private static void FormFromCircumference(TaleWorlds.MountAndBlade.CircularFormation circularFormation, float circumference, int countWithOverride, int maximumDepth, float distance, float interval, float unitDiameter) { float num1 = (float)(6.28318548202515 * (distance + (double)unitDiameter) / (interval + (double)unitDiameter)); int num2 = MBMath.Round(maximumDepth * (maximumDepth - 1) / 2 * num1); float minValue = Math.Max(0, Math.Min(MBMath.Round((countWithOverride + num2) / maximumDepth), countWithOverride)) * (interval + unitDiameter); float maxValue = Math.Max(0, countWithOverride - 1) * (interval + unitDiameter); circumference = MBMath.ClampFloat(circumference, minValue, maxValue); circularFormation.Width = circumference + unitDiameter; }
protected override IEnumerable <Vec2i> GetRestrainedUnitPositions() { CircularFormation circularFormation = this; for (int fileIndex = 0; fileIndex < circularFormation.FileCount; ++fileIndex) { // ISSUE: explicit non-virtual call for (int rankIndex = 0; rankIndex < __nonvirtual(circularFormation.RankCount); ++rankIndex) { if (circularFormation.IsUnitPositionRestrained(fileIndex, rankIndex)) { yield return(new Vec2i(fileIndex, rankIndex)); } } } }