private static Vec2 GetGlobalOrganicDirectionAux(
            ColumnFormation columnFormation,
            int depthCount = -1)
        {
            IEnumerable <Agent> unitsAtVanguardFile = columnFormation.GetUnitsAtVanguardFile <Agent>();
            Vec2  zero   = Vec2.Zero;
            int   num    = 0;
            Agent agent1 = (Agent)null;

            foreach (Agent agent2 in unitsAtVanguardFile)
            {
                if (agent1 != null)
                {
                    Vec2 vec2 = (agent1.Position - agent2.Position).AsVec2.Normalized();
                    zero += vec2;
                    ++num;
                }
                agent1 = agent2;
                if (depthCount > 0)
                {
                    if (num >= depthCount)
                    {
                        break;
                    }
                }
            }
            return(num == 0 ? Vec2.Invalid : zero *(1f / (float)num));
        }
 public static Vec2 GetGlobalHeadDirection(this ColumnFormation columnFormation) => MBExtensions.GetGlobalOrganicDirectionAux(columnFormation, 3);